Hadoop HA Namenode远程访问

时间:2013-11-01 13:14:28

标签: hadoop remote-access high-availability nameservice

我使用HA namenode配置Hadoop 2.2.0稳定版本,但我不知道如何配置对群集的远程访问。

我的HA namenode配置了手动故障转移,我定义了dfs.nameservices,我可以从群集中包含的所有节点访问带有nameservice的hdfs,但不能从外部访问。

我可以通过直接联系活动的namenode来对hdfs执行操作,但我不想这样,我想联系群集然后被重定向到活动的namenode。我认为这是HA群集的正常配置。

现在有人怎么做?

(提前谢谢......)

4 个答案:

答案 0 :(得分:2)

您必须向hdfs网站添加更多值:

<property>
    <name>dfs.ha.namenodes.myns</name>
    <value>machine-98,machine-99</value>
</property>

<property>
    <name>dfs.namenode.rpc-address.myns.machine-98</name>
    <value>machine-98:8100</value>
</property>

<property>
    <name>dfs.namenode.rpc-address.myns.machine-99</name>
    <value>machine-145:8100</value>
</property>

<property>
    <name>dfs.namenode.http-address.myns.machine-98</name>
    <value>machine-98:50070</value>
</property>

<property>
    <name>dfs.namenode.http-address.myns.machine-99</name>
    <value>machine-145:50070</value>
</property>

答案 1 :(得分:1)

您需要联系其中一个Name节点(正如您当前所做的那样) - 没有要联系的群集节点。

hadoop客户端代码知道两个名称节点的地址(在core-site.xml中),并且可以识别哪个是活动的,哪个是备用的。可能有一种方法可以查询仲裁中的zookeeper节点以识别活动/备用(可能,我不确定),但您也可以检查其中一个名称节点 - 您有50/50的机会它是活跃的。

我必须检查,但如果你只是从HDFS阅读,你或许可以查询。

答案 2 :(得分:1)

对于Active Name节点,您可以随时询问Zookeeper。 您可以从以下Zk路径获取活动名称节点。

/hadoop-ha/namenodelogicalname/ActiveStandbyElectorLock 

答案 3 :(得分:1)

有两种方法可以解决这种情况(使用java的代码)

  1. 在代码中使用core-site.xml和hdfs-site.xml

    load conf via addResource

  2. 在代码中使用conf.set

    set hadoop conf via conf.set

    an example use conf.set