首页主机资讯Ubuntu Hadoop 高可用性如何设置

Ubuntu Hadoop 高可用性如何设置

时间2025-10-04 20:03:03发布访客分类主机资讯浏览342
导读:Ubuntu环境下Hadoop高可用性(HA)配置指南 Hadoop高可用性(HA)通过主备NameNode、JournalNode、ZooKeeper等组件解决单点故障问题,确保集群在节点宕机时仍能提供服务。以下是Ubuntu系统下的详细...

Ubuntu环境下Hadoop高可用性(HA)配置指南
Hadoop高可用性(HA)通过主备NameNodeJournalNodeZooKeeper等组件解决单点故障问题,确保集群在节点宕机时仍能提供服务。以下是Ubuntu系统下的详细配置步骤:

一、环境准备

  1. 基础环境:至少4台Ubuntu服务器(如node1~node4),安装JDK 8apt install openjdk-8-jdk),配置静态IP主机名映射/etc/hosts文件)。
  2. SSH无密登录:在所有节点间生成SSH密钥并分发公钥(ssh-keygen -t rsassh-copy-id user@nodeX),确保节点间可免密访问。
  3. ZooKeeper集群:部署3或5节点ZooKeeper集群(奇数节点避免脑裂),启动后验证状态(zkServer.sh status)。

二、Hadoop核心配置

1. 配置core-site.xml

设置HDFS的默认文件系统和ZooKeeper地址,所有节点均需配置:

<
    configuration>
    
    <
    property>
    
        <
    name>
    fs.defaultFS<
    /name>
    
        <
    value>
    hdfs://mycluster<
    /value>
     <
    !-- 集群逻辑名称,需与hdfs-site.xml一致 -->
    
    <
    /property>
    
    <
    property>
    
        <
    name>
    ha.zookeeper.quorum<
    /name>
    
        <
    value>
    zk1:2181,zk2:2181,zk3:2181<
    /value>
     <
    !-- ZooKeeper集群地址 -->
    
    <
    /property>
    
<
    /configuration>
    

2. 配置hdfs-site.xml

定义NameNode HA、JournalNode共享存储等关键参数,所有节点均需配置:

<
    configuration>
    
    <
    property>
    
        <
    name>
    dfs.nameservices<
    /name>
    
        <
    value>
    mycluster<
    /value>
     <
    !-- 集群逻辑名称 -->
    
    <
    /property>
    
    <
    property>
    
        <
    name>
    dfs.ha.namenodes.mycluster<
    /name>
    
        <
    value>
    nn1,nn2<
    /value>
     <
    !-- NameNode ID列表 -->
    
    <
    /property>
    
    <
    property>
    
        <
    name>
    dfs.namenode.rpc-address.mycluster.nn1<
    /name>
    
        <
    value>
    node1:8020<
    /value>
     <
    !-- nn1的RPC地址 -->
    
    <
    /property>
    
    <
    property>
    
        <
    name>
    dfs.namenode.rpc-address.mycluster.nn2<
    /name>
    
        <
    value>
    node2:8020<
    /value>
     <
    !-- nn2的RPC地址 -->
    
    <
    /property>
    
    <
    property>
    
        <
    name>
    dfs.namenode.shared.edits.dir<
    /name>
    
        <
    value>
    qjournal://node3:8485;
    node4:8485;
    node1:8485/mycluster<
    /value>
     <
    !-- JournalNode共享存储地址 -->
    
    <
    /property>
    
    <
    property>
    
        <
    name>
    dfs.ha.automatic-failover.enabled<
    /name>
    
        <
    value>
    true<
    /value>
     <
    !-- 启用自动故障转移 -->
    
    <
    /property>
    
    <
    property>
    
        <
    name>
    ha.zookeeper.quorum<
    /name>
    
        <
    value>
    zk1:2181,zk2:2181,zk3:2181<
    /value>
     <
    !-- ZooKeeper集群地址 -->
    
    <
    /property>
    
    <
    property>
    
        <
    name>
    dfs.ha.fencing.methods<
    /name>
    
        <
    value>
    sshfence<
    /value>
     <
    !-- 隔离机制(防止脑裂) -->
    
    <
    /property>
    
    <
    property>
    
        <
    name>
    dfs.ha.fencing.ssh.private-key-files<
    /name>
    
        <
    value>
    /home/user/.ssh/id_rsa<
    /value>
     <
    !-- SSH私钥路径 -->
    
    <
    /property>
    
<
    /configuration>
    

3. 配置yarn-site.xml(ResourceManager HA)

若需ResourceManager高可用,添加以下配置(所有节点均需配置):

<
    configuration>
    
    <
    property>
    
        <
    name>
    yarn.resourcemanager.ha.enabled<
    /name>
    
        <
    value>
    true<
    /value>
     <
    !-- 启用RM HA -->
    
    <
    /property>
    
    <
    property>
    
        <
    name>
    yarn.resourcemanager.ha.rm-ids<
    /name>
    
        <
    value>
    rm1,rm2<
    /value>
     <
    !-- ResourceManager ID列表 -->
    
    <
    /property>
    
    <
    property>
    
        <
    name>
    yarn.resourcemanager.hostname.rm1<
    /name>
    
        <
    value>
    node1<
    /value>
     <
    !-- rm1的主机名 -->
    
    <
    /property>
    
    <
    property>
    
        <
    name>
    yarn.resourcemanager.hostname.rm2<
    /name>
    
        <
    value>
    node2<
    /value>
     <
    !-- rm2的主机名 -->
    
    <
    /property>
    
    <
    property>
    
        <
    name>
    yarn.resourcemanager.zk-address<
    /name>
    
        <
    value>
    zk1:2181,zk2:2181,zk3:2181<
    /value>
     <
    !-- ZooKeeper集群地址 -->
    
    <
    /property>
    
<
    /configuration>
    

4. 配置workers文件

$HADOOP_HOME/etc/hadoop/workers中添加所有DataNode和NodeManager节点(如node3\node4),用于启动DataNode和NodeManager服务。

三、启动JournalNode

JournalNode用于存储NameNode的编辑日志(edits),确保主备NameNode数据一致。在所有JournalNode节点(如node3~node4)上执行:

$HADOOP_HOME/sbin/hadoop-daemons.sh start journalnode

验证JournalNode是否启动(jps命令应显示JournalNode进程)。

四、初始化共享存储

在其中一台NameNode(如node1)上执行以下命令,将本地元数据同步到JournalNode:

hdfs namenode -bootstrapStandby

此命令会将nn1的元数据复制到JournalNode,为后续格式化做准备。

五、格式化NameNode并启动集群

  1. 格式化NameNode:仅在首次配置时执行,在nn1上运行:
    hdfs namenode -format
    
  2. 启动HDFS:启动所有JournalNode和NameNode服务:
    $HADOOP_HOME/sbin/start-dfs.sh
    
  3. 启动YARN:若配置了ResourceManager HA,启动YARN服务:
    $HADOOP_HOME/sbin/start-yarn.sh
    

验证HA状态

  • 使用jps命令检查各节点进程(如nn1、nn2、rm1、rm2等是否运行)。
  • 查看NameNode状态(hdfs haadmin -getServiceState nn1应返回activehdfs haadmin -getServiceState nn2应返回standby)。
  • 访问HDFS Web界面(http://node1:9870),确认集群状态。

六、常见注意事项

  1. JournalNode数量:至少3个(奇数),确保Quorum机制有效(N/2+1个存活即可维持一致性)。
  2. 隔离机制dfs.ha.fencing.methods需配置有效隔离方法(如sshfence),防止脑裂(两个NameNode同时为Active)。
  3. ZooKeeper集群:必须为奇数节点(3或5),避免脑裂问题。
  4. 数据备份:定期备份JournalNode数据和HDFS关键数据,防止数据丢失。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Hadoop 高可用性如何设置
本文地址: https://pptw.com/jishu/720487.html
如何在 Ubuntu 上部署 Hadoop 生态系统 如何升级 Ubuntu 上的 Hadoop

游客 回复需填写必要信息