配置参数:
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>