1 大數(shù)據(jù)概率大數(shù)據(jù)是指在一定時間內(nèi)無法用常規(guī)軟件工具進行捕捉、管理和處理的數(shù)據(jù)集合,是需要新處理模式才能具有更強的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的海量、高增長率和多樣化的信息增長。 主要解決海量的存儲和海量數(shù)據(jù)的分析計算問題。 1.1 大數(shù)據(jù)的特點Volume(大量) Velocity(高速) Variety(多樣) Value(低價值密度) 1.2 大數(shù)據(jù)應用場景物流倉儲:大數(shù)據(jù)分析系統(tǒng)助力商家精細化運營、提升銷量、節(jié)約成本。 零售:分析用戶消費習慣,為用戶購買商品提供方便,從而提升商品銷量。 旅游:深度結合大數(shù)據(jù)能力與旅游行業(yè)需求,共建旅游產(chǎn)業(yè)智慧管理、智慧服務和智慧營銷的未來。 商品推薦:根據(jù)用戶購買記錄推薦商品。 保險:海量數(shù)據(jù)挖掘及風險預測,助力保險行業(yè)精準營銷,提升精細化定價能力。 金融:多維度體現(xiàn)用戶特征,幫助金融機構推薦優(yōu)質客戶,防范欺詐風險。 房地產(chǎn):大數(shù)據(jù)全面助力房地產(chǎn)行業(yè),打造精準投策與營銷,選出更合適的地,建造更合適的樓,賣給更合適的人。 人工智能:以大數(shù)據(jù)為依托。 2 從 Hadoop 框架討論大數(shù)據(jù)生態(tài)2.1 Hadoop 是什么?Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎架構。 主要解決,海量數(shù)據(jù)的存儲和海量數(shù)據(jù)的分析計算問題。 廣義上來說,Hadoop通常是指一個更廣泛的概念——Hadoop生態(tài)圈。 2.2 Hadoop 發(fā)行版本Apache版本最原始(最基礎)的版本,對于入門學習最好。 Cloudera在大型互聯(lián)網(wǎng)企業(yè)中用的較多。 Hortonworks文檔較好。 2.3 Hadoop 的優(yōu)勢高可靠性:Hadoop 底層維護多個數(shù)據(jù)副本,所以即使 Hadoop 某個計算元素或存儲出現(xiàn)故障,也不會導致數(shù)據(jù)的丟失。 高擴展性:在集群間分配任務數(shù)據(jù),可方便的擴展數(shù)以千計的節(jié)點。 高效性:在 MapReduce 的思想下,Hadoop 是并行工作的,以加快任務處理速度。 高容錯性:能夠自動將失敗的任務重新分配。 2.4 Hadoop 組成2.4.1 HDFS架構概述NameNode(nn):存儲文件的 DataNode(dn):在本地文件系統(tǒng)存儲 Secondary NameNode(2nn):用來監(jiān)控 HDFS 狀態(tài)的輔助后臺程序,每隔一段時間獲取 HDFS 元數(shù)據(jù)的快照。 2.4.2 YARN架構概述2.4.3 MapReduce 架構概述MapReduce 將計算過程分為兩個階段:Map 和 Reduce Map 階段并行處理輸入數(shù)據(jù) Reduce 階段對 Map 結果進行匯總 2.5 大數(shù)據(jù)技術生態(tài)體系涉及的技術名詞解釋如下: 1)Sqoop:Sqoop 是一款開源的工具,主要用于在 Hadoop、Hive 與傳統(tǒng)的數(shù)據(jù)庫(MySQL)間進行數(shù)據(jù)的傳遞,可以將一個關系型數(shù)據(jù)庫中的數(shù)據(jù)導進到 Hadoop 的 HDFS 中,也可以將 HDFS 的數(shù)據(jù)導進到關系型數(shù)據(jù)庫中。 2)Flume:Flume 是 Cloudera 提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),Flume 支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時,Flume 提供對數(shù)據(jù)進行簡單處理,并寫到各種數(shù)據(jù)接受方(可定制)的能力。 3)Kafka:Kafka 是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),有如下特性: (1)通過O(1)的磁盤數(shù)據(jù)結構提供消息的持久化,這種結構對于即使數(shù)以 TB 的消息存儲也能夠保持長時間的穩(wěn)定性能。 (2)高吞吐量:即使是非常普通的硬件 Kafka 也可以支持每秒數(shù)百萬的消息。 (3)支持通過 Kafka 服務器和消費機集群來分區(qū)消息。 (4)支持 Hadoop 并行數(shù)據(jù)加載。 4)Storm:Storm 用于“連續(xù)計算”,對數(shù)據(jù)流做連續(xù)查詢,在計算時就將結果以流的形式輸出給用戶。 5)Spark:Spark 是當前最流行的開源大數(shù)據(jù)內(nèi)存計算框架,可以基于 Hadoop 上存儲的大數(shù)據(jù)進行計算。 6)Oozie:Oozie 是一個管理 Hdoop 作業(yè)(job)的工作流程調度管理系統(tǒng)。 7)Hbase:HBase 是一個分布式的、面向列的開源數(shù)據(jù)庫,HBase 不同于一般的關系數(shù)據(jù)庫,它是一個適合于非結構化數(shù)據(jù)存儲的數(shù)據(jù)庫。 8)Hive:Hive 是基于 Hadoop 的一個數(shù)據(jù)倉庫工具,可以將結構化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供簡單的 SQL查詢功能,可以將 SQL 語句轉換為 MapReduce 任務進行運行, 其優(yōu)點是學習成本低,可以通過類 SQL 語句快速實現(xiàn)簡單的 MapReduce 統(tǒng)計,不必開發(fā)專門的 MapReduce 應用,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析。 10)R語言:R 是用于統(tǒng)計分析、繪圖的語言和操作環(huán)境。R 是屬于 GNU 系統(tǒng)的一個自由、免費、源代碼開放的軟件,它是一個用于統(tǒng)計計算和統(tǒng)計制圖的優(yōu)秀工具。 11)Mahout:Apache Mahout 是個可擴展的機器學習和數(shù)據(jù)挖掘庫。 12)ZooKeeper:Zookeeper 是 Google 的 Chubby 一個開源的實現(xiàn),它是一個針對大型分布式系統(tǒng)的可靠協(xié)調系統(tǒng),提供的功能包括:配置維護、名字服務、 分布式同步、組服務等,ZooKeeper 的目標就是封裝好復雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。 3 Hadoop 運行環(huán)境搭建3.1 虛擬機環(huán)境準備關閉防火墻 # 關閉防火墻 systemctl stop firewalld # 開機禁用防火墻 systemctl disable firewalld 創(chuàng)建用戶 # 創(chuàng)建用戶 useradd djm # 修改密碼 passwd djm 配置用戶具有 root 權限 djm ALL=(ALL) NOPASSWD:ALL 在 /opt 目錄下創(chuàng)建文件夾 sudo mkdir /opt/software sudo mkdir /opt/module 3.2 安裝 JDK卸載現(xiàn)有 Java rpm -qa | grep java | xargs sudo rpm -e --nodeps 解壓到 /opt/module 目錄 tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/ 配置環(huán)境變量 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/ 配置環(huán)境變量 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 的本地庫(對數(shù)據(jù)進行壓縮解壓縮功能) sbin 目錄:存放啟動或停止 Hadoop 相關服務的腳本 share 目錄:存放 Hadoop 的依賴 jar 包、文檔、和官方案例 4 Hadoop 運行模式4.1 本地運行模式創(chuàng)建一個 input 文件夾 [djm@hadoop101 hadoop-2.7.2]$ mkdir input 將 Hadoop 的 xml 配置文件復制到 input [djm@hadoop101 hadoop-2.7.2]$ cp etc/hadoop/*.xml input 執(zhí)行 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運行時產(chǎn)生文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property> </configuration> 配置 hdfs-site.xml <configuration> <!-- 指定HDFS副本的數(shù)量 --> <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文件系統(tǒng)上創(chuàng)建input [djm@hadoop101 hadoop-2.7.2]$ hdfs dfs -mkdir -p /user/djm/input #將測試文件內(nèi)容上傳到文件系統(tǒng)上 [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,要注意什么? 當我們執(zhí)行文件系統(tǒng)格式化時,會在 NameNode 數(shù)據(jù)文件夾(即配置文件中 dfs.name.dir 在本地系統(tǒng)的路徑)中保存一個 dfs/data/current/VERSION 文件,記錄了 clusterID 和 datanodeUuid,格式化 NameNode 會產(chǎn)生新的 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獲取數(shù)據(jù)的方式 --> <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 集群操作 #刪除文件系統(tǒng)上的output文件 [djm@hadoop101 hadoop-2.7.2]$ hdfs dfs -rm -R /user/djm/output #執(zhí)行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 系統(tǒng)上。 日志聚集功能好處:可以方便的查看到程序運行詳情,方便開發(fā)調試。 <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 上已經(jīng)存在的輸出文件 [djm@hadoop101 hadoop-2.7.2]$ hdfs dfs -rm -R /user/djm/output 執(zhí)行 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 這個路徑上,用戶可以根據(jù)站長博客項目需求重新進行修改配置。 4.3 完全分布式運行模式4.3.1 編寫集群分發(fā)腳本 xsync創(chuàng)建 xsync [djm@hadoop102 ~]$ mkdir bin [djm@hadoop102 ~]$ cd bin/ [djm@hadoop102 bin]$ touch xsync [djm@hadoop102 bin]$ vi xsync 在該文件中編寫如下代碼 #!/bin/bash #1 獲取輸入?yún)?shù)個數(shù),如果沒有參數(shù),直接退出 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 循環(huán) for((host=103; host<105; host++)); do echo ------------------- hadoop$host -------------- rsync -av $pdir/$fname $user@hadoop$host:$pdir done 分發(fā) [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 集群配置集群部署規(guī)劃
配置 core-site.xml <configuration> <!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop101:9000</value> </property> <!-- 指定Hadoop運行時產(chǎn)生文件的存儲目錄 --> <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副本的數(shù)量 --> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- 指定Hadoop輔助名稱節(jié)點主機配置 --> <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獲取數(shù)據(jù)的方式 --> <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> 在集群上分發(fā)配置好的 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 文件,發(fā)現(xiàn) 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)的文件功能解釋
4.3.5 群起集群編寫 jpsall 腳本 #!/bin/bash # 循環(huán) for((host=102; host<105; host++)); do echo ------------------- hadoop$host -------------- ssh hadoop$host "source /etc/profile && jps" done 配置 slaves hadoop102 hadoop103 hadoop104 同步所有節(jié)點配置文件 [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 刪除文件系統(tǒng)上的 output 文件 [djm@hadoop102 hadoop-2.7.2]$ hdfs dfs -rm -R /user/djm/output 執(zhí)行 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 |
|