環(huán)境準(zhǔn)備:
1.準(zhǔn)備5臺(tái)vm曙旭,用centos做個(gè)鏡像后勇婴,克隆其他4臺(tái)
2.jdk安裝
3./etc/hosts 文件配置多臺(tái)主機(jī)名映射關(guān)系儒鹿,需要保證各節(jié)點(diǎn)完全一致
4.啟動(dòng)zookeeper集群
集群規(guī)劃治理:
其中芙沥,在01,02上部署namenode,02standby皮仁,03-05部署datanode魂爪。01,02上部署yarn的resource manager哩盲,且互為主備前方。yarn和hdfs的ha依賴于先前在01-03上部署的zk集群
集群搭建
1、使用hadoop用戶解壓并安裝到apps路徑下
1.1使用hadoop用戶進(jìn)入到在/home/hadoop/apps目錄下
cd /home/hadoop/apps
注意:如果沒(méi)有/home/hadoop/apps路徑廉油,自行在/home/hadoop路徑下創(chuàng)建apps文件夾:mkdir /home/Hadoop/apps
1.2使用rz將本機(jī)的hadoop安裝包上傳到/home/hadoop/apps目錄下
1.3解壓安裝文件
tar -zxvf hadoop-2.7.4.tar.gz
1.4使用root用戶創(chuàng)建軟鏈接
ln -s /home/hadoop/apps/hadoop-2.7.4 /usr/local/hadoop
1.5使用root用戶修改軟鏈接屬主
chown -R hadoop:hadoop /usr/local/hadoop
1.6使用root用戶將hadoop相關(guān)內(nèi)容添加到環(huán)境變量中
注意:Hadoop配置文件路徑是/usr/local/hadoop/etc/hadoop
vim /etc/profile
添加內(nèi)容如下:
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_HOME=$HADOOP_HOME
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
1.7使用root用戶重新編譯環(huán)境變量使配置生效
source /etc/profile
2. 配置HDFS
2.1使用hadoop用戶進(jìn)入到Hadoop配置文件路徑
? ? cd /usr/local/hadoop/etc/hadoop
2.2修改hadoo-env.sh
修改JDK路徑export JAVA_HOME=/usr/local/jdk
2.3 配置core-site.xml
2.4 配置hdfs-site.xml
主要包括NameNode HA配置惠险,JournalNode配置,namenode高可用主備切換配置和dfs文件屬性設(shè)置
3. 配置YARN
3.1 修改yarn-site.xml
開(kāi)啟RM高可用娱两,指定RM的名字莺匠,地址。指定zookeeper集群地址十兢。NodeManager上運(yùn)行的附屬服務(wù)aux-services趣竣,需配置成mapreduce_shuffle,才可運(yùn)行MapReduce程序
3.2 修改mapred-site.xml
歷史日志服務(wù)jobhistory相關(guān)配置
3.3 在/usr/local/hadoop路徑下創(chuàng)建hdpdata文件夾
cd /usr/local/hadoop
mkdir hdpdata
4. 修改slaves文件旱物,設(shè)置datanode和nodemanager啟動(dòng)節(jié)點(diǎn)主機(jī)名稱
在slaves文件中添加節(jié)點(diǎn)的主機(jī)名稱
hadoop03
hadoop04
hadoop05
注意:hadoop03遥缕,hadoop04,hadoop05是我的虛擬機(jī)主機(jī)名稱宵呛,在這三臺(tái)機(jī)器上啟動(dòng)datanode和nodemanager单匣,根據(jù)自己集群主機(jī)名稱情況自行修改。
5. 配置hadoop用戶免密碼登陸
配置hadoop01到hadoop01宝穗、hadoop02户秤、hadoop03、hadoop04逮矛、hadoop05的免密碼登陸
在hadoop01上生產(chǎn)一對(duì)鑰匙
ssh-keygen -t rsa
將公鑰拷貝到其他節(jié)點(diǎn)鸡号,包括自己本機(jī)
ssh-copy-id -i hadoop01
ssh-copy-id -i hadoop02
ssh-copy-id -i hadoop03
ssh-copy-id -i hadoop04
ssh-copy-id -i hadoop05
配置hadoop02到hadoop01、hadoop02须鼎、hadoop03鲸伴、hadoop04、hadoop05的免密碼登陸
在hadoop02上生產(chǎn)一對(duì)鑰匙
ssh-keygen -t rsa
將公鑰拷貝到其他節(jié)點(diǎn)晋控,包括自己本機(jī)
ssh-copy-id -i hadoop01
ssh-copy-id -i hadoop02
ssh-copy-id -i hadoop03
ssh-copy-id -i hadoop04
ssh-copy-id -i hadoop05
注意:兩個(gè)namenode之間要配置ssh免密碼登陸
6. 將配置好的hadoop拷貝到其他節(jié)點(diǎn)
scp -r hadoop-2.7.4 hadoop@hadoop02:/home/hadoop/apps
scp -r hadoop-2.7.4 hadoop@hadoop03:/home/hadoop/apps
scp -r hadoop-2.7.4 hadoop@hadoop04:/home/hadoop/apps
scp -r hadoop-2.7.4 hadoop@hadoop05:/home/hadoop/apps
在每個(gè)節(jié)點(diǎn)分別執(zhí)行如下四步操作
第一步:使用root用戶創(chuàng)建軟鏈接
ln -s /home/hadoop/apps/hadoop-2.7.4 /usr/local/hadoop
第二步:使用root用戶修改軟鏈接屬主
chown -R hadoop:hadoop /usr/local/hadoop
第三步:使用root用戶添加環(huán)境變量
vim /etc/profile
添加內(nèi)容:
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_HOME=$HADOOP_HOME
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
第四步:使用root用戶重新編譯環(huán)境變量使配置生效
source /etc/profile
集群?jiǎn)?dòng)步驟
(注意使用hadoop用戶啟動(dòng)汞窗,嚴(yán)格按照順序啟動(dòng))
su hadoop
1. 啟動(dòng)journalnode(分別在hadoop03、hadoop04赡译、hadoop05上執(zhí)行啟動(dòng))
/usr/local/hadoop/sbin/hadoop-daemon.sh start journalnode
運(yùn)行jps命令檢驗(yàn)仲吏,hadoop03、hadoop04、hadoop05上多了JournalNode進(jìn)程
2. 格式化HDFS
在hadoop01上執(zhí)行命令:
hdfs namenode -format
格式化成功之后會(huì)在core-site.xml中的hadoop.tmp.dir指定的路徑下生成dfs文件夾蜘矢,將該文件夾拷貝到hadoop02的相同路徑下
scp -r hdpdata hadoop@hadoop02:/usr/local/hadoop
3. 在hadoop01上執(zhí)行格式化ZKFC操作
hdfs zkfc -formatZK
執(zhí)行成功狂男,日志輸出如下信息
INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/ns in ZK
4. 在hadoop01上啟動(dòng)HDFS
sbin/start-dfs.sh
5. 在hadoop02上啟動(dòng)YARN
sbin/start-yarn.sh
在hadoop01單獨(dú)啟動(dòng)一個(gè)ResourceManger作為備份節(jié)點(diǎn)
sbin/yarn-daemon.sh start resourcemanager
6. 在hadoop02上啟動(dòng)JobHistoryServer
sbin/mr-jobhistory-daemon.sh start historyserver
啟動(dòng)完成node02會(huì)增加一個(gè)JobHistoryServer進(jìn)程
7. hadoop安裝啟動(dòng)完成
HDFS HTTP訪問(wèn)地址
NameNode (active):http://192.168.75.150:50070
NameNode (standby):http://192.168.75.151:50070
ResourceManager HTTP訪問(wèn)地址
ResourceManager :http://192.168.75.151:8088
歷史日志HTTP訪問(wèn)地址
JobHistoryServer:http://192.168.75.151:19888
集群驗(yàn)證
1. 驗(yàn)證HDFS 是否正常工作及HA高可用
首先向hdfs上傳一個(gè)文件
hadoop fs -put /usr/local/hadoop/README.txt /
在active節(jié)點(diǎn)手動(dòng)關(guān)閉active的namenode
sbin/hadoop-daemon.sh stop namenode
通過(guò)HTTP 50070端口查看standby namenode的狀態(tài)是否轉(zhuǎn)換為active
手動(dòng)啟動(dòng)上一步關(guān)閉的namenode
sbin/hadoop-daemon.sh start namenode
此時(shí)發(fā)現(xiàn)node01切為standby狀態(tài)
2.驗(yàn)證YARN是否正常工作及ResourceManager HA高可用
運(yùn)行測(cè)試hadoop提供的demo中的WordCount程序:
hadoop fs -mkdir /wordcount
hadoop fs -mkdir /wordcount/input
hadoop fs -mv /README.txt /wordcount/input
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar wordcount /wordcount/input? /wordcount/output
驗(yàn)證ResourceManager HA
手動(dòng)關(guān)閉node02的ResourceManager
sbin/yarn-daemon.sh stop resourcemanager
通過(guò)HTTP 8088端口訪問(wèn)node01的ResourceManager查看狀態(tài)
手動(dòng)啟動(dòng)node02 的ResourceManager
sbin/yarn-daemon.sh start resourcemanager