greenplum配置高可用_高可用hadoop集群配置就收藏这一篇,动手搭建Hadoop(5)
01 ssh免密安裝
02 jdk安裝
03 hadoop偽分布式安裝
04 hadoop全分布式
完成了前面四步,現(xiàn)在做hadoop的高可用。其實(shí)和之前的lvs的高可用差不多的。如果我們有兩個(gè)namenode節(jié)點(diǎn),分別是node01和node02。假設(shè)node01是主節(jié)點(diǎn),node02是從節(jié)點(diǎn),當(dāng)node01掛掉了以后,node02自動(dòng)成為主節(jié)點(diǎn)。這里通過zookeeper的方式來實(shí)現(xiàn),node01,node02都會(huì)注冊(cè)到zookeeper當(dāng)中,由zookeeper來實(shí)現(xiàn)高可用。文章有點(diǎn)長先收藏再閱讀,開始。
準(zhǔn)備
node01(192.168.146.101):namenode01 ,ZKFC,JNN(journalnode)
node02(192.168.146.102):namenode02,datanode,zookeeper,ZKFC,JNN
node03(192.168.146.103): datanode, zookeeper, JNN
node04(192.168.146.104): datanode,zookeeper,
hadoop配置修改
修改hadoop_env.sh 文件
在原來的基礎(chǔ)上指定ZKFC 和journalnode 兩個(gè)進(jìn)程的角色,這里注意我們之前用到的從節(jié)點(diǎn)sencondarynamenode現(xiàn)在用不著了,可以remark起來。
cd /usr/hadoop-3.1.2/etc/hadoop
export JAVA_HOME=/usr/java/jdk-12.0.1
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
#export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root
修改core-site.xml 文件
只用修改臨時(shí)文件的目錄即可,原來指向full現(xiàn)在建立一個(gè)新目錄指向ha
vi core-site.xml
fs.defaultFS
hdfs://node01:9820
hadoop.tmp.dir
/var/hadoop/ha
修改hdfs-site.xml 文件
由于原先所有的datanode都需要和一個(gè)namenode做關(guān)聯(lián),現(xiàn)在做高可用需要讓datanode和多個(gè)namenode做關(guān)聯(lián)。因此,需要給namenode起一個(gè)logic name。同時(shí)需要配置兩個(gè)namenode服務(wù)器(node01,node02)對(duì)應(yīng)的rpc和httpaddress的信息。兩個(gè)namenode進(jìn)行同步的配置,這里需要指定journalnode服務(wù)器的地址。以及故障轉(zhuǎn)移的代理類。
vi hdfs-site.xml
dfs.replication
3
#邏輯namenode 名字
dfs.nameservices
mycluster
#配置兩個(gè)namenode服務(wù)器
dfs.ha.namenodes.mycluster
nn1,nn2
#配置rpc的調(diào)用
dfs.namenode.rpc-address.mycluster.nn1
node01:8020
dfs.namenode.rpc-address.mycluster.nn2
node02:8020
#配置http address
dfs.namenode.http-address.mycluster.nn1
node01:9870
dfs.namenode.http-address.mycluster.nn2
node02:9870
#配置journalnode節(jié)點(diǎn)
dfs.namenode.shared.edits.dir
qjournal://node01:8485;node02:8485;node03:8485/mycluster
#配置故障轉(zhuǎn)移的調(diào)用
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
#故障隔離 當(dāng)一個(gè)從節(jié)點(diǎn)即將要成為主節(jié)點(diǎn)的時(shí)候,會(huì)通知原來的主節(jié)點(diǎn)使之成為從節(jié)點(diǎn)。
dfs.ha.fencing.methods
sshfence
#故障隔離需要的私鑰的地址
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa
#配置journalnode的存儲(chǔ)地址
dfs.journalnode.edits.dir
/var/hadoop/ha/journalnode
dfs.ha.automatic-failover.enabled
true
再回到core-site.xml文件的配置
原來配置的是一個(gè)固定的主節(jié)點(diǎn)的名字,現(xiàn)在需要使用邏輯的namenode的服務(wù)名稱,也就是我們?cè)谏厦鎕dfs-site.xml中定義的 mycluster 這個(gè)名字。以及對(duì)zookeeper集群的配置。
fs.defaultFS
hdfs://mycluster
ha.zookeeper.quorum
node02:2181,node03:2181,node04:2181
分發(fā)core-site.xml hdfs-site.xml 和 hadoop-env.sh 三個(gè)文件到其他三個(gè)服務(wù)器(node02,node03,node04)
scp core-site.xml hdfs-site.xml hadoop-env.sh node02:`pwd`
scp core-site.xml hdfs-site.xml hadoop-env.sh node03:`pwd`
scp core-site.xml hdfs-site.xml hadoop-env.sh node04:`pwd`
安裝配置zookeeper
由于我們之前定義的zookeeper的安裝是在node02,node03,node04三個(gè)服務(wù)器。所以copy下載zookeeper的安裝包。對(duì)其進(jìn)行解壓。這里我把zk放到/usr 這個(gè)目錄下面了。
tar xf zookeeper-3.4.6.tar.gz -C /usr/
配置環(huán)境變量
export ZOOKEEPER_HOME=/usr/zookeeper-3.4.6
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin
再將這個(gè)配置分發(fā)到其余的兩個(gè)服務(wù)器node03,node04
scp /etc/profile node03:/etc/profile
scp /etc/profile node04:/etc/profile
source /etc/profile
修改zoo.cfg,指定文件存放地址;并且告之參與zk集群的端口的具體信息
cd /usr/zookeeper-3.4.6/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
dataDir=/var/zookeeper
server.1=node02:2888:3888
server.2=node03:2888:3888
server.3=node04:2888:3888
分發(fā)zk到node02,node03
scp -r zookeeper-3.4.6/ node03:`pwd`
scp -r zookeeper-3.4.6/ node04:`pwd`
在三個(gè)節(jié)點(diǎn)創(chuàng)建zk的存儲(chǔ)文件
mkdir /var/zookeeper
指定每個(gè)節(jié)點(diǎn)對(duì)應(yīng)的服務(wù)器的名稱根據(jù)zoo.cfg中的定義
server.1=node02
server.2=node03
server.3=node04
所以在node02中執(zhí)行
echo 1 > /var/zookeeper/myid
所以在node03中執(zhí)行
echo 2 > /var/zookeeper/myid
所以在node04中執(zhí)行
echo 3 > /var/zookeeper/myid
啟動(dòng)zookeeper
分別在node02,node03,node04上運(yùn)行zookeeper,并且查看啟動(dòng)后的狀態(tài)。
zkServer.sh start
zkServer.sh status
可以看到node04作為leader,node02和node03都是follower。
啟動(dòng)journalnode 節(jié)點(diǎn)
我配置了三個(gè)journalnode節(jié)點(diǎn),分別是node01,node02,node03.所以在這三個(gè)節(jié)點(diǎn)分別執(zhí)行以下指令。
hdfs --daemon start journalnode
啟動(dòng)以后會(huì)在對(duì)應(yīng)的目錄下面生成存儲(chǔ)edits持久化文件的目錄。這個(gè)目錄我配置到了/var/hadoop/ha,在前面的cord-site.xml 中有說明。
針對(duì)主節(jié)點(diǎn),node01,node02 進(jìn)行namenode的格式化。這里我們選擇node01進(jìn)行格式化,然后啟動(dòng)namenode做為主節(jié)點(diǎn)。再到node02上面去同步node01上面的數(shù)據(jù),這樣node01是active node02是standby,node02上面同步了node01的namenode的數(shù)據(jù),一旦node01無法使用了,node02會(huì)變成active狀態(tài)接替node01的工作。
node01操作
hdfs namenode -format
hdfs --daemon start namenode
node02操作
hdfs namenode -bootstrapStandby
這樣node02就把node01的namenode數(shù)據(jù)同步過來了。
可以到 /var/hadoop/ha/dfs/name 下面的VERSION文件中檢查兩個(gè)節(jié)點(diǎn)的clusterID是否相同。
初始化zookeeper
zookeeper需要注冊(cè)兩個(gè)主從節(jié)點(diǎn),node01,node02.注冊(cè)以后當(dāng)一個(gè)節(jié)點(diǎn)服務(wù)down機(jī)或者和zookeeper失去聯(lián)系了,那么另外一個(gè)節(jié)點(diǎn)就會(huì)接替主節(jié)點(diǎn)的位置成為active狀態(tài)。
ps:可以通過 zkCli.sh 命令打開zookeeper客戶端查看zookeeper情況。
node01上運(yùn)行
hdfs zkfc -formatZK
啟動(dòng)hadoop集群
到node01節(jié)點(diǎn)上啟動(dòng)集群
start-dfs.sh
運(yùn)行完命令以后打開zookeeper客戶端,查看
zkCli.sh
ls /hadoop-ha/mycluster
我們看到在myclusert這個(gè)集群下面多了兩個(gè)節(jié)點(diǎn),這兩個(gè)節(jié)點(diǎn)就是zookeeper注冊(cè)的主從節(jié)點(diǎn),node01,node02。可以通過以下命令查看兩個(gè)節(jié)點(diǎn)的狀態(tài)。
get /hadoop-ha/mycluster/ActiveBreadCrumb
get /hadoop-ha/mycluster/ActiveStandbyElectorLock
測(cè)試高可用效果
去網(wǎng)站看看結(jié)果。在瀏覽器輸入192.168.146.101:9870 和 192.168.146.102:9870
node01是active,node02是standby
然后把node01的namenode關(guān)掉。
到node01節(jié)點(diǎn)上運(yùn)行
hdfs --daemon stop namenode
可以看到node01無法訪問了,這個(gè)時(shí)候node02成為active狀態(tài),依舊可以提供訪問。
到此hadoop高可用的配置和啟動(dòng)過程就完畢了。
總結(jié)
以上是生活随笔為你收集整理的greenplum配置高可用_高可用hadoop集群配置就收藏这一篇,动手搭建Hadoop(5)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: list按照某个字段排序_恕我直言你可能
- 下一篇: mysql5.7是测试版本吗_mysql