【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
相关推荐
币须赢13 小时前
688758赛分科技 阴上阴形态 洗盘上涨?
大数据
学掌门13 小时前
大数据知识合集之预处理方法
大数据
D明明就是我13 小时前
Hive 拉链表
数据仓库·hive·hadoop
库库83914 小时前
Redis分布式锁、Redisson及Redis红锁知识点总结
数据库·redis·分布式
Elastic 中国社区官方博客14 小时前
Elasticsearch 推理 API 增加了开放的可定制服务
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
蒙特卡洛的随机游走14 小时前
Spark核心数据(RDD、DataFrame 和 Dataset)
大数据·分布式·spark
格林威15 小时前
近红外相机在半导体制造领域的应用
大数据·人工智能·深度学习·数码相机·视觉检测·制造·工业相机
zoneyung15 小时前
中扬立库 × 宁波卡帝亚:小家电之乡的仓储革命,破解制造仓储瓶颈
大数据·人工智能
互联网江湖16 小时前
高端手机“探花”之争,AI会成为“胜负手”吗?
大数据·人工智能
NO.102416 小时前
本地缓存怎么在分布式环境下保持一致性
分布式·缓存