配置历史服务器
为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:
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 系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能, 需要重新启动 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) 查看日志
集群启动/停止方式总结
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/
常用端口号说明
集群时间同步
如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期
和公网时间进行校准;
如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,
导致集群执行任务时间不同步。
1)需求
找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步, 生产环境
根据任务对时间的准确程度要求周期同步。 测试环境为了尽快看到效果,采用 1 分钟同步一
次。
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
百度网盘资料包
链接:https://pan.baidu.com/s/1fa7sHVFdeS6bzzNeEfmnqQ
提取码:0xgs