修改环境配置文件 hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0xxxx
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
修改核心配置文件 core-site.xml
<!-- 设置 NameNode 节点的 URI (包括协议、主机名称、端口号),用于 NameNode 与 DataNode 之间的通讯 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hdfs-yjx</value>
</property>
<!-- 设置 Hadoop 运行时临时文件的存放位置,比如 HDFS 的 NameNode 数据默认存放在该目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/var/yjx/hadoop/ha</value>
</property>
<!-- 设置 Web 界面访问数据时使用的用户名 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 配置 HA (高可用),需要一组 Zookeeper 地址,以逗号分隔 -->
<!-- 该参数被 ZKFailoverController 用于自动故障转移(Failover) -->
<property>
<name>ha.zookeeper.quorum</name>
<value>node01:2181,node02:2181,node03:2181</value>
</property>
<!-- 该参数表示可以通过 httpfs 接口访问 HDFS 的 IP 地址限制 -->
<!-- 配置 root(超级用户)允许通过 httpfs 方式访问 HDFS 的主机名或域名 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<!-- 通过 httpfs 接口访问的用户获得的群组身份 -->
<!-- 配置允许通过 httpfs 方式访问的客户端的用户组 -->
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
修改 HDFS 配置文件 hdfs-site.xml
[root@node01 hadoop]
<!-- 设置 NameService(HDFS 命名服务),支持多个 NameNode 的 HA 配置 -->
<property>
<name>dfs.nameservices</name>
<value>hdfs-yjx</value>
</property>
<!-- 设置 NameNode ID 列表,hdfs-yjx 对应 dfs.nameservices -->
<property>
<name>dfs.ha.namenodes.hdfs-yjx</name>
<value>nn1,nn2</value>
</property>
<!-- 设置 NameNode 的 RPC 地址和端口 -->
<property>
<name>dfs.namenode.rpc-address.hdfs-yjx.nn1</name>
<value>node01:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.hdfs-yjx.nn2</name>
<value>node02:8020</value>
</property>
<!-- 设置 NameNode 的 Web 界面访问地址和端口 -->
<property>
<name>dfs.namenode.http-address.hdfs-yjx.nn1</name>
<value>node01:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.hdfs-yjx.nn2</name>
<value>node02:9870</value>
</property>
<!-- 设置 JournalNode 共享存储,用于存放 HDFS EditLog -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node01:8485;node02:8485;node03:8485/hdfs-yjx</value>
</property>
<!-- 设置 JournalNode 日志存储路径 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/var/yjx/hadoop/ha/qjm</value>
</property>
<!-- 设置客户端连接 Active NameNode 的代理类 -->
<property>
<name>dfs.client.failover.proxy.provider.hdfs-yjx</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- HDFS-HA 发生脑裂时的自动处理方法 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
<value>shell(true)</value>
</property>
<!-- 失效转移时使用的 SSH 私钥文件 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 是否启用 HDFS 自动故障转移 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 设置 HDFS 默认的数据块副本数(可在文件创建时覆盖) -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
修改 workers:[root@node01 hadoop]# vim workers
node01
node02
node03
启动
[root@node01 hadoop]
[root@node01 hadoop]
[root@node01 hadoop]
[root@node01 ~]
[root@node01 ~]
[root@node02 ~]
[root@node01 ~]
[root@node01 ~]
关闭 hadoop
[root@node01 ~]
[root@node01 ~]
[root@node01 ~]
[root@node01 ~]
[root@node01 ~]