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