注意:在此之前zookeeper要配置好
1.首先我們修改core-site.xml檔案:
(1)指定hdfs的nameservice為mycluster:
fs.defaultfs
hdfs://mycluster
(2)指定hadoop臨時目錄
hadoop.tmp.dir
/home/master/hadoopdata
注意:這個檔案是儲存元資料的,之後會把這個資料夾傳送給另乙個namenode所在的機器。
ha.zookeeper.quorum
sparkking-master:2181,sparkking-salve:2181,sparkking-salve02:2181
(4)指定journalnode臨時目錄存放位址
dfs.journalnode.edits.dir
/home/master/journal/node/local/data
這個位置要自己建立
2.配置hdfs-site.xml
(1)指定hdfs的nameserverice為mycluster,這裡需要和core-site.xml檔案中保持一致
dfs.nameservices
mycluster
(2)mycluster下面有兩個namenode,分別是nn1,nn2
(5)指定namenode的edits元資料在journalnode上的的存放位置
dfs.namenode.shared.edits.dir
qjournal://sparkking-master:8485;sparkking-salve:8485;sparkking-salve02:8485/mycluster
(6)指定journalnode在本地磁碟存放資料的位置
dfs.journalnode.edits.dir
/home/master/journaldata/
注意:這個目錄也需要自己建立
(7)開啟namenode失敗自動切換:
dfs.ha.automatic-failover.enabled
true
(8)配置失敗自動切換實現方式:
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.configuredfailoverproxyprovider
(9)配置隔離機制方法,多個機制用換行分割,即每個機器暫用一行:
dfs.ha.fencing.methods
sshfence
(10)使用sshfence隔離機制時需要ssh免密登入:
3.執行:
注意:嚴格按照下面的目錄!
(1)分別在三颱機器上啟動zookeeper集群,命令是zkserver.sh start;
(2)分別在三颱機器上手動啟動journalnode,命令是hadoop-daemon.sh start journalnode;
(3)格式化namenode,命令是hdfs namenode -initializesharededits;
(4)將元資料傳送給將要接管namenode的機器,我這裡就傳送給了sparkking-salve這台機器;
(5)格式化zkfc,命令是hdfs zkfc -formatzk;
(6)啟動hdfs,命令是statr-all.sh;
這裡的狀態是active,另一台機器的50070是standby狀態,將active狀態的namenode用kill殺死,檢視standby namenode的狀態是否會轉換成active 狀態,是就成功了。
HDFS的HA 高可用
問題 namenode是單節點的,容易發生單點故障。在hadoop2.x之後,可以部署兩個namenode,乙個active 活躍的 另外乙個是standby 備份的 如果要實現這種高可用,需要解決兩個問題 1.資料的同步 資料的同步包括兩部分 靜態資料和動態資料,靜態資料是指元資料資訊 塊名稱,大...
cloud 搭建eureka高可用HA
不需要拉取服務列表 register with eureka false server服務不用註冊 後面的cloud eureka beta和cloud eureka omega檔案類似 注意,如果將eureka.instance.hostname換成 ip 或者是 localhost,是不會成功的...
簡單可用好實現的 HA 高可用設計
一台資料庫用以記錄,如 mysql redis mongodb 等。關鍵是設計中的思想,用啥資料庫都行。在資料庫中,存一張表,結構如下 列名說明 id自增數字,nosql的話想實現也不難 instance starttime 例項啟動時間 heartbeat 心跳時間 現以2個例項組成的cluste...