标签: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配置在同一台机器上。
hadoop102 | hadoop103 | hadoop104 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
(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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。