文章目录

  • ​​一、流程分析​​
  • ​​二、虚拟机准备​​
  • ​​三、拷贝 JDK、Hadoop 目录:scp 命令​​
  • ​​四、分发环境变量配置:编写集群分发脚本 xsync​​
  • ​​五、SSH 免密登录​​
  • ​​六、集群配置​​
  • ​​七、群起测试​​
  • ​​八、配置历史服务器​​
  • ​​九、配置日志聚集功能​​
  • ​​十、编写常用脚本​​
  • ​​十一、知识点:常用端口号、配置文件​​
  • ​​十二、集群时间同步​​

一、流程分析

(1)配置一台客户机,如主机名为 hadoop102(关闭防火墙,配置IP),创建目录 /opt/software、/opt/module,并修改这两个目录的属主和属组都为当前用户,如用户 zlc;

(2)再拷贝出两台客户机,如主机名为 hadoop103,hadoop104;

(3)只在 hadoop102 客户机上:安装 JDK、Hadoop,安装包路径为 /opt/software,解压路径为 /opt/module,并配置二者的环境变量;

(4)将 hadoop102 上的 JDK、Hadoop 目录及配置拷贝到另外两台客户机 hadoop103、hadoop104 上

(5)配置集群

(6)单点启动

(7)配置 ssh

(8)群起并测试集群

二、虚拟机准备

1、配置一台客户机,如主机名为 hadoop102(关闭防火墙,配置IP),创建目录 /opt/software、/opt/module

2、再拷贝出两台客户机,如主机名为 hadoop103,hadoop104;

3、只在 hadoop102 客户机上:安装 JDK、Hadoop,安装包路径为 /opt/software,解压路径为 /opt/module,并配置二者的环境变量;

三、拷贝 JDK、Hadoop 目录:scp 命令

1、因为在 hadoop102 上,已经安装好了 JDK、Hadoop,因此,hadoop103、hadoop104 不必再安装一遍了,可以直接使用 scp 命令,将 hadoop102 上的 JDK、Hadoop 目录及配置拷贝到另外两台客户机上。

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_02


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_03

2、需要用到 scp 安全拷贝命令,该命令可以实现服务器与服务器之间的数据拷贝,基本语法:scp -r 要拷贝的文件路径/名称 目的地用户@主机:目的路径/名称,例如

# 拷贝 hadoop102 的 jdk 到 hadoop103
scp -r /opt/module/jdk1.8.0_212 zlc@hadoop103:/opt/module
# 拷贝 hadoop102 的 hadoop 到 hadoop103
scp -r hadoop-3.1.3/ zlc@hadoop103:/opt/module/

(注:scp 不仅支持从源机器到目的机器的推送式拷贝,也支持从目的机器到源机器的拉取式拷贝,即可以在hadoop102中,将文件拷贝给hadoop103,也可以在hadoop103上拉取hadoop102的文件。另外,也可以在 hadoop103上,将hadoop102的文件拷贝到 hadoop104)

3、下图为在 hadoop102 中,将 JDK 拷贝给 hadoop103:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_04


同理在 hadoop102 中,将 Hadoop 拷贝给 hadoop103。4、在 hadoop103上,将hadoop102的文件拷贝到 hadoop104:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_05


扩展补充

远程同步工具:rsync 命令

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

语法:rsync -av 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

例如:

# 删除hadoop103中/opt/module/hadoop-3.1.3/wcinput
rm -rf wcinput/

# 同步hadoop102中的/opt/module/hadoop-3.1.3到hadoop103
rsync -av hadoop-3.1.3/ zlc@hadoop103:/opt/module/hadoop-3.1.3/

四、分发环境变量配置:编写集群分发脚本 xsync

1、编写 xsync 脚本:用于集群分发脚本,循环复制文件到所有节点的相同目录下,

期望脚本在任何路径都能使用,因此脚本要放在声明了全局环境变量的路径下:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_06

因此,可在 /home/zlc/bin 路径下创建脚本 xsync

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_07


内容如下(学习自尚硅谷的 Hadoop 教程):

#!/bin/bash

#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi

#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送

for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)

#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done

但目前并没有可执行权限,可使用命令:chmod 777 xsync,赋予其 execute 权限

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_08


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_09


2、利用 xsync 脚本 将 /home/zlc/bin 下的 xsync 脚本,也就是它自己,同步到另外的两台客户机上(hadoop103、hadoop104)

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_10

hadoop103 上:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_11


hadoop104 上:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_12

3、将自定义的环境变量配置文件同步到另外两台客户机的相同目录下(此处需要用管理员权限才能进行配置文件目录的写入):

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_13

4、在另外两台客户机上(即hadoop103、hadoop104)进行配置文件目录的更新,并进行检验:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_14


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_15

五、SSH 免密登录

1、先用 hadoop102 ssh 访问 hadoop 103

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_16


这样,在 hadoop102 的 ~ 目录下就会有一个 .ssh 隐藏目录,

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_17


同样,在 hadoop103 的 ~ 目录下也会有一个 .ssh 隐藏目录,

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_18


2、进入 hadoop102 的 .ssh 目录下,执行

ssh-keygen -t rsa

生成 hadoop102 客户机的公钥和私钥

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_19

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_20


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_21

3、将 hadoop102 的公钥发给 hadoop103 、 hadoop104(也可配置自己免密访问自己)

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_22


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_23


被免密连接的一方将会生成 authorized_keys 认证文件,因此此处是配置 hadoop102 免密访问自己,因此,也是在本机下生成 authorized_keys 认证文件

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_24


4、同理,我们在 hadoop103、hadoop104 上也重复上述配置5、进行分发测试,在 hadoop102 客户机上分发文件到 hadoop103、hadoop104

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_25

六、集群配置

1、集群配置规划:NameNode 和 SecondaryNameNode 不要安装在同一台服务器

ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上。例如,我的集群配置规划为:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_26

2、配置文件说明:Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

  • 默认配置文件:
  • 【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_27

  • 自定义配置文件:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。

3、配置集群:

核心配置文件 core-site.xml

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_28

各文件自定义内容如下:

核心配置文件 core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>

<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>

<!-- 配置HDFS网页登录使用的静态用户为atguigu -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>atguigu</value>
</property>
</configuration>

HDFS 配置文件 hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
</configuration>

YARN 配置文件 yarn-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<!-- 指定MR走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>

<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>

MapReduce配置文件 mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

4、在集群上分发配置好的Hadoop配置文件:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_29


5、去 hadoop103 和 hadoop104 上查看文件分发情况:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_30

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_31

七、群起测试

1、配置 workers (注意,不要有多余的空格或空行)

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_32


2、分发此文件到集群的所有结点

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_33


3、启动集群:(1)如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_34


初始化完成后,会在 hadoop 目录下生成 data、logs 目录

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_35


(2)启动 HDFS在 hadoop102 中:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_36


在 hadoop103 中:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_37


在 hadoop104 中:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_38


对比一下上面的集群配置规划表,HDFS 一行是正确的:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_39


也可以在网页图形化界面中进行 hadoop 可视化管理:​​http://hadoop102:9870​

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_40


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_41


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_42

(3)在配置了 ResourceManager 的节点(hadoop103)启动 YARN

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_43

在 hadoop102 中:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_44

在 hadoop103 中:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_45

在 hadoop104 中:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_46

对比一下上面的集群配置规划表,两行都是正确的:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_47

也可以在网页图形化界面中进行 YARN 可视化管理:

​​http://hadoop103:8088​

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_48


4、集群基本测试

(1)创建目录

在 hadoop104 中创建目录

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_49

在 hadoop102 中的 hdfs 的图形化管理页面查看

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_50


(2)上传客户机的本地文件到 hdfs 中

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_51


可在可视化页面中看到

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_52


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_53

(3)上传客户机的本地大文件到 hdfs 中

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_54


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_55

(4)查看 HDFS 文件存储路径

上传文件后查看文件存放在什么位置

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_56

(5)查看 HDFS 文件的备份情况

在 hadoop102 中:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_57


在 hadoop103 中:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_58


在 hadoop104 中:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_59

(6)下载 HDFS 文件:例如 JDK

方法一:可直接在物理文件中读出来

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_60


解压 JDK 压缩包

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_61


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_62


方法二:也可以利用命令 hadoop fs -get 源 目的

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_63

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_64

(7)执行程序

执行 mapreduce 的一个用于计数单词的例子(注意最后两个参数表示的源路径与目的路径,是基于 hdfs 中的路径

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_65


任务在执行过程中,可以在 yarn 的图形化页面中看到:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_66

上述命令的执行图解:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_67


已将统计的结果输出到了 wcoutput 目录的数据文件中

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_68

八、配置历史服务器

历史服务器:用于记录程序的历史运行情况

1、添加历史服务器配置

首先在 hadoop102 中:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_69


增加如下配置内容

<!-- 历史服务器端地址 -->
<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、分发配置给集群的其他客户机

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_70


3、重启 hdfs、yarn在 hadoop102 中启动 hdfs:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_71


在 hadoop103 中启动 yarn:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_72


4、在 hadoop102 中启动历史服务器

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_73

5、测试,并查看JobHistory

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_74


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_75


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_76

九、配置日志聚集功能

日志聚集功能:所有客户机服务器程序运行日志信息上传到 HDFS 上,从而方便查看程序运行详情,方面进行调试与监控。

(注意:开启日志聚集功能,需要重新启动 yarn 和历史服务器 historyserver,另外,只有在配置并开启了日志聚集功能之后,执行的任务才会有此功能的记录,之前的任务是没有的)

(声明:下图截图自尚硅谷的Hadoop教程)

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_77

1、添加日志聚集功能的配置

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_78


添加如下内容:

<!-- 开启日志聚集功能 -->
<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、分发配置

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_79


3、重新启动 yarn 和历史服务器 historyserver在 hadoop102 中,停止历史服务器 historyserver

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_80

在 hadoop103 中,停止 yarn

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_81


在 hadoop103 中,启动 yarn

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_82

在 hadoop102 中,启动历史服务器 historyserver

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_83

4、执行任务,并检测日志聚集功能

在 hadoop102 中执行 mapreduce 任务

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_84


进入 yarn 的 web 页面,并进入历史服务器日志

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_85


进入 logs 日志

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_86


以下就是日志聚集功能对此次任务记录的具体内容

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_87

十、编写常用脚本

1、编写集群的启停脚本:myhadoop.sh,用于封装启动与停止集群的繁琐命令

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_88


myhadoop.sh 内容如下:

(此脚本学习自尚硅谷教程)

#!/bin/bash

if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi

case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="

echo " --------------- 启动 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop103 "/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 hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac

赋予此脚本权限

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_89


测试脚本

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_90

2、编写集群的进程情况查看脚本:jps 命令

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_91


jpsall 内容如下:

(此脚本学习自尚硅谷教程)

#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
echo =============== $host ===============
ssh $host jps
done

赋予权限

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_92


脚本测试

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_93


3、将上述两个脚本分发给集群所有客户机

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_94

十一、知识点:常用端口号、配置文件

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_95

十二、集群时间同步

如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;

如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务时间不同步。

1、先查看时间同步服务的状态,发现是 inactive (dead),因此需要启动

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_96


2、启动 ntpd 服务

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_97


3、再次查看状态,是在运行的,启动成功

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_98


4、设置开机自启动

今后我们不希望每次都要手动启动,因此设置开机自动启动

先用如下命令查看,确实默认不是开机自动启动的

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_99


因此,为了持久化这个自启动功能,我们需要去配置文件中进行修改(1)在 ntp.conf 中:

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_100

  • 去掉注释:
  • 【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_101

  • 加上注释:
  • 【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_102

  • 添加如下内容,当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步
  • 【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_xml_103

  • 保存退出

(2)在 ntpd 中

修改hadoop102的/etc/sysconfig/ntpd 文件

  • 增加如下内容,让硬件时间与系统时间一起同步
  • 保存退出

(3)重新启动ntpd服务

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_104


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

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_105


5、其他机器的配置(必须 root 用户)

配置完了时间服务器所在机器,还要配置另外的其他机器,让另外那些机器的时间同步于前者。

因为其他客户机可能会正在与外网进行时间同步,而当我们再让他们与时间服务器所在机器的时间同步,那么就会冲突,因为一个集群里的机器只能是与外网同步或是只能与内网同步,因此,我们需要关闭其他机器与外网的时间同步。

1、在 hadoop103、hadoo104 中,关闭 ntpd 服务

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hdfs_106


【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_ssh_107


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

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_108


编写定时任务如下:

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

3、修改任意机器时间

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_big data_109


1 分钟后,与 hadoop102 中时间同步

【Hadoop 3】图文详解:搭建Hadoop完全分布式运行模式_hadoop_110