【Hadoop】--HA高可用搭建--3.2.2

修改环境配置文件 hadoop-env.sh

bash 复制代码
# 在文件末尾添加以下内容:
# java_home记得修改
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

bash 复制代码
# 在configuration 节点中添加以下内容

    <!-- 设置 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

bash 复制代码
[root@node01 hadoop]# vim hdfs-site.xml

# 在configuration 节点中添加以下内容:

    <!-- 设置 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

bash 复制代码
node01
node02
node03

启动

bash 复制代码
# 首先启动 ZooKeeper(三台机器都需要执行)。

[root@node01 hadoop]# zkServer.sh start
[root@node01 hadoop]# zkServer.sh status

# 然后启动 JournalNode(三台机器都需要执行)。
[root@node01 hadoop]# hdfs --daemon start journalnode

# 最后格式化 NameNode 等相关服务并启动集群
# 格式化 node01 的 namenode(第一次配置的情况下使用)
[root@node01 ~]# hdfs namenode -format

# 启动 node01 的 namenode
[root@node01 ~]# hdfs --daemon start namenode

# node02 节点同步镜像数据
[root@node02 ~]# hdfs namenode -bootstrapStandby

# 格式化 zkfc(第一次配置的情况下使用)
[root@node01 ~]# hdfs zkfc -formatZK

# 启动 HDFS
[root@node01 ~]# start-dfs.sh

关闭 hadoop

bash 复制代码
# 先关闭 HDFS。
[root@node01 ~]# stop-dfs.sh

# 再关闭 ZooKeeper(三台机器都需要执行)。
[root@node01 ~]# zkServer.sh stop

# 启动|关闭 所有节点和进程
[root@node01 ~]# start-all.sh
[root@node01 ~]# stop-all.sh

[root@node01 ~]# mapred --daemon start historyserver
相关推荐
初恋叫萱萱15 小时前
模型瘦身实战:用 `cann-model-compression-toolkit` 实现高效 INT8 量化
大数据
袁煦丞 cpolar内网穿透实验室16 小时前
远程调试内网 Kafka 不再求运维!cpolar 内网穿透实验室第 791 个成功挑战
运维·分布式·kafka·远程工作·内网穿透·cpolar
人间打气筒(Ada)16 小时前
GlusterFS实现KVM高可用及热迁移
分布式·虚拟化·kvm·高可用·glusterfs·热迁移
xu_yule16 小时前
Redis存储(15)Redis的应用_分布式锁_Lua脚本/Redlock算法
数据库·redis·分布式
互联网科技看点16 小时前
孕期科学补铁,保障母婴健康-仁合益康蛋白琥珀酸铁口服溶液成为产妇优选方案
大数据
Dxy123931021616 小时前
深度解析 Elasticsearch:从倒排索引到 DSL 查询的实战突围
大数据·elasticsearch·搜索引擎
YongCheng_Liang16 小时前
零基础学大数据:大数据基础与前置技术夯实
大数据·big data
AC赳赳老秦16 小时前
2026国产算力新周期:DeepSeek实战适配英伟达H200,引领大模型训练效率跃升
大数据·前端·人工智能·算法·tidb·memcache·deepseek
鹏说大数据16 小时前
Spark 和 Hive 的关系与区别
大数据·hive·spark
B站计算机毕业设计超人16 小时前
计算机毕业设计Hadoop+Spark+Hive招聘推荐系统 招聘大数据分析 大数据毕业设计(源码+文档+PPT+ 讲解)
大数据·hive·hadoop·python·spark·毕业设计·课程设计