1筒愚、HDFS HA 配置主要涉及幾點
1)多NameNode配置修己,唯一為active恢总,其他為standby
2)多個NameNode對EditLogs文件的共享:JournalNode
3)fence:任意時刻只能僅有一臺NameNode向外提供服務
4)NameNode在client的proxy
2、按照官方文檔步驟一步一步來操作
1)配置hdfs-site.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<!-- secondary namenode 進程運行服務器 -->
<!--
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>luozheng.bigdata2:9868</value>
</property>
-->
<!-- 配置新的nameservices邏輯名稱 -->
<property>
<name>dfs.nameservices</name>
<value>luozhengcluster</value>
</property>
<!-- 配置所有的NameNode睬愤,官方推薦NameNode節(jié)點數(shù)量最少為2個片仿,最好是3個,不要超過5個尤辱, -->
<property>
<name>dfs.ha.namenodes.luozhengcluster</name>
<value>nn1,nn2,nn3</value>
</property>
<!-- 配置NameNode RPC地址 -->
<property>
<name>dfs.namenode.rpc-address.luozhengcluster.nn1</name>
<value>luozheng.bigdata:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.luozhengcluster.nn2</name>
<value>luozheng.bigdata1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.luozhengcluster.nn3</name>
<value>luozheng.bigdata2:8020</value>
</property>
<!-- 配置NameNode HTTP訪問地址 -->
<property>
<name>dfs.namenode.http-address.luozhengcluster.nn1</name>
<value>luozheng.bigdata:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.luozhengcluster.nn2</name>
<value>luozheng.bigdata1:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.luozhengcluster.nn3</name>
<value>luozheng.bigdata2:9870</value>
</property>
<!-- 共享editlogs存放節(jié)點砂豌,以供Active NameNode Write和Standby NameNode Read -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://luozheng.bigdata:8485;luozheng.bigdata1:8485;luozheng.bigdata2:8485/luozhengcluster</value>
</property>
<!-- NameNode proxy -->
<property>
<name>dfs.client.failover.proxy.provider.luozhengcluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- NameNode隔離機制,這里采用ssh方式光督,采用這種方式要注意的地方奸鸯,就是任意一個NameNode都能免密登錄到其他所有NameNode -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/luozheng/.ssh/id_rsa</value>
</property>
</configuration>
2)配置core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<!-- namenode 服務器地址配置 -->
<!--
<property>
<name>fs.defaultFS</name>
<value>hdfs://luozheng.bigdata:9000</value>
</property>
-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://luozhengcluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/luozheng/tools/hadoop-3.0.1/data/journal</value>
</property>
<!-- 臨時文件存儲地址 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/luozheng/tools/hadoop-3.0.1/data/tmp</value>
</property>
<!-- 配置垃圾回收站中文件保存時間-->
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>
<!-- 配置讀寫文件緩沖區(qū)大小 -->
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
</configuration>
3)啟動步驟
3.0)通過以下命令把相關文件同步到其他節(jié)點上
scp -r etc/ data/ luozheng@luozheng.bigdata1:/home/luozheng/tools/hadoop-3.0.1/
scp -r etc/ data/ luozheng@luozheng.bigdata2:/home/luozheng/tools/hadoop-3.0.1/
3.1)通過以下命令依次啟動所有journalnode守護進程
bin/hdfs --daemon start journalnode
3.2) 通過以下命令在luozheng.bigdata節(jié)點格式化namenode并啟動namenode
bin/hdfs namenode -format
bin/hdfs --daemon start namenode
3.3)在luozheng.bigdata1和luozheng.bigdata2節(jié)點通過以下命令同步the contents of NameNode metadata directories,這里luozheng.bigdata1和luozheng.bigdata2都要同步是因為搭建的HA是有三個NameNode的。
bin/hdfs namenode -bootstrapStandby
3.4)通過以下命令依次啟動其他NameNode
bin/hdfs --daemon start namenode
3.5)依次啟動datanode
bin/hdfs --daemon start datanode
啟動結束后可帽,在瀏覽器中敲入http://luozheng.bigdata:9870娄涩,http://luozheng.bigdata1:9870,http://luozheng.bigdata2:9870映跟,可以看到3個節(jié)點都啟動起來了蓄拣。
3.6) 讓指定的namenode狀態(tài)為active
bin/hdfs haadmin -transitionToActive nn1
4、Automatic Failover
namenode active和standby狀態(tài)的切換努隙,除了通過手動敲命令來實現(xiàn)球恤,還可以通過zookeeper來實現(xiàn)自動故障轉移,zookeeper通過ZKFailoverController來實時的監(jiān)控namenode的運行狀態(tài)荸镊,從而實現(xiàn)故障轉移咽斧。
4、1)相關配置躬存,先在hdfs-site.xml文件中加入如下內(nèi)容:
<!-- HA automatic failover -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
4张惹、2)在core-site.xml配置文件中加入如下配置信息:
<property>
<name>ha.zookeeper.quorum</name>
<value>luozheng.bigdata:2181,luozheng.bigdata1:2181,luozheng.bigdata2:2181</value>
</property>
4、3)同步配置文件到其他節(jié)點
scp -r core-site.xml hdfs-site.xml luozheng@luozheng.bigdata1:/home/luozheng/tools/hadoop-3.0.1/etc/hadoop/
scp -r core-site.xml hdfs-site.xml luozheng@luozheng.bigdata2:/home/luozheng/tools/hadoop-3.0.1/etc/hadoop/
4岭洲、4)如果HDFS文件系統(tǒng)是處于運行狀態(tài)宛逗,先通過如下命令stop
sbin/stop-dfs.sh
4、5)到zookeeper安裝目錄盾剩,依次啟動zookeeper服務
bin/zkServer.sh start
4雷激、6)初始化HA在zookeeper狀態(tài)
bin/hdfs zkfc -formatZK
4、7)啟動HDFS集群
sbin/start-dfs.sh
zookeeper自動選舉了luozheng.bigdata節(jié)點中的namenode作為active namenode
現(xiàn)在強制kill掉該節(jié)點的namenode進程告私,測試下Automatic Failover
5屎暇、最后補充一點hadoop的高級特性
1)Federation:目前HDFS系統(tǒng)中,任意時刻都只有一臺namenode向外提供服務驻粟,F(xiàn)ederation可以讓多個namenode同時向外提供服務根悼,具體看官方文檔
2)HDFS快照
3)緩存管理
4)DistCp:分布式數(shù)據(jù)拷貝工具,官方文檔
總結,到此番挺,hadoop基本先告一段落唠帝,在學習的過程中,基本是以熟悉框架為主玄柏,先有個大概的概念襟衰,對于里面很多的原理基本沒有涉及,這個考慮的是在熟悉整個hadoop生態(tài)圈后粪摘,再慢慢通過官方文檔或是其他書籍來補充瀑晒,先要快速熟悉它們!