配置參數:
1、dfs.nameservices
說明:為namenode集群定義一個services name
默認值:null
比如設置為:ns1
2、dfs.ha.namenodes.<dfs.nameservices>
說明:nameservice 包含哪些namenode,為各個namenode起名
默認值:null
比如設置為nn1, nn2
3、dfs.namenode.rpc-address.ns1.nn1
說明:名為nn1的namenode 的rpc地址和端口號,rpc用來和datanode通訊
默認值:9000,可以設置為8020
如何設置:host:port
4、dfs.namenode.http-address.ns1.nn1
說明:名為nn1的namenode 的http地址和端口號,web客戶端
默認值:50070
如何設置:host:port
5、dfs.namenode.shared.edits.dir
說明:namenode間用於共享編輯日志的journal節點列表
示例:qjournal://master:8485;slave1:8485;slave2:8485/ns1
6、dfs.journalnode.edits.dir
說明:journalnode 上用於存放edits日志的目錄
默認值:/tmp/hadoop/dfs/journalnode/
7、dfs.client.failover.proxy.provider.ns1
說明:客戶端連接可用狀態的NameNode所用的代理類
默認值:org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
8、dfs.ha.fencing.methods
說明:HDFS的HA功能的防腦裂方法。可以是內建的方法(例如shell和sshfence)或者用戶定義的方法。
建議使用sshfence(hadoop:9922),括號內的是用戶名和端口,注意,這需要NN的2台機器之間能夠免密碼登陸
fences是防止腦裂的方法,保證NN中僅一個是Active的,如果2者都是Active的,新的會把舊的強制Kill
值:
sshfence
shell(/bin/true)
9、dfs.ha.fencing.ssh.private-key-files
說明:失效轉移時使用的秘鑰文件。
10、dfs.ha.automatic-failover.enabled
說明:故障轉移功能,建議開啟
value:true
11、dfs.webhdfs.enabled
說明:是否開啟webhdfs
value:true
12、dfs.journalnode.http-address
說明:JournalNode RPC服務地址和端口
value:0.0.0.0:8485
13、ha.zookeeper.quorum
說明:zookeeper隊列地址
14、dfs.permissions.enabled
說明:是否開啟權限檢查,建議開啟
value:true
15、dfs.namenode.acls.enabled
說明:是否在hdfs開啟acl,默認是為false,建議開啟
value:true
常用配置:(以下配置基於hadoop3.x)
<property>
<name>dfs.nameservices</name>
<value>my-hadoop</value>
</property>
<property>
<name>dfs.ha.namenodes.my-hadoop</name>
<value>nna,nns,nnj</value>
</property>
<property>
<name>dfs.namenode.rpc-address.my-hadoop.nna</name>
<value>master:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.my-hadoop.nns</name>
<value>slave1:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.my-hadoop.nnj</name>
<value>slave2:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.my-hadoop.nna</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.my-hadoop.nns</name>
<value>slave1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.my-hadoop.nnj</name>
<value>slave2:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slave1:8485;slave2:8485/my-hadoop</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.my-hadoop</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence
shell(/bin/true)
</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/data1/hadoop/data/tmp/journal</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data1/hadoop/data/dfs/nn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data2/hadoop/data/dn,/data3/hadoop/data/dn,/data4/hadoop/data/dn</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.journalnode.http-address</name>
<value>0.0.0.0:8480</value>
</property>
<property>
<name>dfs.journalnode.rpc-address</name>
<value>0.0.0.0:8485</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
<property>
<name>dfs.datanode.shared.file.descriptor.paths</name>
<value>/dev/shm,/data1/hadoop/data/tmp/tmp</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.max.transfer.threads</name>
<value>8192</value>
</property>
<property>
<name>dfs.client.socket-timeout</name>
<value>1800000</value>
</property>
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.qjournal.write-txns.timeout.ms</name>
<value>600000</value>
</property>
<property>
<name>dfs.datanode.du.reserved</name>
<value>107374182400</value>
</property>
<property>
<name>dfs.datanode.balance.bandwidthPerSec</name>
<value>512m</value>
</property>