04Hadoop功能完善

配置历史服务器

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

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

百度网盘资料包

链接:https://pan.baidu.com/s/1fa7sHVFdeS6bzzNeEfmnqQ
提取码:0xgs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值