1 大数据概率

大数据是指在肯定工夫内无奈用惯例软件工具进行捕获、治理和解决的数据汇合,是须要新解决模式能力具备更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息增长。

次要解决海量的存储和海量数据的剖析计算问题。

1.1 大数据的特点

Volume(大量)

Velocity(高速)

Variety(多样)

Value(低价值密度)

1.2 大数据利用场景

物流仓储:大数据分析系统助力商家精细化经营、晋升销量、节约老本。

批发:剖析用户生产习惯,为用户购买商品提供方便,从而晋升商品销量。

游览:深度联合大数据能力与游览行业需要,共建游览产业智慧治理、智慧服务和智慧营销的将来。

商品举荐:依据用户购买记录举荐商品。

保险:海量数据挖掘及危险预测,助力保险行业精准营销,晋升精细化定价能力。

金融:多维度体现用户特色,帮忙金融机构举荐优质客户,防备欺诈危险。

房地产:大数据全面助力房地产行业,打造精准投策与营销,选出更适合的地,建造更适合的楼,卖给更适合的人。

人工智能:以大数据为依靠。

2 从 Hadoop 框架探讨大数据生态

2.1 Hadoop 是什么?

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

次要解决,海量数据的存储和海量数据的剖析计算问题。

狭义上来说,Hadoop通常是指一个更宽泛的概念——Hadoop生态圈。

2.2 Hadoop 发行版本

Apache版本最原始(最根底)的版本,对于入门学习最好。

Cloudera在大型互联网企业中用的较多。

Hortonworks文档较好。

2.3 Hadoop 的劣势

高可靠性:Hadoop 底层保护多个数据正本,所以即便 Hadoop 某个计算元素或存储呈现故障,也不会导致数据的失落。

高扩展性:在集群间分配任务数据,可不便的扩大数以千计的节点。

高效性:在 MapReduce 的思维下,Hadoop 是并行工作的,以放慢工作处理速度。

高容错性:可能主动将失败的工作重新分配。

2.4 Hadoop 组成

2.4.1 HDFS架构概述

NameNode(nn):存储文件的元数据,如文件名,文件目录构造,文件属性(生成工夫、正本数、文件权限),以及每个文件的块列表和块所在的DataNode等。

DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。

Secondary NameNode(2nn):用来监控 HDFS 状态的辅助后台程序,每隔一段时间获取 HDFS 元数据的快照。

2.4.2 YARN架构概述

2.4.3 MapReduce 架构概述

MapReduce 将计算过程分为两个阶段:Map 和 Reduce

Map 阶段并行处理输出数据

Reduce 阶段对 Map 后果进行汇总

2.5 大数据技术生态体系

波及的技术名词解释如下:

1)Sqoop:Sqoop 是一款开源的工具,次要用于在 Hadoop、Hive 与传统的数据库(MySQL)间进行数据的传递,能够将一个关系型数据库中的数据导进到 Hadoop 的 HDFS 中,也能够将 HDFS 的数据导进到关系型数据库中。

2)Flume:Flume 是 Cloudera 提供的一个高可用的,高牢靠的,分布式的海量日志采集、聚合和传输的零碎,Flume 反对在日志零碎中定制各类数据发送方,用于收集数据;同时,Flume 提供对数据进行简略解决,并写到各种数据接受方(可定制)的能力。

3)Kafka:Kafka 是一种高吞吐量的分布式公布订阅音讯零碎,有如下个性:

(1)通过O(1)的磁盘数据结构提供音讯的长久化,这种构造对于即便数以 TB 的音讯存储也可能放弃长时间的稳定性能。

(2)高吞吐量:即便是十分一般的硬件 Kafka 也能够反对每秒数百万的音讯。

(3)反对通过 Kafka 服务器和消费机集群来分区音讯。

(4)反对 Hadoop 并行数据加载。

4)Storm:Storm 用于“间断计算”,对数据流做间断查问,在计算时就将后果以流的模式输入给用户。

5)Spark:Spark 是以后最风行的开源大数据内存计算框架,能够基于 Hadoop 上存储的大数据进行计算。

6)Oozie:Oozie 是一个治理 Hdoop 作业(job)的工作流程调度管理系统。

7)Hbase:HBase 是一个分布式的、面向列的开源数据库,HBase 不同于个别的关系数据库,它是一个适宜于非结构化数据存储的数据库。

8)Hive:Hive 是基于 Hadoop 的一个数据仓库工具,能够将结构化的数据文件映射为一张数据库表,并提供简略的 SQL查问性能,能够将 SQL 语句转换为 MapReduce 工作进行运行, 其长处是学习成本低,能够通过类 SQL 语句疾速实现简略的 MapReduce 统计,不用开发专门的 MapReduce 利用,非常适宜数据仓库的统计分析。

10)R语言:R 是用于统计分析、绘图的语言和操作环境。R 是属于 GNU 零碎的一个自在、收费、源代码凋谢的软件,它是一个用于统计计算和统计制图的优良工具。

11)Mahout:Apache Mahout 是个可扩大的机器学习和数据挖掘库。

12)ZooKeeper:Zookeeper 是 Google 的 Chubby 一个开源的实现,它是一个针对大型分布式系统的牢靠协调系统,提供的性能包含:配置保护、名字服务、 分布式同步、组服务等,ZooKeeper 的指标就是封装好简单易出错的要害服务,将简略易用的接口和性能高效、性能稳固的零碎提供给用户。

3 Hadoop 运行环境搭建

3.1 虚拟机环境筹备

敞开防火墙

# 敞开防火墙

systemctl stop firewalld

# 开机禁用防火墙

`systemctl disable firewalld`

创立用户

# 创立用户

useradd djm

# 批改明码

`passwd djm`

配置用户具备 root 权限

djm ALL=(ALL) NOPASSWD:ALL

在 /opt 目录下创立文件夹

`sudo` **mkdir** `/opt/software`
`sudo` **mkdir** `/opt/module`

3.2 装置 JDK

卸载现有 Java

`rpm -qa | grep java | xargs sudo rpm` -e `--nodeps`

解压到 /opt/module 目录

`tar -zxvf jdk-`8`u144-linux-x64.tar.gz -C /opt/`**module**/

配置环境变量

sudo vim /etc/profile

#JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_144

export PATH=$PATH:$JAVA_HOME/bin

刷新配置

source /etc/profile

测试是否装置胜利

java -version

3.3 装置 Hadoop

解压到 /opt/module 目录

`tar -zxvf hadoop-`2.7`.`2`.tar.gz -C /opt/`**module**/

配置环境变量

sudo vim /etc/profile

#HADOOP_HOME

export HADOOP_HOME=/opt/module/hadoop-2.7.2

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

刷新配置

source /etc/profile

测试是否装置胜利

hadoop version

3.4 Hadoop 目录构造

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

etc 目录:Hadoop 的配置文件目录,寄存 Hadoop 的配置文件

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

sbin 目录:寄存启动或进行 Hadoop 相干服务的脚本

share 目录:寄存 Hadoop 的依赖 jar 包、文档、和官网案例

4 Hadoop 运行模式

4.1 本地运行模式

创立一个 input 文件夹

`[djm@hadoop101 hadoop-`2.7`.`2`]$` **mkdir** `input`

将 Hadoop 的 xml 配置文件复制到 input

`[djm@hadoop101 hadoop`-2.7.2`]$ cp etc`/hadoop/`*.xml input`

执行 share 目录下的 MapReduce 程序

# output _必须是一个不存在的文件夹_

`[djm@hadoop101 hadoop-`2.7`.`2`]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-`2.7`.`2`.jar` **grep** `input output` 'dfs[a-z.]+'

查看输入后果

`[djm@hadoop101 hadoop-`2.7`.`2`]$ cat output/*`

4.2 伪分布式运行模式

4.2.1 启动 HDFS 并运行 MapReduce 程序

配置 hadoop-env.sh

#__批改__JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_144

配置 core-site.xml

<configuration>

 _<!--_ _指定__HDFS__中__NameNode__的地址_ _-->_
 <property>
 <name>`fs.defaultFS`</name>
 <value>`hdfs://hadoop101:9000`</value>
 </property>
 _<!--_ _指定__Hadoop__运行时产生文件的存储目录_ _-->_
 <property>
 <name>`hadoop.tmp.dir`</name>
 <value>`/opt/module/hadoop-2.7.2/data/tmp`</value>
 </property>

</configuration>

配置 hdfs-site.xml

<configuration>

 _<!--_ _指定__HDFS__正本的数量_ _-->_
 <property>
 <name>`dfs.replication`</name>
 <value>`1`</value>
 </property>

</configuration>

启动集群

#__格式化__NameNode

`[djm@hadoop101 hadoop-`2.7`.`2`]$ hdfs namenode -format`

#__启动__NameNode

`[djm@hadoop101 hadoop-`2.7`.`2`]$ hadoop-daemon.sh start namenode`

#__启动__DataNode

`[djm@hadoop101 hadoop-`2.7`.`2`]$ hadoop-daemon.sh start datanode`

查看是否启动胜利

`jps`

操作集群

#__在__HDFS__文件系统上创立__input

`[djm@hadoop101 hadoop`-2.7.2`]$ hdfs dfs -mkdir -p /user/djm/input`

#__将测试文件内容上传到文件系统上

`[djm@hadoop101 hadoop`-2.7.2`]$ hdfs dfs -put wcinput`/wc.input /user/djm/input/

#__运行__MapReduce__程序

`[djm@hadoop101 hadoop`-2.7.2`]$ hadoop jar share`/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/djm/input/ `/user/djm/output`

#__查看运行后果

`[djm@hadoop101 hadoop`-2.7.2`]$ hdfs dfs -cat` /user/djm/output/`*`

#__删除运行后果

`[djm@hadoop101 hadoop`-2.7.2`]$ hdfs dfs -rm -r /user/djm/output`

为什么不能始终格式化 NameNode,格式化 NameNode,要留神什么?

当咱们执行文件系统格式化时,会在 NameNode 数据文件夹(即配置文件中 dfs.name.dir 在本地零碎的门路)中保留一个 dfs/data/current/VERSION 文件,记录了 clusterID 和 datanodeUuid,格式化 NameNode 会产生新的 clusterID,然而 VERSION 文件只记录第一次格式化时保留的 clusterID,因而造成 DataNode 与 NameNode 之间的 ID 不统一,解决办法是删除 VERSION 文件。

4.2.2 启动 YARN 并运行 MapReduce 程序

配置 yarn-env.sh

#__批改__JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_144

配置 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>`hadoop101`</value>
 </property>

</configuration>

配置 mapred-env.sh

#__批改__JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_144

配置 mapred-site.xml

#将mapred-site.xml.template重命名为mapred-site.xml
[djm@hadoop101 hadoop-2.7.2]$ mv mapred-site.xml.template mapred-site.xml

<configuration>

 _<!--_ _指定__MR__运行在__YARN__上_ _-->_
 <property>
 <name>`mapreduce.framework.name`</name>
 <value>`yarn`</value>
 </property>

</configuration>

启动集群

#__启动__NameNode

`[djm@hadoop101 hadoop-`2.7`.`2`]$ hadoop-daemon.sh start namenode`

#__启动__DataNode

`[djm@hadoop101 hadoop-`2.7`.`2`]$ hadoop-daemon.sh start datanode`

#__启动__ResourceManager

`[djm@hadoop101 hadoop-`2.7`.`2`]$ sbin/yarn-daemon.sh start resourcemanager`

#__启动__NodeManager

`[djm@hadoop101 hadoop-`2.7`.`2`]$ sbin/yarn-daemon.sh start nodemanager`

集群操作

#__删除文件系统上的__output__文件

`[djm@hadoop101 hadoop-`2.7`.`2`]$ hdfs dfs -rm -R /user/djm/output`

#__执行__MapReduce__程序

`[djm@hadoop101 hadoop-`2.7`.`2`]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-`2.7`.`2`.jar wordcount /user/djm/input /user/djm/output`

4.2.3 配置历史服务器

配置 mapred-site.xml

<configuration>

 _<!--_ _历史服务器端地址_ _-->_
 <property>
 <name>`mapreduce.jobhistory.address`</name>
 <value>`hadoop101:10020`</value>
 </property>
 _<!--_ _历史服务器__web__端地址_ _-->_
 <property>
 <name>`mapreduce.jobhistory.webapp.address`</name>
 <value>`hadoop101:19888`</value>
 </property>

</configuration>

启动历史服务器

mr-jobhistory-daemon.sh start historyserver

4.2.4 配置日志的汇集

日志汇集概念:利用运行实现当前,将程序运行日志信息上传到 HDFS 零碎上。

日志汇集性能益处:能够不便的查看到程序运行详情,不便开发调试。

<configuration>

 _<!--_ _日志汇集性能使能_ _-->_
 <property>
 <name>`yarn.log-aggregation-enable`</name>
 <value>`true`</value>
 </property>
 _<!--_ _日志保留工夫设置__7__天_ _-->_
 <property>
 <name>`yarn.log-aggregation.retain-seconds`</name>
 <value>`604800`</value>
 </property>

</configuration>

重启 NodeManager 、ResourceManager 和 HistoryServer

`[djm@hadoop101 hadoop-`2.7`.`2`]$ yarn-daemon.sh stop resourcemanager`
`[djm@hadoop101 hadoop-`2.7`.`2`]$ yarn-daemon.sh stop nodemanager`
`[djm@hadoop101 hadoop-`2.7`.`2`]$ mr-jobhistory-daemon.sh stop historyserver`
`[djm@hadoop101 hadoop-`2.7`.`2`]$ yarn-daemon.sh start resourcemanager`
`[djm@hadoop101 hadoop-`2.7`.`2`]$ yarn-daemon.sh start nodemanager`
`[djm@hadoop101 hadoop-`2.7`.`2`]$ mr-jobhistory-daemon.sh start historyserver`

删除 HDFS 上曾经存在的输入文件

`[djm@hadoop101 hadoop-`2.7`.`2`]$ hdfs dfs -rm -R /user/djm/output`

执行 WordCount 程序

`[djm@hadoop101 hadoop-`2.7`.`2`]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-`2.7`.`2`.jar wordcount /user/djm/input /user/djm/output`

4.2.5 配置文件阐明

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

自定义配置文件:

core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件寄存在 $HADOOP_HOME/etc/hadoop 这个门路上,用户能够依据站长博客我的项目需要从新进行批改配置。

4.3 齐全分布式运行模式

4.3.1 编写集群散发脚本 xsync

创立 xsync

[djm@hadoop102 ~]$ mkdir bin
[djm@hadoop102 ~]$ cd bin/
[djm@hadoop102 bin]$ touch xsync
`[djm@hadoop102 bin]$ vi xsync`

在该文件中编写如下代码

#!/bin/bash

#1 获取输出参数个数,如果没有参数,间接退出

pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称

p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取下级目录到绝对路径

pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取以后用户名称

user=`whoami`

#5 循环

for((host=103; host&lt;105; host++)); do
 echo ------------------- hadoop$host --------------
 rsync -av $pdir/$fname $user@hadoop$host:$pdir
`done`

散发

`[djm@hadoop102 ~]$ xsync /opt/`**module**/**jdk1**.8.0**_144**
`[djm@hadoop102 ~]$ xsync /opt/`**module**/**hadoop**-2.7.2
`[djm@hadoop102 ~]$ xsync /etc/profile`

4.3.2 集群配置

集群部署布局

hadoop102

hadoop103

hadoop104

HDFS

NameNode、DataNode

DataNode

SecondaryNameNode、DataNode

YARN

NodeManager

ResourceManager、NodeManager

NodeManager

配置 core-site.xml

<configuration>

 _<!--_ _指定__HDFS__中__NameNode__的地址_ _-->_
 <property>
 <name>`fs.defaultFS`</name>
 <value>`hdfs://hadoop101:9000`</value>
 </property>
 _<!--_ _指定__Hadoop__运行时产生文件的存储目录_ _-->_
 <property>
 <name>`hadoop.tmp.dir`</name>
 <value>`/opt/module/hadoop-2.7.2/data/tmp`</value>
 </property>

</configuration>

配置 hadoop-env.sh

#__批改__JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_144

配置 hdfs-site.xml

<configuration>

 _<!--_ _指定__HDFS__正本的数量_ _-->_
 <property>
 <name>`dfs.replication`</name>
 <value>`3`</value>
 </property>
 _<!--_ _指定__Hadoop__辅助名称节点主机配置_ _-->_
 <property>
 <name>`dfs.namenode.secondary.http-address`</name>
 <value>`hadoop104:50090`</value>
 </property>

</configuration>

配置 yarn-env.sh

#__批改__JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_144

配置 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>

</configuration>

配置 mapred-env.sh

#__批改__JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_144

配置 mapred-site.xml

<configuration>

 _<!--_ _指定__MR__运行在__YARN__上_ _-->_
 <property>
 <name>`mapreduce.framework.name`</name>
 <value>`yarn`</value>
 </property>

</configuration>

在集群上散发配置好的 Hadoop 配置文件

`[djm@hadoop102 ~]$ xsync /opt/`**module**/**hadoop**-2.7.2/**etc**/**hadoop**/

4.3.3 集群单点启动

如果集群是第一次启动,须要格式化 NameNode

`[djm@hadoop102 hadoop-`2.7`.`2`]$ hdfs namenode -`**format**

在 hadoop102 上启动 NameNode

`[djm@hadoop102 hadoop-`2.7`.`2`]$ hadoop-daemon.sh start namenode`

在 hadoop102、hadoop103 以及 hadoop104 上别离启动 DataNode

`[djm@hadoop102 hadoop-`2.7`.`2`]$ hadoop-daemon.sh start datanode`
`[djm@hadoop103 hadoop-`2.7`.`2`]$ hadoop-daemon.sh start datanode`
`[djm@hadoop104 hadoop-`2.7`.`2`]$ hadoop-daemon.sh start datanode`

为什么三个主机来回切换占用一个 datanode?

别离查看三台主机的 VERSION 文件,发现 datanodeUuid 雷同,果决别离删除 VERSION 文件,重新启动 datanode,问题解决

4.3.4 SSH 无密登录配置

生成公钥和私钥

`[djm@hadoop102 .ssh]$ ssh-keygen -t rsa`

将公钥拷贝到要免密登录的指标机器上

`[djm@hadoop102 .ssh]$ ssh-`**copy**`-`**id** `hadoop102`
`[djm@hadoop102 .ssh]$ ssh-`**copy**`-`**id** `hadoop103`
`[djm@hadoop102 .ssh]$ ssh-`**copy**`-`**id** `hadoop104`
`[djm@hadoop103 .ssh]$ ssh-`**copy**`-`**id** `hadoop102`
`[djm@hadoop103 .ssh]$ ssh-`**copy**`-`**id** `hadoop103`
`[djm@hadoop103 .ssh]$ ssh-`**copy**`-`**id** `hadoop104`
`[djm@hadoop104 .ssh]$ ssh-`**copy**`-`**id** `hadoop102`
`[djm@hadoop104 .ssh]$ ssh-`**copy**`-`**id** `hadoop103`
`[djm@hadoop104 .ssh]$ ssh-`**copy**`-`**id** `hadoop104`

.ssh 下(~/.ssh)的文件性能解释

known_hosts

记录ssh拜访过计算机的公钥(public key)

id_rsa

生成的私钥

id_rsa.pub

生成的公钥

authorized_keys

寄存受权过得无密登录服务器公钥

4.3.5 群起集群

编写 jpsall 脚本

#!/bin/bash

# _循环_

for((host=102; host&lt;105; host++)); do

 echo `------------------- hadoop`$host `--------------`
 `ssh hadoop`$host "source /etc/profile &amp;&amp; jps" 

done

配置 slaves

hadoop102

hadoop103
`hadoop104`

同步所有节点配置文件

`[djm@hadoop102 hadoop]$ xsync slaves`

启动 HDFS

`[djm@hadoop102 hadoop-`2.7`.`2`]$ start-dfs.sh`

启动 YARN

`[djm@hadoop103 hadoop-`2.7`.`2`]$ start-yarn.sh`

启动 HistoryServer

`[djm@hadoop103 hadoop-`2.7`.`2`]$ mr-jobhistory-daemon.sh start historyserver`

查看是否启动胜利

[djm@hadoop102 hadoop-2.7.2]$ jpsall 

------------------- hadoop102 --------------

98640 Jps
3266 DataNode
3037 NameNode
3549 NodeManager

------------------- hadoop103 --------------

74929 DataNode
75258 NodeManager
39453 Jps
75054 ResourceManager

------------------- hadoop104 --------------

77123 SecondaryNameNode
76562 DataNode
76786 NodeManager
41475 Jps
`76904 JobHistoryServer`

删除文件系统上的 output 文件

`[djm@hadoop102 hadoop-`2.7`.`2`]$ hdfs dfs -rm -R /user/djm/output`

执行 MapReduce 程序

`[djm@hadoop102 hadoop-`2.7`.`2`]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-`2.7`.`2`.jar wordcount /user/djm/input /user/djm/output`

4.3.6 集群启动/进行形式总结

各个服务组件逐个启动/进行

· 别离启动/进行 HDFS 组件

`hadoop-daemon.sh` **start** `/` **stop** `namenode / datanode / secondarynamenode`

· 启动/进行 YARN

`yarn-daemon.sh` **start** `/` **stop** `resourcemanager / nodemanager`

各个模块离开启动/进行(配置 ssh 是前提)罕用

· 整体启动/进行 HDFS

start-dfs.sh / stop-dfs.sh

· 整体启动/进行 YARN

start-yarn.sh / stop-yarn.sh

4.3.7 集群工夫同步

查看是否装置了 ntp 服务

`[root@hadoop102 ~]`_# rpm -qa | grep ntp_

批改 /etc/ntp.conf

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

批改为

restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap

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

增加

server 127.127.1.0

fudge 127.127.1.0 stratum 10

批改 /etc/sysconfig/ntpd

#__同步硬件工夫

SYNC_HWCLOCK=yes

重新启动 ntpd 服务

`[root@hadoop102 ~]`_# systemctl restart ntpd_

设置ntpd服务开机启动

`[root@hadoop102 ~]`_# chkconfig ntpd on_

在其余机器配置 10 分钟与工夫服务器同步一次

`[root@hadoop102 ~]`_# crontab -e_
增加
`*`/10 * * * * /usr/sbin/ntpdate `hadoop102`