【问题标题】:Why does automatic failover break when running both HA HDFS and MR1?为什么同时运行 HA HDFS 和 MR1 时自动故障转移会中断?
【发布时间】:2015-05-06 10:48:40
【问题描述】:

我正在重新配置 Hadoop 集群,以便为共享文件系统和 MR1 作业跟踪器使用高可用性 (HA) 功能。

似乎我无法让两者同时工作的自动故障转移功能。相反,其中一项服务被两个(所有)守护程序都卡在待机状态。

如何让自动故障转移为我的所有 HA 服务工作?

我正在使用:

  • Cloudera CDH 4.5.0
  • JDK 7
  • Ubuntu 12.04
  • ...没有 Cloudera 管理器

【问题讨论】:

    标签: hadoop cloudera cloudera-cdh


    【解决方案1】:

    namenode 和 jobtracker 共享一个相似的 HA 实现,在某种程度上它们都扩展了相同的基类。它们都使用支持 zookeeper 集群来决定哪个可用节点处于活动状态。

    zookeeper 中使用的位置是通过将故障转移组名称(即dfs.nameservicesmapred.job.tracker 中给出的值)附加到可配置前缀来构造的。

    默认情况下,这两种服务的可配置前缀都是/hadoop-ha

    这意味着如果两个服务配置了相同的故障转移组名称(例如,my-application),那么这两个服务使用的最终 zookeeper 路径将发生冲突。如果他们实际上使用同一个 zookeeper 集群,一个服务将无法获得 zookeeper 节点并破坏了自动故障转移。

    解决办法是避免碰撞。最简单的方法是确保mapred-site.xml 中的mapred.job.trackerhdfs-site.xml 中的dfs.nameservices 不包含公共值。

    也可以尝试为每个服务配置/hadoop-ha 前缀。它由ha.zookeeper.parent-znode 配置属性控制。

    例如,在hdfs-site.xml 中可能有:

    <property>
      <name>ha.zookeeper.parent-znode</name>
      <value>/hdfs-ha</value>
    </property>
    

    ...而mapred-site.xml 包含:

    <property>
      <name>ha.zookeeper.parent-znode</name>
      <value>/mapred-ha</value>
    </property>
    

    但是,请注意,在此配置中,hdfs-site.xmlmapred-site.xml 不能同时加载:一个键的值会破坏另一个键。

    无论哪种方式,zookeeper 路径都会发生变化,需要重新运行相应的 -formatZK 命令。

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 2018-10-10
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      相关资源
      最近更新 更多