HDFS高可用性(HA)配置可以通过以下步骤实现:
环境准备:
配置ZooKeeper:
conf/zoo.cfg
文件,设置dataDir
和其他必要的配置。myid
文件,内容为其节点编号。配置Hadoop:
core-site.xml
文件,配置如下:<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode1:9000</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>namenode1:2181,namenode2:2181,namenode3:2181</value>
</property>
</configuration>
hdfs-site.xml
文件,配置如下:<configuration>
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>namenode1,namenode2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.namenode1</name>
<value>namenode1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.namenode2</name>
<value>namenode2:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.namenode1</name>
<value>namenode1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.namenode2</name>
<value>namenode2:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://namenode1:8485;namenode2:8485;namenode3:8485/mycluster</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>ssh</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>
配置SSH免密登录:
ssh-keygen -t rsa
ssh-copy-id root@namenode1
ssh-copy-id root@namenode2
ssh-copy-id root@namenode3
格式化NameNode:
hdfs namenode -format
启动Hadoop集群:
/usr/local/hadoop/sbin/start-dfs.sh
验证配置:
hdfs dfsadmin -report
通过以上步骤,你可以在CentOS上配置一个高可用的HDFS集群。