# Hadoop 安装部署

# 一、安装 Cloudera Enterprise 6.3.x

视频教程手摸手教你在Ubuntu 18.04中部署Cloudera Enterprise 6.2.x 跟你聊聊企业部署Hadoop的注意事项CDH (opens new window)

# 1.1 安装Ubuntu 18.04.4 LTS

前往https://ubuntu.com/download/desktop 下载最新版本的Ubuntu 18.04.4 LTS (opens new window)

做一些必要配置

# 安装ssh
sudo apt-get install ssh
service sshd start

# 替换163源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 在/etc/apt/sources.list文件前面添加如下条目
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse

# 更新
sudo apt-get update
sudo apt-get upgrade
apt install net-tools

# 关闭防火墙
systemctl stop ufw
systemctl disable ufw

# 允许root用户登录
vim /etc/ssh/sshd_config

# 设置 PermitRootLogin 为yes
PermitRootLogin yes
PasswordAuthentication yes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 1.2 配置CDH源

因为国内访问官方镜像实太慢,我们需要把安装包下载到本地然后在本地启一个镜像站点。

下载Cloudera Manager 6包并解压

mkdir -p cloudera-repos/cm6
wget https://archive.cloudera.com/cm6/6.3.1/repo-as-tarball/cm6.3.1-ubuntu1804.tar.gz
tar xvfz cm6.3.1-ubuntu1804.tar.gz -C cloudera-repos/cm6 --strip-components=1
chmod -R ugo+rX cloudera-repos/cm6
1
2
3
4

下载CDH 6的包

wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/cdh6/6.3.2/ubuntu1804/ -P cloudera-repos
wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/gplextras6/6.3.2/ubuntu1804/ -P cloudera-repos
chmod -R ugo+rX cloudera-repos/cdh6
chmod -R ugo+rX cloudera-repos/gplextras6
1
2
3
4

临时起一个Http服务

python3 -m SimpleHTTPServer 8900
1

在Ubuntu中创建资源文件,并指向我们临时创建的http服务

vim /etc/apt/sources.list.d/cloudera-repo.list

#内容如下
deb [arch=amd64] http://192.168.50.76:8900/cloudera-repos/cm6/ bionic-cm6.3.1 contrib
1
2
3
4

添加GPG key

wget https://archive.cloudera.com/cm6/6.3.1/ubuntu1604/apt/archive.key
apt-key add archive.key
1
2

最后更新一下源即可

apt-get update
1

# 1.3 安装 Cloudera Manager Server

# 安装JDK
apt-get install openjdk-8-jdk
# 或 apt-get install oracle-j2sdk1.8

apt-get install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
1
2
3
4
5

# 1.4 安装mariadb数据库

apt-get install mariadb-server

# 系统启动的时候自动启动 mariadb
systemctl enable mariadb

# 设置root账号密码
/usr/bin/mysql_secure_installation
1
2
3
4
5
6
7

以下是官方需要数据库的服务清单

Databases for Cloudera Software
Service Database User
Cloudera Manager Server scm scm
Activity Monitor amon amon
Reports Manager rman rman
Hue hue hue
Hive Metastore Server metastore hive
Sentry Server sentry sentry
Cloudera Navigator Audit Server nav nav
Cloudera Navigator Metadata Server navms navms
Oozie oozie oozie

根据实际情况创建即可

CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm';
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue';
CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
FLUSH PRIVILEGES;
1
2
3
4
5
6
7

# 1.5 初始化 Cloudera Manager的数据库

安装Jdbc驱动

apt-get install libmysql-java
1

初始化

/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
1

# 1.6 安装CDH

启动 CM Server,日志路径/var/log/cloudera-scm-server/cloudera-scm-server.log

注意把host文件多余指向127.0.0.1的记录删掉,否则会出现 Unable to retrieve non-local non-loopback IP address 错误

systemctl start cloudera-scm-server
1

接着访问 CM的管理页面 http://localhost:7180/ 默认用户名密码 admin admin

因为网络的关系,我们还是要实现下好CDH的Parcel

wget https://archive.cloudera.com/cdh6/6.3.2/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel
wget https://archive.cloudera.com/cdh6/6.3.2/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha1
wget https://archive.cloudera.com/cdh6/6.3.2/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha256
wget https://archive.cloudera.com/cdh6/6.3.2/parcels/manifest.json
1
2
3
4

# 1.7 Cloudera Manager许可证管理

在前面的安装时,在版本说明页面有三个选项:Cloudera Express、Cloudera Enterprise数据集线器60天试用版和Cloudera Enterprise。Cloudera Express版本不需要许可证,试用版使用的是60天的试用许可证;Cloudera Enterprise需要许可证。我们选择的是默认配置的60天试用版。如果到了60天期限,是不是Cloudera Manager就完全不能用了呢?本小节就来介绍一下Cloudera Manager的许可证管理。

Cloudera Enterprise,也就是所谓的企业版有如下Express版本不具有的特性:

  • 支持LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)和SAML(Security Assertion Markup Language,安全声明标记语言)身份认证。Cloudera Manager可以依赖内部数据库进行身份认证,企业版还支持通过LDAP和SAML等外部服务进行身份认证。
  • 浏览和还原配置历史。无论何时,当你改变并保存了一系列关于服务、角色或主机的配置信息,Cloudera Manager都会自动保存前一个版本的配置和更改配置的用户名。这样就可以浏览以前的配置,并且在需要时可以回滚到以前的配置状态。
  • 支持SNMP traps报警和用户定制的报警脚本。当预制定阈值越界等情况出现时,可以在任何时候向SNMP管理器报告错误情况,而不用等待SNMP管理器的再次轮询。
  • 备份与崩溃恢复。Cloudera Manager企业版提供了一套集成的、易用的、Hadoop平台上的数据保护解决方案。Cloudera Manager允许跨数据中心的数据复制,包括HDFS里的数据、Hive表中的数据、Hive元数据、Impala元数据等。即使遇到一个数据中心都当掉的情况,仍然可以保证这些关键数据是可用的。
  • 能够建立操作报告。在企业版Cloudera Manager的报告页面,可以建立HDFS的使用报告,包括每个用户、组或者目录的文件数及数据大小等信息,还可以报告MapReduce的操作情况。
  • 支持Cloudera导航。Cloudera导航是一个与Hadoop平台完全集成的数据管理和安全系统,包括数据的审计、可视化、加密、搜索、分析等数据管理功能。
  • 只有企业版支持Rolling Restart、History and Rollback和Send Diagnostic Data操作命令。
  • 提供集群使用报告。企业版Cloudera Manager的集群使用报告页面显示汇总的YARN和Impala作业使用信息。报告还显示CPU、内存的使用情况,基于YARN fair调度器的资源分配情况,Impala查询等,可以配置报告的时间范围。

登录Cloudera Manager后,选择“管理”→“许可证”菜单,就访问到许可证页面。如果已经安装了许可证,该页面将显示许可证的状态(如当前是否有效)和许可证的属主、密钥、过期时间等细节信息。

如果企业版的许可证过期,Cloudera Manager仍然可以使用,只是企业版特性将不可用。试用版许可证只能使用一次,当60天试用期满,或者手工结束试用,将不能再次开启试用。试用结束后,企业版特性立即不可用,但是被禁用功能的相关数据和配置并不删除,一旦安装了企业版许可证,这些功能会再次生效。

# 二、安装开原版Hadoop

系统:CentOS 7

本文规划

192.168.235.5 master01 192.168.235.6 slave01 192.168.235.7 slave02 192.168.235.8 slave03

组件 master01 slave01 slave02
HDFS NameNode DataNode DataNode SecondaryNameNode DataNode
YARN NodeManager JobHistoryServer ResourceManager NodeManager NodeManager

# 2.1 修改网络配置

修改/etc/sysconfig/network-scripts/ifcfg-ens33,将网络改为静态ip

原内容:

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="47eb256e-1189-4dcb-b28b-cefb7dd76c18"
DEVICE="ens33"
ONBOOT="yes"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

修改后:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=47eb256e-1189-4dcb-b28b-cefb7dd76c18
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.235.5
PREFIX=24
GATEWAY=192.168.235.1
DNS1=192.168.235.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 2.2 修改HostName

编辑/etc/hostname

[root@master ~]# cat /etc/hostname
master01
1
2

# 2.3 修改host

编辑/etc/hosts

[root@master ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.235.5 master
192.168.235.6 k8snode1
192.168.235.7 k8snode2
1
2
3
4
5
6

# 2.4 关闭防火墙

systemctl stop firewalld
systemctl disable firewalld.service
1
2

# 2.5 卸载已安装的JDK

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

配置变量

创建新的变量文件,放到/etc/profile.d

cd /etc/profile.d
vim my_env.sh
source /etc/profile
1
2
3

配置文件内容

#JAVA_HOME
export JAVA_HOME=/opt/jdk1.8.0_301
export PATH=$PATH:$JAVA_HOME/bin
1
2
3

# 2.6 安装JKD

Oracle官方 (opens new window)下载JDK然后解压到目录

tar -zxvf ~/jdk-8u301-linux-x64.tar.gz
1

# 2.7 Hadoop 下载

Hadoop (opens new window)官方下载最新版,然后解压

tar -zxvf 
1

在my_env.sh中增加hadoop相关变量

#HADOOP_HOME
export HADOOP_HOME=/opt/hadoop-3.3.1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
1
2
3
4

# 2.8 字符集设置

编辑/etc/environment

$ cat /etc/environment
LANG=en_US.utf-8
LC_ALL=en_US.utf-8
1
2
3

# 2.9 配置用户sudo权限

编辑/etc/sudoers把用户tpxcer加入sudo

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

## Same thing without a password
tpxcer  ALL=(ALL)       NOPASSWD: ALL
1
2
3
4
5
6
7
8
9
10
11
12

# 2.10 ssh免密登陆

ssh-配置免密钥登陆

# 2.11 准备群集分发脚本

rsync-分发脚本

# 2.12 复制文件清单

xsync /etc/environment
xsync /etc/profile.d/my_env.sh
xsync /opt/jdk1.8.0_301
xsync /etc/hosts
xsync /opt/hadoop-3.3.1/
1
2
3
4
5

# 2.13 配置文件

默认配置文件

默认文件 jar包中的位置
core-default.xml hadoop-3.3.1/share/hadoop/common/hadoop-common-3.3.1.jar
hdfs-default.xml hadoop-3.3.1/share/hadoop/hdfs/hadoop-hdfs-3.3.1.jar
yarn-default.xml hadoop-3.3.1/share/hadoop/yarn/hadoop-yarn-common-3.3.1.jar
mapred-default.xml hadoop-3.3.1/share/hadoop/mapreduce/hadoop-mapreduce-client-core-3.3.1.jar

自定义配置文件

core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上

# 2.14 核心配置

core-site.xml 核心文件

<configuration>
    <!-- 指定 NameNode 的地址 --> 
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master01:8020</value> 
    </property>
    <!-- 指定 hadoop 数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop-3.3.1/data</value>
    </property>
    <!-- 配置 HDFS 网页登录使用的静态用户为 tpxcer --> 
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>tpxcer</value> 
    </property>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

hdfs-site.xml

<configuration>
    <!-- nn web端访问地址--> 
    <property>
        <name>dfs.namenode.http-address</name>
        <value>master01:9870</value> 
    </property>
    <!-- 2nn web 端访问地址--> 
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>slave02:9868</value> 
    </property>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12

yarn-site.xml

<configuration>
    <!-- 指定 MR 走 shuffle --> 
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value> 
    </property>
    <!-- 指定 ResourceManager 的地址--> 
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>slave01</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>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

mapred-site.xml

<configuration>
    <!-- 指定 MapReduce 程序运行在 Yarn 上 --> 
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
   </property>
</configuration>
1
2
3
4
5
6
7

分发配置好的文件

xsync /opt/hadoop-3.3.1/etc/hadoop/
1

# 2.15 配置workers

2.x系列文件名叫slaves

[root@master01 etc]# cat /opt/hadoop-3.3.1/etc/hadoop/workers
slave01
slave02
master01

[root@master01 etc]# xsync /opt/hadoop-3.3.1/etc/hadoop/workers
1
2
3
4
5
6

# 2.16 启动集群

(1) 初始化

仅第一次启动需要该步骤,初始化以后目录新增datalogs目录

hdfs namenode -format
1

(2) 启动HDFS

sbin/start-dfs.sh
1

如果出现以下错误,说明你是用root启动的,可以参考这里 (opens new window)解决

ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
1
2

jps看下进程

[tpxcer@master01 hadoop-3.3.1]$ jps
77456 NameNode
77625 DataNode
78763 Jps

[tpxcer@slave01 .ssh]$ jps
55728 Jps
53439 DataNode

[tpxcer@slave02 .ssh]$ jps
53506 DataNode
53650 SecondaryNameNode
56323 Jps
1
2
3
4
5
6
7
8
9
10
11
12
13

访问HDFS WebUI http://master01:9870/

(3) 启动 YARN

登陆salve01启动yarn

[tpxcer@slave01 hadoop-3.3.1]$ sbin/start-yarn.sh
1

jps查看

[tpxcer@slave01 hadoop-3.3.1]$ jps
65799 ResourceManager
65979 NodeManager
66877 Jps
53439 DataNode

[tpxcer@master01 .ssh]$ jps
85905 Jps
77456 NameNode
84567 NodeManager
77625 DataNode

[tpxcer@slave02 .ssh]$ jps
53506 DataNode
53650 SecondaryNameNode
65155 NodeManager
68014 Jps
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

查看YARN的WebUI http://slave01:8088/cluster

# 2.17 群集基本测试

(1) 上传文件到群集

hadoop fs -mkdir /input
hadoop fs -put README.txt /input
1
2

(2) 拼接数据

二进制文件可以通过cat拼接

cat blk_xxxx1 >> tmp.tar.gz
cat blk_xxxx2 >> tmp.tar.gz
cat blk_xxxx3 >> tmp.tar.gz

tar xzf tmp.tar.gz
1
2
3
4
5

(3) 执行wordcount

[tpxcer@master01 subdir0]$ cd /opt/hadoop-3.3.1/
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /wcoutput
1
2

# 2.18 配置历史服务器

mapred-site.xml配置历史服务器

    <!-- 历史服务器端地址 --> 
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master01:10020</value> 
    </property>
    <!-- 历史服务器 web 端地址 --> 
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master01:19888</value> 
    </property>
1
2
3
4
5
6
7
8
9
10

分发配置

[tpxcer@master01 hadoop]$ xsync mapred-site.xml
1

启动历史服务器

# 先把yarn关掉
[tpxcer@slave01 hadoop-3.3.1]$ sbin/stop-yarn.sh
# 再启动yarn后,接着启动historyserver
[tpxcer@slave01 hadoop-3.3.1]$ sbin/start-yarn.sh
[tpxcer@master01 hadoop-3.3.1]$ bin/mapred --daemon start historyserver
[tpxcer@master01 hadoop-3.3.1]$ jps
77456 NameNode
110944 Jps
108740 NodeManager
77625 DataNode
110799 JobHistoryServer
1
2
3
4
5
6
7
8
9
10
11

访问历史服务器WebUI:http://master01:19888/

# 2.19 配置日志聚集

配置yarn-site.xml

    <!-- 开启日志聚集功能 --> 
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <!-- 设置日志聚集服务器地址 --> 
    <property>
        <name>yarn.log.server.url</name> 
        <value>http://master01:19888/jobhistory/logs</value>
    </property>
    <!-- 设置日志保留时间为 7 天 --> 
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

分发配置

[tpxcer@master01 hadoop-3.3.1]$ xsync etc/hadoop/yarn-site.xml
1

重启服务

[tpxcer@master01 hadoop-3.3.1]$ mapred --daemon stop historyserver
[tpxcer@slave01 hadoop-3.3.1]$ sbin/stop-yarn.sh
[tpxcer@slave01 hadoop-3.3.1]$ sbin/start-yarn.sh
[tpxcer@master01 hadoop-3.3.1]$ mapred --daemon start historyserver
1
2
3
4

# 2.20 群集启动/停止方式总结

  1. 各个模块分开启动

整体启动/停止HDFS

start-dfs.sh/stop-dfs.sh
1

整体启动/停止YARN

start-yarn.sh/stop-yarn.sh
1
  1. 各个服务组件逐一启动/停止

分别启动/停止HDFS 组件

hdfs --daemo start/stop namenode/datanode/secondarynamenode
1

启动/停止YARN

yarn --daemon start/stop resourcemanager/nodemanager
1

# 2.21 Hadoop 群集启停脚本

[tpxcer@master01 script]$ cat myhadoop.sh
#!/bin/bash
if [ $# -lt 1 ]
then
   echo "No Args Input..."
exit ;
fi

case $1 in
"start")
    echo " =================== 启动 hadoop 集群 ==================="
    echo " --------------- 启动 hdfs ---------------"
    ssh master01 "/opt/hadoop-3.3.1/sbin/start-dfs.sh"
    echo " --------------- 启动 yarn ---------------"
    ssh slave01 "/opt/hadoop-3.3.1/sbin/start-yarn.sh"
    echo " --------------- 启动 historyserver ---------------"
    ssh master01 "/opt/hadoop-3.3.1/bin/mapred --daemon start historyserver"
    ;;
"stop")
    echo " =================== 关闭 hadoop 集群 ==================="
    echo " --------------- 关闭 historyserver ---------------"
    ssh master01 "/opt/hadoop-3.3.1/bin/mapred --daemon stop historyserver"
    echo " --------------- 关闭 yarn ---------------"
    ssh slave01 "/opt/hadoop-3.3.1/sbin/stop-yarn.sh"
    echo " --------------- 关闭 hdfs ---------------"
    ssh master01 "/opt/hadoop-3.3.1/sbin/stop-dfs.sh"
    ;;
*)
    echo "Input Args Error..."
;; esac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# 2.22 查看所有服务器的Java进程脚本

[tpxcer@master01 script]$ cat jpsall
#!/bin/bash
for host in master01 slave01 slave02 slave03
do
    echo =============== $host ===============
    ssh $host jps
done
1
2
3
4
5
6
7

# 2.23 集群时间同步(不连外网状态下)

注意先调整好所有机器的时区

# 方法1
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 方法2
timedatectl list-timezones
sudo timedatectl set-timezone Asia/Shanghai
1
2
3
4
5
6

# master01 操作步骤

  1. 查看所有节点ntpd 服务状态和开机自启动状态
systemctl status ntpd
sudo systemctl start ntpd
sudo systemctl is-enabled ntpd
1
2
3
  1. 修改master01的/etc/ntp.conf配置文件

修改前

# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
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
1
2
3
4
5
6
7
8
9

修改后

# 授权192.168.235.0 - 192.168.235.255 网段上的所有机器可以从这台机器上查询和同步时间
192.168.235.0 mask 255.255.255.0 nomodify notrap

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).

# 不用外网时间
#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 127.127.1.0
fudge 127.127.1.0 stratum 10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  1. 修改mater01的/etc/sysconfig/ntpd文件

增加如下内容(让硬件时间与系统时间一起同步)

SYNC HWCLOCK=yes
1
  1. 重启启动ntpd服务
sudo systemctl start ntpd
sudo systemctl enable ntpd
1
2

# 其他节点操作步骤

  1. 关闭所有节点上的ntp服务和自启动
sudo systemctl stop ntpd
sudo systemctl disable ntpd
1
2
  1. 配置间隔1分钟与时间服务器同步一次
[tpxcer@slave01 hadoop-3.3.1]$ sudo crontab -e
*/1 * * * * /usr/sbin/ntpdate master01 >/dev/null 2>&1
1
2
  1. 测试一下
# 修改master01的时间
sudo date -s "2021-09-01 11:11:11"

# 1分钟后查看其他机器是否与时间服务器同步
date
1
2
3
4
5
更新时间: 9/2/2021, 6:47:47 PM