1、文件分发脚本

修改每个虚拟机的hostname:
vi /etc/hostname
修改hosts文件:
vi /etc/hosts
注意IP和对应的hostname
192.168.119.128 centos7-1
192.168.119.129 centos7-2
192.168.119.130 centos7-3

1.1 scp

发送文件到其他虚拟机:
scp -r hadoop/ root@centos7-2:/opt/module/
从其他虚拟机拉去文件:
scp -r root@centos7-1:/opt/module/hadoop ./

1.2 rsync

安装:yum install rsync -y
image.png

1.3 文件同步脚本

cd /usr/local/bin
vi xsync

  1. #!/bin/bash
  2. #1. 判断参数个数
  3. if [ $# -lt 1 ]
  4. then
  5. echo Not Enough Arguement!
  6. exit;
  7. fi
  8. #2. 遍历集群所有机器
  9. for host in centos7-1 centos7-2 centos7-3
  10. do
  11. echo ==================== $host ====================
  12. #3. 遍历所有目录,挨个发送
  13. for file in $@
  14. do
  15. #4. 判断文件是否存在
  16. if [ -e $file ]
  17. then
  18. #5. 获取父目录
  19. pdir=$(cd -P $(dirname $file); pwd)
  20. #6. 获取当前文件的名称
  21. fname=$(basename $file)
  22. ssh $host mkdir -p $pdir
  23. rsync -av $pdir/$fname $host:$pdir
  24. else
  25. echo $file does not exists!
  26. fi
  27. done
  28. done

修改文件权限:
chmod 777 xsync

1.4 ssh登录免密码

生成私钥和公钥,注意切换成非root用户
ssh-keygen -t rsa
image.png
image.png
ssh-copy-id centos7-2
输入密码之后,再使用ssh连接centos7-2就不用输入密码了
image.png
完成上述配置之后,使用xsync分发脚本就不用再输入密码,上述步骤需要在每个虚拟机上都执行一次,方便互相之间分发文件。

2、集群搭建

2.1 相关配置

下载、解压hadoop到/opt/module目录下
image.png
102 103 104 对应7-1 7-2 7-3
image.png
修改/opt/module/hadoop/etc/hadoop目录下的配置文件:
core-site.xml

  1. <configuration>
  2. <!-- nameNode的地址 -->
  3. <property>
  4. <name>fs.defaultFS</name>
  5. <value>hdfs://centos7-1:8020</value>
  6. </property>
  7. <!-- 指定hadoop数据的存储目录 -->
  8. <property>
  9. <name>hadoop.tmp.dir</name>
  10. <value>/opt/module/hadoop/data</value>
  11. </property>
  12. <!-- 配置HDFS网页登陆使用的静态用户 -->
  13. <property>
  14. <name>hadoop.http.staticuser.user</name>
  15. <value>root</value>
  16. </property>
  17. </configuration>

hdfs-site.xml

  1. <configuration>
  2. <!-- nnweb端访问地址 -->
  3. <property>
  4. <name>dfs.namenode.http-address</name>
  5. <value>centos7-1:9870</value>
  6. </property>
  7. <!-- 2nnweb端访问地址 -->
  8. <property>
  9. <name>dfs.namenode.secondary.http-address</name>
  10. <value>centos7-3:9868</value>
  11. </property>
  12. </configuration>

yarn-site.xml

  1. <configuration>
  2. <!-- shuffle -->
  3. <property>
  4. <name>yarn.nodemanager.aux-services</name>
  5. <value>mapreduce_shuffle</value>
  6. </property>
  7. <!-- 指定resourceManager的地址 -->
  8. <property>
  9. <name>yarn.resourcemanager.hostname</name>
  10. <value>centos7-2</value>
  11. </property>
  12. <!-- 环境变量的继承 -->
  13. <property>
  14. <name>yarn.nodemanager.env-whitelist</name>
  15. <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
  16. </property>
  17. </configuration>

mapred-site.xml

  1. <configuration>
  2. <!-- 指定 MapReduce 程序运行在 Yarn 上 -->
  3. <property>
  4. <name>mapreduce.framework.name</name>
  5. <value>yarn</value>
  6. </property>
  7. </configuration>

配置java环境:
vim hadoop-env.sh
添加:
export JAVA_HOME=jdk路径
修改works:
vim works
centos7-1
centos7-2
centos7-3
修改slaves(3.0以上版本是works)
image.png
配置完成之后,使用xsync将hadoop目录分发到其他机器上

2.2 集群启动

在7-1上格式化:
hdfs namenode -format
在7-1的hadoop目录启动hdfs
启动:sbin/start-dfs.sh
停止:sbin/stop-dfs.sh
image.png
image.png
image.png
注意对应关系:
image.png
浏览器访问:http://192.168.146.128:9870
image.png
在这里可以查看文件:
image.png
在7-2上启动yarn
启动:sbin/start-yarn.sh
停止:sbin/stop-yarn.sh
image.png
image.png
浏览器访问:http://192.168.146.129:8088
image.png
配置历史服务器
修改centos7-1的mapred-site.xml ,并分发到其他机器

  1. <!-- 历史服务器端地址 -->
  2. <property>
  3. <name>mapreduce.jobhistory.address</name>
  4. <value>hadoop102:10020</value>
  5. </property>
  6. <!-- 历史服务器 web 端地址 -->
  7. <property>
  8. <name>mapreduce.jobhistory.webapp.address</name>
  9. <value>centos7-1:19888</value>
  10. </property>

启动历史服务器:
mapred —daemon start historyserver
停止历史服务器:
mapred —daemon stop historyserver
浏览器访问:http://192.168.146.128:19888/jobhistory
image.png

配置日志的聚集
应用运行完成以后,将程序运行日志信息上传到 HDFS 系统上,开启日志聚集功能, 需要重新启动NodeManager 、 ResourceManager 和HistoryServer。
配置 yarn-site.xml

  1. <!-- 开启日志聚集功能 -->
  2. <property>
  3. <name>yarn.log-aggregation-enable</name>
  4. <value>true</value>
  5. </property>
  6. <!-- 设置日志聚集服务器地址 -->
  7. <property>
  8. <name>yarn.log.server.url</name>
  9. <value>http://centos7-1:19888/jobhistory/logs</value>
  10. </property>
  11. <!-- 设置日志保留时间为 7 天 -->
  12. <property>
  13. <name>yarn.log-aggregation.retain-seconds</name>
  14. <value>604800</value>
  15. </property>

分别启动/停止 HDFS 组件:
hdfs —daemon start/stop namenode/datanode/secondarynamenode
启动/停止 YARN:
yarn —daemon start/stop resourcemanager/nodemanager
在/usr/local/bin下创建集群启动脚本:myhadoops
vim myhadoops

  1. #!/bin/bash
  2. if [ $# -lt 1 ]
  3. then
  4. echo "No Args Input..."
  5. exit ;
  6. fi
  7. case $1 in
  8. "start")
  9. echo " =================== 启动 hadoop 集群 ==================="
  10. echo " --------------- 启动 hdfs ---------------"
  11. ssh centos7-1 "/opt/module/hadoop/sbin/start-dfs.sh"
  12. echo " --------------- 启动 yarn ---------------"
  13. ssh centos7-2 "/opt/module/hadoop/sbin/start-yarn.sh"
  14. echo " --------------- 启动 historyserver ---------------"
  15. ssh centos7-1 "/opt/module/hadoop/bin/mapred --daemon start historyserver"
  16. ;;
  17. "stop")
  18. echo " =================== 关闭 hadoop 集群 ==================="
  19. echo " --------------- 关闭 historyserver ---------------"
  20. ssh centos7-1 "/opt/module/hadoop/bin/mapred --daemon stop historyserver"
  21. echo " --------------- 关闭 yarn ---------------"
  22. ssh centos7-2 "/opt/module/hadoop/sbin/stop-yarn.sh"
  23. echo " --------------- 关闭 hdfs ---------------"
  24. ssh centos7-1 "/opt/module/hadoop/sbin/stop-dfs.sh"
  25. ;;
  26. *)
  27. echo "Input Args Error..."
  28. ;;
  29. esac

chmod 777 myhadoops
编写查看java进程脚本:

  1. #!/bin/bash
  2. for host in centos7-1 centos7-2 centos7-3
  3. do
  4. echo =============== $host ===============
  5. ssh $host /usr/local/java/jdk1.8.0_212/bin/jps
  6. done