HA高可用完全分布式集群 HDFS搭建
在Hadoop2.X之前,Namenode是HDFS集群中可能發(fā)生單點故障的節(jié)點,每個HDFS集群只有一個namenode,一旦這個節(jié)點不可用,則整個HDFS集群將處于不可用狀態(tài)。
HDFS高可用(HA)方案就是為了解決上述問題而產(chǎn)生的,在HA HDFS集群中會同時運行兩個Namenode,一個作為活動的Namenode(Active),一個作為備份的Namenode(Standby)。備份的Namenode的命名空間與活動的Namenode是實時同步的,所以當活動的Namenode發(fā)生故障而停止服務時,備份Namenode可以立即切換為活動狀態(tài),而不影響HDFS集群服務。
下面是大家過程,我將整個過程分步詳細整理了,這樣能夠更詳細的展示。
| hadoop01 | QuorumPeerMain、NameNode、DataNode、JournalNode、ResourceManager、NodeManager、DFSZKFailoverController、 |
| hadoop02 | QuorumPeerMain、NameNode、DataNode、JournalNode、DFSZKFailoverController 、NodeManager |
| hadoop03 | QuorumPeerMain、DataNode、JournalNode、NodeManager |
1、設置靜態(tài)IP
設置靜態(tài)IP
https://blog.csdn.net/weixin_42119153/article/details/100124300#commentBox
2、安裝jdk
安裝jdk
https://blog.csdn.net/weixin_42119153/article/details/100125845
3、設置ssh無密碼登錄
普通hdfs集群實現(xiàn)鏈接里面的一臺虛擬機(master即namenode所在機器)無密碼登錄其他虛擬機就可以,
搭建HA高可用需要其他的namenode所在機器也能夠無密碼登錄其他虛擬機,所以要在另一臺namenode上都重復下面的操作
設置ssh無密碼登錄
https://blog.csdn.net/weixin_42119153/article/details/100126037
4、安裝zookeeper
1)新建zookeeper安裝目錄
[hadoop@hadoop01 app]$ mkdir zookeeper2)將下載的安裝包上傳至目錄下并解壓
[hadoop@hadoop01 zookeeper]$ tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz3)修該解壓后的目錄便于使用
[hadoop@hadoop01 zookeeper]$ mv apache-zookeeper-3.5.5-bin zookeeper3.5
4)在當前目錄新建zkdata目錄
5)在zkdata目錄新建myid文件并輸入數(shù)據(jù)1
[hadoop@hadoop01 zkdata]$ vi myid
6)復制配置文件zoo_sample.cfg為zoo.cfg并編輯
修改其中dataDir路徑為zhdata并添加server
dataDir=/home/app/zookeeper/zkdata server.1=192.168.146.210:2888:3888 server.2=192.168.146.211:2888:3888 server.3=192.168.146.212:2888:3888上述三個server地址即三臺虛擬機ip,第一個端口2888為QuorumPeerMain服務端口,3888端口為leader選舉端口。
7)將整個zookeeper文件加scp到其他兩臺虛擬機同樣位置,并分別修改myid文件內容為2,3
8)因為三臺虛擬機的zookeeper都需要啟動,為了方便我們寫在bin目錄下一個啟動三臺虛擬機的shell腳本start-ZK.sh
9)在bin目錄下執(zhí)行start-ZK.sh腳本,啟動zookeeper集群
使用jps查看啟動狀態(tài):
三臺機器均啟動成功,zookeeper安裝配置完畢。
5、安裝hadoop
1、解壓hadoop-2.7.7.tar.gz
1)將下載的hadoop-2.7.7.tar.gz上傳至/home/hadoop 目錄
2)解壓
解壓完成:
3)使用 root 用戶配置 hadoop 環(huán)境變量(三臺機器都要配置)
使配置生效
4)配置hosts映射(三臺機器都要配置)
[root@hadoop01 hadoop2.7]# vi /etc/hosts2、配置 hadoop 文件中相應的文件
這里使用的是hadoop用戶
需要配置的文件如下,core-site.xml、hadoop-env.sh、hdfs-site.xml、mapred-site.xml、yarn-site.xml 所有的文件配置均位于hadoop2.7.1/etc/hadoop下面,具體需要的配置如下:
1) 配置core-site.xml
在/home/hadoop/app/hdfs/hadoop/hadoop-2.7.7/ 目錄下新建文件夾tmp
注意:hadoop.tmp.dir是hadoop 文件系統(tǒng)依賴的配置文件。 默認是在 /tmp 目錄下的,而這個目錄下的文件,在Linux系統(tǒng)中,重啟之后,很多都會被清空。所以我們要手動指定這寫文件的保存目錄。
這個目錄路徑要么不存在,hadoop啟動的時候會自動幫我們創(chuàng)建;要么是一個空目錄,不然在啟動的時候會報錯。
2)配置hadoop-env.sh
[hadoop@hadoop01 hadoop]$ vi hadoop-env.sh設置 JAVA_HOME 為自己在系統(tǒng)中安裝的 JDK 目錄
3)配置hdfs-site.xml
4)配置mapred-site.xml
<configuration> <property><name>mapreduce.framework.name</name><value>yarn</value> </property><property><name>mapreduce.jobhistory.address</name><value>hadoop01:10020</value> </property><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop01:19888</value></property></configuration>5)配置yarn-site.xml
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value> </property><property><name>yarn.resourcemanager.address</name><value>hadoop01:8032</value> </property><property><name>yarn.resourcemanager.scheduler.address</name><value>hadoop01:8030</value> </property><property><name>yarn.log-aggregation-enable</name><value>true</value> </property><property><name>yarn.resourcemanager.resource-tracker.address</name><value>hadoop01:8031</value></property><property><name>yarn.resourcemanager.admin.address</name><value>hadoop01:8033</value></property><property><name>yarn.resourcemanager.webapp.address</name><value>hadoop01:8088</value> </property><!-- 開啟RM高可用 --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 指定RM的cluster id --> <property><name>yarn.resourcemanager.cluster-id</name><value>yrc</value> </property><!-- 指定RM的名字 --> <property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value> </property><!-- 分別指定RM的地址 --> <property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop01</value> </property><property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop02</value></property><!-- 分別指定RM的網(wǎng)絡通信地址 --><property><name>yarn.resourcemanager.webapp.address.rm1</name><value>hadoop01:8088</value> </property> <!-- 分別指定RM的網(wǎng)絡通信地址 --> <property><name>yarn.resourcemanager.webapp.address.rm2</name><value>hadoop02:8088</value> </property><!-- 指定zk集群地址 --><property><name>yarn.resourcemanager.zk-address</name><value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value></property> </configuration>6)配置/etc/hadoop目錄下的slaves,刪除默認的localhost,增加3個從節(jié)點
[hadoop@hadoop01 hadoop]$ vi slaves3、將配置好的 hadoop 文件上傳給其它兩臺機器
[hadoop@hadoop01 hadoop]$ scp -r hadoop-2.7.7/ hadoop@hadoop03:/home/hadoop/app/hdfs/hadoop [hadoop@hadoop01 hadoop]$ scp -r hadoop-2.7.7/ hadoop@hadoop02:/home/hadoop/app/hdfs/hadoop4、啟動 hadoop
1)啟動zk(三臺)
因為沒有配置zookeeper得環(huán)境變量,我把之前寫的zookeeper得啟動腳本放在hadoop啟動腳本目錄中,方便一起啟用:
需要修改腳本權限為 755
啟動zookeeper
jps查看進程
2)啟動journalnode服務(三臺)
[hadoop@hadoop01 bin]$ hadoop-daemon.sh start journalnodejps查看
3)挑選兩個namenode之中的一臺來格式化
[hadoop@hadoop01 hadoop]$ hdfs namenode -format4)然后啟動namenode
[hadoop@hadoop01 hadoop]$ hadoop-daemon.sh start namenode5)在另一臺namenode的機子上拉取元數(shù)據(jù)
[hadoop@hadoop02 hadoop]$ hdfs namenode -bootstrapStandby
6)格式化zkfc(在兩個namenode節(jié)點)
7)啟動集群
jps查看
完成安裝!!!
注: 以后啟動只需要執(zhí)行start-ZK.sh 和 start-all.sh 即可!!!
總結
以上是生活随笔為你收集整理的HA高可用完全分布式集群 HDFS搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 泰山游客爆满!从山脚堵到山顶 网友:熟悉
- 下一篇: 因航班延误缺考复试 考研生崩溃大哭称对不