04Hadoop功能完善

142 阅读4分钟

Hadoop功能完善

配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

1) 配置 mapred-site.xml

 vim mapred-site.xml

在该文件里面增加如下配置。

 <!-- 因为yarn安装在Hadoop102机器 -->
 <!-- 历史服务器端地址 -->
 <property>
 <name>mapreduce.jobhistory.address</name>
 <value>hadoop102:10020</value>
 </property>
 <!-- 历史服务器 web 端地址 -->
 <property>
 <name>mapreduce.jobhistory.webapp.address</name>
 <value>hadoop102:19888</value>
 </property>

2) 分发配置

 xsync /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml

3) 在 hadoop102 启动历史服务器

 /opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver

4) 查看历史服务器是否启动

 jps

5) 查看 JobHistory

http://hadoop102:19888/jobhistory

配置日志的聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到 HDFS 系统上。

image-20211227221424706

日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。 注意:开启日志聚集功能, 需要重新启动 NodeManager 、 ResourceManager 和 HistoryServer。

1) 配置 yarn-site.xml

 vim yarn-site.xml 

在该文件里面增加如下配置。

 <!-- 开启日志聚集功能 -->
 <property>
 <name>yarn.log-aggregation-enable</name>
 <value>true</value>
 </property>
 <!-- 设置日志聚集服务器地址 -->
 <property>
 <name>yarn.log.server.url</name>
 <value>http://hadoop102:19888/jobhistory/logs</value>
 </property>
 <!-- 设置日志保留时间为 7 天 -->
 <property>
 <name>yarn.log-aggregation.retain-seconds</name>
 <value>604800</value>
 </property>

2) 分发配置

 xsync /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml

3) 关闭 NodeManager 、 ResourceManager 和 HistoryServer

 mapred --daemon stop historyserver
 sbin/stop-yarn.sh

4) 启动 NodeManager 、 ResourceManage 和 HistoryServer

 sbin/tart-yarn.sh
 mapred --daemon start historyserver

5) 执行 WordCount 程序

 hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /1.txt /out2

6) 查看日志

image-20211227230512840

image-20211227230524860

集群启动/停止方式总结

1) 各个模块分开启动/停止(配置 ssh 是前提) 常用

(1)整体启动/停止 HDFS

 start-dfs.sh/stop-dfs.sh  

(2)整体启动/停止 YARN

 start-yarn.sh/stop-yarn.sh

2) 各个服务组件逐一启动/停止

(1)分别启动/停止 HDFS 组件

 hdfs --daemon start/stop namenode/datanode/secondarynamenode

(2)启动/停止 YARN

 yarn --daemon start/stop resourcemanager/nodemanager

编写 Hadoop 集群常用脚本

1) Hadoop 集群启停脚本(包含 HDFS, Yarn, Historyserver): myhadoop

 cd /bin
 vim myhadoop

输入:

 #!/bin/bash
 if [ $# -lt 1 ]
 then
 echo "No Args Input..."
 exit ;
 fi
 case $1 in
 "start")
 echo " =================== 启动 hadoop 集群 ==================="
 echo " --------------- 启动 hdfs ---------------"
 ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
 echo " --------------- 启动 yarn ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
 echo " --------------- 启动 historyserver ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start
 historyserver"
 ;;
 "stop")
 echo " =================== 关闭 hadoop 集群 ==================="
 echo " --------------- 关闭 historyserver ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop
 historyserver"
 echo " --------------- 关闭 yarn ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
 echo " --------------- 关闭 hdfs ---------------"
 ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
 ;;
 *)
 echo "Input Args Error..."
 ;;
 esac

加权脚本:

 chmod +x myhadoop

2)查看三台服务器 Java 进程脚本: jpsall

 cd /bin
 vim jpsall

输入:

 #!/bin/bash
 for host in hadoop101 hadoop102 hadoop103
 do
 echo =============== $host ===============
 ssh $host jps
 done

加权脚本:

 chmod +x jpsall

3)分发/bin 目录,保证自定义脚本在三台机器上都可以使用

 xsync /bin/  

常用端口号说明

image-20211227231520925

集群时间同步

如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期 和公网时间进行校准; ​ 如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差, 导致集群执行任务时间不同步。

1)需求

找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步, 生产环境 根据任务对时间的准确程度要求周期同步。 测试环境为了尽快看到效果,采用 1 分钟同步一 次。

image-20211227231710477

2) 时间服务器配置(必须 root 用户)

(1) 查看所有节点 ntpd 服务状态和开机自启动状态

 sudo systemctl status ntpd
 sudo systemctl start ntpd
 sudo systemctl is-enabled ntpd

(2)修改 hadoop101 的 ntp.conf 配置文件

 sudo vim /etc/ntp.conf  

(a) 修改 1(授权 192.168.88.0-192.168.88.255 网段上的所有机器可以从这台机器上查 询和同步时间)

restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap

(b) 修改 2(集群在局域网中,不使用其他互联网上的时间) 注释掉

#server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst

(c) 添加 3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中 的其他节点提供时间同步)

(3)修改 hadoop102 的/etc/sysconfig/ntpd 文件

 sudo vim /etc/sysconfig/ntpd

增加内容如下(让硬件时间与系统时间一起同步)

SYNC_HWCLOCK=yes

(4)重新启动 ntpd 服务 、设置 ntpd 服务开机启动

 sudo systemctl start ntpd
 sudo systemctl enable ntpd

3) 其他机器配置(必须 root 用户)

(1) 关闭所有节点上 ntp 服务和自启动

 sudo systemctl stop ntpd
 sudo systemctl disable ntpd

(2)在其他机器配置 1 分钟与时间服务器同步一次

 sudo crontab -e

编写定时任务如下:

*/1 * * * * /usr/sbin/ntpdate hadoop102

(3)修改任意机器时间

 sudo date -s "2021-9-11 11:11:11"

(4) 1 分钟后查看机器是否与时间服务器同步

 sudo date

百度网盘资料包

链接:pan.baidu.com/s/1fa7sHVFd… 提取码:0xgs

\