安裝好虛擬機後設置好靜態IP(192.168.126.120
,設置DNS),hostname
,執行yum update
更新軟件html
這裏因爲進行了規劃,因此提早設置了hosts
,防止ping hostname
的時候不一樣node
安裝vim
,在/usr/lib/jvm
目錄安裝好jdk1.8.0_212
,並配置/etc/profile
文件vim
建立hadoop
用戶並配置hadoop
用戶具備root
權限centos
在根目錄"/"建立/data/hadoop/tmp用於存儲hadoop的數據瀏覽器
mkdir -P /data/hadoop/tmp
虛擬機2的IP:192.168.126.122,hostname:hadoop-node2bash
虛擬機3的IP:192.168.126.123,hostname:hadoop-node3服務器
在/home/hadoop目錄下建立bin目錄,並在bin目錄下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=2; host<4; host++)); do echo ------------------- hadoop-node$host -------------- rsync -rvl $pdir/$fname $user@hadoop-node$host:$pdir done
修改腳本xsync
具備執行權限chmod 777 xsync
ssh
注意:若是將xsync
放到/home/hadoop/bin
目錄下仍然不能實現全局使用,能夠將xsync
移動到/usr/local/bin
目錄下。jvm
在/opt/module下建立hadoop目錄,使用ftp同步下載的hadoop2.7.2並解壓,而且將/opt/module/hadoop
所屬用戶和所屬組更改成hadoop
chown hadoop:hadoop -R /opt/module/hadoop
並配置/etc/profile
文件,而且執行source /etc/profile
當即生效
hadoop的配置文件都在/opt/module/hadoop/hadoop2.7.2/etc下面
[hadoop@hadoop-node1 hadoop]$ vim core-site.xml
在該文件中編寫以下配置
<!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop-node1:9000</value> </property> <!-- 指定Hadoop運行時產生文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/data/hadoop/tmp</value> </property>
[hadoop@hadoop-node1 hadoop]$ vim hadoop-env.sh export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_212
配置hdfs-site.xml
[hadoop@hadoop-node1 hadoop]$ vim hdfs-site.xml
在該文件中編寫以下配置
<property> <name>dfs.replication</name> <value>3</value> </property> <!-- 指定Hadoop輔助名稱節點主機配置 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop-node3:50090</value> </property>
[hadoop@hadoop-node1 hadoop]$ vim yarn-env.sh export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_212
配置yarn-site.xml
[hadoop@hadoop-node1 hadoop]$ vim yarn-site.xml
在該文件中增長以下配置
<!-- Reducer獲取數據的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop-node3</value> </property>
[hadoop@hadoop-node1 hadoop]$ vim mapred-env.sh export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_212
配置mapred-site.xml
[hadoop@hadoop-node1 hadoop]$ cp mapred-site.xml.template mapred-site.xml [hadoop@hadoop-node1 hadoop]$ vim mapred-site.xml
在該文件中增長以下配置
<!-- 指定MR運行在Yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
至此,hadoop集羣所須要修改的配置文件都修改完成了
[hadoop@hadoop-node1 hadoop]$ xsync /opt/module/hadoop/hadoop-2.7.2/
這樣啓動方式仍是比較麻煩的,在下一節會使用羣起集羣的功能
若是集羣是第一次啓動,須要格式化****NameNode
[hadoop@hadoop-node1 tmp]$ hdfs namenode -format
在hadoop-node1上啓動NameNode
[hadoop@hadoop-node1 hadoop-2.7.2]$ hadoop-daemon.sh start namenode [hadoop@hadoop-node1 hadoop-2.7.2]$ jps 3461 NameNode
在hadoop-node一、hadoop-node2以及hadoop-node3上分別啓動DataNode
[hadoop@hadoop-node1 tmp]$ hadoop-daemon.sh start datanode [hadoop@hadoop-node1 tmp]$ jps 3461 NameNode 3608 Jps 3561 DataNode [hadoop@hadoop-node2 tmp]$ hadoop-daemon.sh start datanode [hadoop@hadoop-node2 tmp]$ jps 3190 DataNode 3279 Jps [hadoop@hadoop-node3 tmp]$ hadoop-daemon.sh start datanode [hadoop@hadoop-node3 tmp]$ jps 3237 Jps 3163 DataNode
啓動報錯:若是啓動DataNode時報錯:Initialization failed for Block pool (Datanode Uuid unassigned)
是由於namenode和datanode的clusterID不一致致使datanode沒法啓動。刪除data、tmp、namenode 數據後,從新格式化便可。
[hadoop@hadoop-node3 hadoop]$rm -rf tmp [hadoop@hadoop-node3 hadoop]$mkdir tmp
6.配置集羣羣起功能
6.1SSH無密登陸配置
在hadoop-node1生成公鑰是密鑰
[hadoop@hadoop-node1 hadoop]$ ssh-keygen -t rsa
而後敲(三個回車),就會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)
將公鑰拷貝到要免密登陸的目標機器上
[hadoop@hadoop-node1 .ssh]$ ssh-copy-id hadoop-node1 [hadoop@hadoop-node1 .ssh]$ ssh-copy-id hadoop-node2 [hadoop@hadoop-node1 .ssh]$ ssh-copy-id hadoop-node3
一樣的操做,須要在hadoop-node二、hadoop-node3機器上執行ssh免密設置。
.ssh文件夾下(~/.ssh)的文件功能解釋
6.2羣起集羣配置
配置slaves
[hadoop@hadoop-node1 hadoop]$ vim /opt/module/hadoop/hadoop-2.7.2/etc/hadoop/slaves
在該文件中增長以下內容:
hadoop-node1 hadoop-node2 hadoop-node3
注意:該文件中添加的內容結尾不容許有空格,文件中不容許有空行。
同步全部節點配置文件
[hadoop@hadoop-node1 hadoop]$ xsync slaves
6.3啓動集羣
若是集羣是第一次啓動,須要格式化NameNode(注意格式化以前,必定要先中止上次啓動的全部namenode和datanode進程,而後再刪除data和log數據)
[hadoop@hadoop-node1 hadoop-2.7.2]$ bin/hdfs namenode -format
啓動HDFS
[hadoop@hadoop-node1 hadoop-2.7.2]$ sbin/start-dfs.sh [hadoop@hadoop-node1 hadoop-2.7.2]$ jps 4166 NameNode 4482 Jps 4263 DataNode [hadoop@hadoop-node2 hadoop-2.7.2]$ jps 3218 DataNode 3288 Jps [hadoop@hadoop-node3 hadoop-2.7.2]$ jps 3221 DataNode 3283 SecondaryNameNode 3364 Jps
啓動YARN
[hadoop@hadoop-node2 hadoop-2.7.2]$ sbin/start-yarn.sh
注意:NameNode和ResourceManger若是不是同一臺機器,不能在NameNode上啓動 YARN,應該在ResouceManager所在的機器上啓動YARN。
Web端查看SecondaryNameNode
(a)瀏覽器中輸入:http://hadoop-node3:50090/status.html
[hadoop@hadoop-node1 data]$ hdfs dfs -mkdir -p /user/lyt/input [hadoop@hadoop-node1 data]$ hdfs dfs -put wcinput/wc.input /user/lyt/input
(1)分別啓動/中止HDFS組件
hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode
(2)啓動/中止YARN
yarn-daemon.sh start / stop resourcemanager / nodemanager
(1)總體啓動/中止HDFS
start-dfs.sh / stop-dfs.sh
(2)總體啓動/中止YARN
start-yarn.sh / stop-yarn.sh
(1)檢查ntp是否安裝
[root@hadoop-node1 hadoop]# rpm -qa|grep ntp ntp-4.2.6p5-10.el6.centos.x86_64 fontpackages-filesystem-1.41-1.1.el6.noarch ntpdate-4.2.6p5-10.el6.centos.x86_64
若是沒有安裝,執行yum安裝便可
[root@hadoop-node1 hadoop]#yum -y install ntp [root@hadoop-node1 hadoop]#systemctl enable ntpd [root@hadoop-node1 hadoop]#systemctl start ntpd
(2)修改ntp配置文件
[root@hadoop-node1 hadoop]# vim /etc/ntp.conf
修改內容以下
a)修改1
取消註釋,大約在17行(受權192.168.126.0-192.168.126.255網段上的全部機器能夠從這臺機器上查詢和同步時間)
#restrict 192.168.126.0 mask 255.255.255.0 nomodify notrap爲 restrict 192.168.126.0 mask 255.255.255.0 nomodify notrap
b)修改2
註釋掉配置,大約在21-24行(集羣在局域網中,不使用其餘互聯網上的時間)
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
c)添加3
文件末尾添加(當該節點丟失網絡鏈接,依然能夠採用本地時間做爲時間服務器爲集羣中的其餘節點提供時間同步)
server 127.127.1.0 fudge 127.127.1.0 stratum 10
(3)修改/etc/sysconfig/ntpd 文件
[root@hadoop-node1 hadoop]# vim /etc/sysconfig/ntpd
增長內容以下(讓硬件時間與系統時間一塊兒同步)
SYNC_HWCLOCK=yes
(4)從新啓動ntpd服務
[root@hadoop-node1 hadoop]# service ntpd status ntpd 已停 [root@hadoop-node1 hadoop]# service ntpd start 正在啓動 ntpd: [肯定]
(5)設置ntpd服務開機啓動
[root@hadoop-node1 hadoop]# chkconfig ntpd on
(1)在其餘機器配置10分鐘與時間服務器同步一次
[root@hadoop-node2 hadoop]# crontab -e
編寫定時任務以下:
*/10 * * * * /usr/sbin/ntpdate hadoop-node1
(2)修改任意機器時間
[root@hadoop-node2 hadoop]# date -s "2019-9-17 11:11:11"
(3)十分鐘後查看機器是否與時間服務器同步
[root@hadoop-node2 hadoop]# date
說明:測試的時候能夠將10分鐘調整爲1分鐘,節省時間。