ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

02-Hadoop集群搭建

2021-09-21 14:59:29  阅读:122  来源: 互联网

标签:02 opt Hadoop yarn hadoop etc 集群 3.1 hadoop102


Hadoop集群搭建

一、环境准备(准备一台模板机)

1.1 模板机配置 — hadoop100

模板机不动,为了后面方便克隆,直接添加新的节点

虚拟机要求:内存 4G , 硬盘 50G, CentOS7,最小安装

这里以hadoop100为模板机,集群配置为hadoop102(nn)、hadoop103(yarn)、hadoop104(2nn)

1.1.1 虚拟机安装

​ 在另外写,如何安装一台虚拟机

1.1.2 修改主机地址、主机名

(1)修改IP地址
//打开文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33 

//将文件参数设置成以下内容
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="ens33"
IPADDR=192.168.1.100 //IP地址
PREFIX=24 	//子网掩码的位数长度,可不改
GATEWAY=192.168.1.2 	//网关
DNS1=114.114.114.114 	//域名服务器1 --- 解析域名
DNS2=8.8.8.8	//域名服务器2

修改完之后执行: systemctl restart network

(2)修改主机名

输入内容,打开文件

vi /etc/hostname

文件中内容

localhost.localdomain

修改此主机名为

hadoop100

保存退出

(3)修改Linux上的hosts主机名

打开文件

vi /etc/hosts

在文件下面添加以下内容

192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103
192.168.1.104 hadoop104
192.168.1.105 hadoop105
192.168.1.106 hadoop106
192.168.1.107 hadoop107
192.168.1.108 hadoop108

解释:这里配置多台是方便以后添加新节点或者克隆时,不需要经常修改此文件

保存退出

重启设备,重启后可以发现主机名已经修改成功

(4)修改Windows上的hosts主机名

在Windows系统下进入以下文件夹

C:\Windows\System32\drivers\etc

将该目录下的hosts文件拷贝到桌面

将文件放到桌面是方便修改,当前目录下需要管理员权限才能执行,以防万一

打开文件,在文件下面添加以下内容

192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103
192.168.1.104 hadoop104
192.168.1.105 hadoop105
192.168.1.106 hadoop106
192.168.1.107 hadoop107
192.168.1.108 hadoop108

保存退出,将原来的hosts进行覆盖

1.1.3 关闭防火墙自启

// 关闭防火墙
systemctl stop firewalld
// 关闭防火墙自启模式
systemctl disable firewalld

1.1.4 安装必要插件

yum install -y epel-release
yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git

此时即可使用vim编辑,尽量不要使用vi编辑

如果需要查看网络配置,如ifconfig命令

​ 需要安装:

sudo yum install net-tools

如果不是root用户需要sudo

1.1.5 添加普通用户

//创建atguigu用户
useradd atguigu
passwd atguigu

1.1.6 给用户配置root权限

//打开方式1:
visudo
//打开方式2:
vi /etc/sudoers

//利用查找功能,查找root单词,第三个即可看见
/root  //直接输入
//内容如下
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
//在root下在插入一行
## Allow root to run any commands anywhere
root      ALL=(ALL)     ALL
atguigu   ALL=(ALL)     NOPASSWD:ALL

1.1.7 创建目录

(1)创建两个文件夹,software存放软件安装包,module存放软件

mkdir /opt/module
mkdir /opt/software

(2) 设置所属主和所属组

chown atguigu:atguigu /opt/module
chown atguigu:atguigu /opt/software

因为后面的操作都是使用普通用户进行操作的,所以要给权限

1.1.8 重启虚拟机 : reboot

1.2 克隆三台虚拟机

集群最低需要3台机器才能启动: NameNode Yarn SecondaryNode

1.2.1 克隆

将模板机关闭,完整克隆三台虚拟机

将其分别改为hadoop102、hadoop103、hadoop104

1.2.2 修改主机名和地址

以hadoop102为例,其他机器操作一样

(1)修改IP地址
//打开文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33 

//将IP地址更改
IPADDR=192.168.1.100 
//改成
IPADDR=192.168.1.102 

修改完之后执行: systemctl restart network

(2)修改主机名

输入内容,打开文件

vi /etc/hostname

文件中内容

hadoop100

修改此主机名为

hadoop102

保存退出

(3)重启

重启的时候配置其他机器

二、JDK、 Hadoop安装

2.1 卸载现有JDK

rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

2.2 解压JDK和Hadoop

① 将JDK和Hadoop的安装包上传到Linux中

/**
文件需要上传到	/opt/software
	一、可以利用xftp上传
	二、直接拖动文件到Linux的文件夹中
*/

②解压安装包

// 在/opt/software目录下-相对路径
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/	
// 绝对路径下写法
tar -zxvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module	

善用table键补全

2.3 配置环境变量

① 配置环境变量

//方式一:在/etc/profile.d/ 目录下新建my_env.sh文件
sudo  touch  /etc/profile.d/my_env.sh
sudo vim /etc/profile.d/my_env.sh
//配置如下:
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin


//方式二:直接将环境变量配置到 /etc/profile 文件中,在/etc/profile文件的末尾追加如下内容(不推荐)

② 使环境变量生效

  • 输入source /etc/profile.d/my_env.sh
  • 重新连接xshell

2.4 测试安装

测试是否生效:
--通过显现环境变量值来检测
echo $JAVA_HOME
echo $PATH

--通过查看版本检测
 hadoop version
若hadoop version不可用,重启虚拟机
 sync
 sudo reboot

2.5 Hadoop目录介绍 (必须熟悉)

(1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本

(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件

(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)

(4)sbin目录:存放启动或停止Hadoop相关服务的脚本

(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例

2.6 Hadoop运行模式

2.6.1 本地模式(单进程)

  • 不需要进行任何Hadoop相关的配置就能够直接运行,默认就是本地模式
  • 在默认情况下,Hadoop被配置为在非分布式模式下作为单个进程运行

官方WordCount案例:

1、在hadoop-3.1.3文件下面创建一个wcinput文件夹
	mkdir wcinput
2、在wcinput文件下创建一个wc.input文件
	touch wc.input
3、编辑wc.input文件
	vi wc.input
内容:
	aaa	aaa
	bbb
	aaa	bbb
	ccc
4、执行程序
	hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput
5、查看运行结果
	cat wcoutput/part-r-00000
   将会看到如下结果
   aaa 3
   bbb 2
   ccc 1

注意事项:

1)需要注意指定时路径的问题。
2)需要注意输出路径存在的问题
   指定的输出路径不能存在,如果存在,则抛出异常。
org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory file:/opt/module/hadoop-3.1.3/wcoutput already exists
3)配置了集群之后就不能再跑本地模式,会报错

2.6.2 伪分布模式(单节点)

略,完全不用,直接学真的

2.6.3 完全分布式(多节点)

​ 1)准备3台客户机(关闭防火墙、静态ip、主机名称)

​ 2)安装JDK

​ 3)配置环境变量

​ 4)安装Hadoop

​ 5)配置环境变量

6)配置集群

7)单点启动

8)配置ssh

9)群起并测试集群

三、 完全分布式运行模式

3.1 虚拟机准备

要求:完成第一点的配置

3.2 编写集群分发脚本

分发脚本需要解决的问题:

​ 因为集群是有台服务器组成的,集群的配置必须同步,当某个服务器需要修改配置时,要求其他节点也必须同步修改。当集群的服务器有很多个时,这样重复性的工作就特别多而且没有任何意义,所以写一个脚本的最重要的作用就是将一台机器的配置直接同步到集群中的其它所有机器。

(1)scp (secure copy)安全拷贝

scp定义:scp可以实现服务器与服务器之间的数据拷贝。
基本语法:
scp    -r          $pdir/$fname              $user@hadoop$host:$pdir/$fname
命令   递归       要拷贝的文件路径/名称    目的用户@主机:目的路径/名称

(2) rsync 远程同步工具

rsync 主要用于备份和镜像,具有速度快、避免复制向同内容和支持符号链接的优点
/*
	rsync和scp的区别:
	用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去
*/
基本语法:
rsync    -av       $pdir/$fname              $user@hadoop$host:$pdir/$fname
命令   选项参数   要拷贝的文件路径/名称    目的用户@主机:目的路径/名称

选项参数:
		选项						功能
		-a						归档拷贝
		-v						显示复制过程

(3)xsync集群分发脚本

/*
	注意:脚本存放在 /opt/module/hadoop-3.1.3/bin 文件夹下,选择这个目录的原因:①该文件夹下已经配置了环境变量;②该文件内容是与hadoop相关,存放在此可以方便管理。
	路径可以随意,但需要配置环境变量,可以在系统的任意位置直接运行的
*/
	a. 在/opt/module/hadoop-3.1.3/bin 文件夹下创建xsync脚本
		cd /opt/module/hadoop-3.1.3/bin
		touch xsync
	b. 修改 xsync脚本权限
		chmod +x xsync
	c. 编辑脚本
		看下个代码块,复制粘贴时请注意是否乱码
	d. 测试脚本
		xsync /opt/module/hadoop-3.1.3/bin/xsync

脚本内容如下:

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in swk3 swk4 swk5		#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

3.3 配置ssh无密登录

(1)配置ssh

基本语法
	ssh 另一台电脑的ip地址
/*
在没有配置之前用ssh进行连接时会出现输入密码的情况,如:
Are you sure you want to continue connecting (yes/no)?
输入yes 在按照提示输入连接的用户的密码
*/

(2)无秘钥配置

​ a. 免密登录原理

在这里插入图片描述

​ b. 生成公钥和私钥 (使用的是hadoop102)

ssh-keygen -t rsa
// 敲三个回车,就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
// 可在家目录下查看 .ssh 文件夹

​ c. 将公钥拷贝到要免密登录的目标机器上

ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
/*
	注意:
	① 配置完hadoop102的公钥和私钥时,还需要配置一下hadoop102的root用户无密登录到			hadoop102、hadoop103、hadoop104的root用户
	② 配置完hadoop102后,在同理配置一下hadoop103和hadoop104。必须保证集群的各个节点能			够免密登录到任何一个节点
*/

/*
	扩展和思考:
	① 编写一个脚本,分发公钥到其他节点上。
		原因:每个节点生成的公钥都是一样的,所以每台节点都生成公钥和私钥后,先用一个节点将				所有节点的公钥拷贝到这个节点上,再分发。
	② 公钥是唯一的,公钥可以公开,以hadoop102为例,每个节点想向hadoop102发送信息,那么		就可以拿到它的公钥加密数据向hadoop102发送数据,hadoop102收到数据后,利用自己的私钥		进行解密。  ---加密解密有三种,一般使用公钥公开,私钥保密
	③ rsa算法 --- 是一个非对称加密算法
*/

(3) ssh文件夹下(~/.ssh)的文件功能解释

known_hosts记录ssh访问过计算机的公钥(public key)
id_rsa生成的私钥
id_rsa.pub生成的公钥
authorized_keys存放授权过的无密登录服务器公钥

3.4 集群部署

(1) 集群部署规划

注意:

  • NameNode和SecondaryNameNode不要安装在同一台服务器
  • ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。
hadoop102hadoop103hadoop104
HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNode
YARNNodeManagerResourceManager NodeManagerNodeManager

(2) 配置集群

a. 核心文件配置 —> core-site.xml

​ 打开文件

cd /opt/module/hadoop-3.1.3/etc/hadoop/
vim core-site.xml

​ 文件内容配置如下

<configuration>
    <!--指定HDFS中NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:9820</value>
    </property>
    <!-- 指定Hadoop运行时产生文件的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>
    <!--  通过web界面操作hdfs的权限 -->
    <property>
            <name>hadoop.http.staticuser.user</name>
            <value>atguigu</value>
    </property>
    <!-- 后面hive的兼容性配置  -->
    <property>
        <name>hadoop.proxyuser.atguigu.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.atguigu.groups</name>
        <value>*</value>
    </property>
</configuration>
b. HDFS配置 —> hdfs-site.xml

​ 打开配置文件

cd /opt/module/hadoop-3.1.3/etc/hadoop/
vim hdfs-site.xml

​ 文件内容配置如下:

<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>
c. YARN配置 —> yarn-site.xml

​ 打开配置文件

cd /opt/module/hadoop-3.1.3/etc/hadoop/
vim yarn-site.xml

​ 文件内容配置如下

<configuration>
<!--  Reducer获取数据的方式-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<!--  指定YARN的ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
</property>
<!-- 环境变量通过从NodeManagers的容器继承的环境属性,对于mapreduce应用程序,除了默认值 hadoop op_mapred_home应该被添加外。属性值 还有如下-->
    <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>
<!-- 解决Yarn在执行程序遇到超出虚拟内存限制,Container被kill  -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
<!-- 后面hive的兼容性配置  -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
</property>
</configuration>
d. MapReduce配置 —> mapred-site.xml

​ 打开配置文件

cd /opt/module/hadoop-3.1.3/etc/hadoop/
vim mapred-site.xml

​ 文件内容配置如下

<configuration>
<!-- 指定MR运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
e. 分发配置文件

集群中所有节点的配置都要同步

xsync /opt/module/hadoop-3.1.3/etc/hadoop/

3.5 群起集群

workers文件是集群的节点的名称

(1) 配置workers

​ 打开文件

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

​ 添加以下内容

hadoop102
hadoop103
hadoop104

注意:该文件中不允许有空格和空行,必须严格,否则无法启动集群

​ 分发配置文件

xsync /opt/module/hadoop-3.1.3/etc/hadoop/

(2) 启动集群

a. 第一次启动格式化

如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据

hdfs namenode -format

注意:这里一定要小心,不能重复格式化,否则启动不了集群。

b. 启动HDFS
start-dfs.sh   
该命令在 hadoop根目录下的sbin文件
c. 启动YARN

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

start-yarn.sh
该命令在 hadoop根目录下的sbin文件
d. Web端查看集群内容

查看NameNode信息

  • 浏览器中输入:http://hadoop102:9870

查看YARN信息

  • 浏览器中输入:http://hadoop103:8088

查看SecondaryNameNode信息

解决在web端看不到 SecondaryNameNode 的详细信息

/*
	路径:$HADOOP_HOME/share/hadoop/hdfs/webapps/static
	查看dfs-dust.js的第61行
*/
'date_tostring' : function (v) {
    return moment(Number(v)).format('ddd MMM DD HH:mm:ss ZZ YYYY');
},
// 并修改函数返回值如下:
'date_tostring' : function (v) {
  return new Date(Number(v)).toLocaleString();
},

(3) 测试集群

1、上传文件到集群
	hadoop fs -mkdir -p /user/atguigu/input hadoop fs -put $HADOOP_HOME/wcinput/wc.input /user/atguigu/input
2、上传大文件
	hadoop fs -put  /opt/software/hadoop-3.1.3.tar.gz  /
3、拼接	--将上传的文件按照128大小切块后,再此拼接,下载到本地,大小和上传前文件大小一致
	[atguigu@hadoop102 subdir0]$ cat blk_1073741836>>tmp.jar
	[atguigu@hadoop102 subdir0]$ cat blk_1073741837>>tmp.jar
	[atguigu@hadoop102 subdir0]$ tar -zxvf tmp.jar
4、下载
	[atguigu@hadoop102 hadoop-3.1.3]$ bin/hadoop fs -get /hadoop-3.1.3.tar.gz ./
5、执行wordcount程序
	hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /user/atguigu/input /user/atguigu/output

(4) 编写群起脚本

每次启动都需要在hadoop102上启动dfs、hadoop103启动yarn。这样比较麻烦,所以编写一个脚本,利用脚本一次性启动

	a. 在/opt/module/hadoop-3.1.3/bin 文件夹下创建mycluster脚本
		cd /opt/module/hadoop-3.1.3/bin
		touch mycluster
	b. 修改 xsync脚本权限
		chmod +x mycluster
	c. 编辑脚本
		看下个代码块,复制粘贴时请注意是否乱码
	d. 测试脚本
		mycluster stop

脚本内容如下

#!/bin/bash

if [ $# -ne 1 ]
	then	
		echo "args number error!!!"
		exit
fi

case $1 in
"start")
	ssh hadoop102 $HADOOP_HOME/sbin/start-dfs.sh
	ssh hadoop103 $HADOOP_HOME/sbin/start-yarn.sh
	;;
"stop")
	ssh hadoop102 $HADOOP_HOME/sbin/stop-dfs.sh
	ssh hadoop103 $HADOOP_HOME/sbin/stop-yarn.sh
	;;
*)
	echo "args info error!!!"
	;;
esac

3.6 集群启动/停止方式总结

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

启动 DFS 
hdfs --daemon start namenode/datanode/secondarynamenode
启动 YARN
yarn --daemon start/stop  resourcemanager/nodemanager

停止 DFS
hdfs --daemon stop namenode/datanode/secondarynamenode
停止 YARN
yarn --daemon stop  resourcemanager/nodemanager

(2) 各个模块分开启动 / 停止 (常用)

前提要求: 集群的各个节点都配置了ssh免密登录

**请清楚知道namenode和yarn所在的节点,到对应的节点启动对应的服务**
DFS
start-dfs.sh/stop-dfs.sh     --- hadoop102上
YARN
start-yarn.sh/stop-yarn.sh  --- hadoop103上

3.7 配置历史服务器

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

(1) 配置mapred-site.xml

​ 打开文件

cd /opt/module/hadoop-3.1.3/etc/hadoop/
vim mapred-site.xml

​ 增加以下内容

<!-- 历史服务器端地址 -->
<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)启动历史服务器并查看

​ 启动历史服务器

启动
mapred --daemon start historyserver
关闭
mapred --daemon start historyserver

​ 查看是否有启动

在控制台输入 jps 查看 HistoryManager
或者
在web端查看: http://hadoop102:19888/jobhistory

3.8 配置日志的聚集

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

日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。

注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。

开启日志聚集功能具体步骤如下:

(1) 配置 yarn-site.xml

cd /opt/module/hadoop-3.1.3/etc/hadoop/
vim yarn-site.xml

(2) 增加以下内容

<!-- 开启日志聚集  -->
<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>

(3) 分发配置

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

(4) 启动NodeManager 、ResourceManage、Timelineserver和HistoryServer

在103上执行:start-yarn.sh
在103上执行:yarn --daemon start timelineserver
在102上执行:mapred --daemon start historyserver

(5) 执行WordCount程序

hadoop jar  $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /user/atguigu/input /user/atguigu/output2

(6) 查看日志

http://hadoop102:19888/jobhistory

提示:一般情况下,不会开启历史服务器和日志服务器,因为这会消耗一部分的资源,可以等需要使用的时候再开启,内存很大则可忽略

3.9 集群时间同步

时间同步的方式:

​ 找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。

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

​ a. 在hadoop102上关闭ntp服务和自启动(ntp在模板机时以安装了这个插件)

sudo systemctl stop ntpd
sudo systemctl disable ntpd

​ b. 修改ntp配置文件

打开配置文件

sudo vim /etc/ntp.conf

修改内容如下

(1)修改1(授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间)
    #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
    改为
    restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
    
(2)修改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
    改成
    #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
    
(3)添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步) --- 可任意位置添加
    server 127.127.1.0
    fudge 127.127.1.0 stratum 10

​ c. 修改ntpd文件

打开配置文件

sudo vim /etc/sysconfig/ntpd

增加内容如下

SYNC_HWCLOCK=yes

​ d. 重新启动ntpd服务和开机自启

systemctl start ntpd
systemctl enable ntpd

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

​ a. 在其他机器配置10分钟与时间服务器同步一次

// 打开定时任务
crontab -e
// 编写以下内容
*/1 * * * * /usr/sbin/ntpdate hadoop102
// 说明:测试时编写1分钟,最好十分钟以上同步一次

​ b. 测试

// 修改任意机器时间 如hadoop104上
date -s "2017-9-11 11:11:11"
// 1 分钟后 查看
date

2.168.1.0 mask 255.255.255.0 nomodify notrap
改为
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

(2)修改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
改成
#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

(3)添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步) — 可任意位置添加
server 127.127.1.0
fudge 127.127.1.0 stratum 10


​	c. 修改ntpd文件

打开配置文件

sudo vim /etc/sysconfig/ntpd


**增加**内容如下

SYNC_HWCLOCK=yes


​	d. 重新启动ntpd服务和开机自启

systemctl start ntpd
systemctl enable ntpd


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

​	a. 在其他机器配置10分钟与时间服务器同步一次

```java
// 打开定时任务
crontab -e
// 编写以下内容
*/1 * * * * /usr/sbin/ntpdate hadoop102
// 说明:测试时编写1分钟,最好十分钟以上同步一次

​ b. 测试

// 修改任意机器时间 如hadoop104上
date -s "2017-9-11 11:11:11"
// 1 分钟后 查看
date

标签:02,opt,Hadoop,yarn,hadoop,etc,集群,3.1,hadoop102
来源: https://blog.csdn.net/qq_47804805/article/details/120401366

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有