一、HA解决方案
二、服务分布
host | NN1 | NN2 | JNN | DN | ZKFC | ZK |
ggl201 | √ | √ | √ | √ | √ | |
ggl202 | √ | √ | √ | √ | √ | |
ggl203 | √ | √ | √ |
三、HA 搭建
3.1 配置文件修改
官网链接:Apache Hadoop 3.3.3 – HDFS High Availability Using the Quorum Journal Manager
core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>ggl201:2181,ggl202:2181,ggl203:2181</value>
</property>
hdfs-site.xml
<!-- 逻辑到物理节点的映射 -->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>ggl201:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>ggl202:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>ggl201:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>ggl202:9870</value>
</property>
<!-- 配置NN和DN目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/dfs/data</value>
</property>
<!-- JN在哪里启动,数据存哪个磁盘 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://ggl201:8485;ggl202:8485;ggl203:8485/mycluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/data/hadoop/journal/node/local/data</value>
</property>
<!-- HA角色切换的代理类和实现方法 使用的是ssh免密 -->
<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>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 开启自动化 启动zkfc进程 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 关闭权限检查 -->
<property>
<name>dfs.permissions.enable</name>
<value>false</value>
</property>
3.2 ssh免密
可以参考hadoo3.3.1搭建:Hadoop 3.3.1 分布式部署_与光同尘~追光者的博客-CSDN博客
3.3 zk搭建
参考:Zookeeper 3.7.0 安装部署_与光同尘~追光者的博客-CSDN博客_zookeeper3.7.0
3.4 初始化启动
3.4.1 启动JN
在三台机器上分别启动
hadoop-daemon.sh start journalnode
3.4.2 选择一个NN做格式化
hdfs namenode -format (只第一次搭建时用)
3.4.3 启动这个格式化的NN 以备另一台同步用
hadoop-daemon.sh start namenode
3.4.4 在另一台机器同步
hdfs namenode -bootstrapStandby
3.4.5 格式化zk
hdfs zkfc -formatZK( 只第一次搭建时用)
3.4.6 启动集群
start-dfs.sh
四、页面显示