我正在使用 HA 名称节点配置 Hadoop 2.2.0 稳定版本,但我不知道如何配置对集群的远程访问。
我已经配置了手动故障转移的 HA 名称节点,并且我定义了dfs.nameservices
并且我可以从集群中包含的所有节点访问具有名称服务的 hdfs,但不能从外部访问。
我可以通过直接联系活动名称节点对 hdfs 执行操作,但我不希望那样,我想联系集群,然后被重定向到活动名称节点。我认为这是 HA 集群的正常配置。
有谁现在该怎么做?
(提前致谢...)
我正在使用 HA 名称节点配置 Hadoop 2.2.0 稳定版本,但我不知道如何配置对集群的远程访问。
我已经配置了手动故障转移的 HA 名称节点,并且我定义了dfs.nameservices
并且我可以从集群中包含的所有节点访问具有名称服务的 hdfs,但不能从外部访问。
我可以通过直接联系活动名称节点对 hdfs 执行操作,但我不希望那样,我想联系集群,然后被重定向到活动名称节点。我认为这是 HA 集群的正常配置。
有谁现在该怎么做?
(提前致谢...)
您必须向 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>
您需要联系其中一个名称节点(正如您当前所做的那样) - 没有要联系的集群节点。
hadoop 客户端代码知道两个名称节点的地址(在 core-site.xml 中),并且可以识别哪个是活动的,哪个是备用的。可能有一种方法可以询问仲裁中的 zookeeper 节点以识别活动/备用节点(也许,我不确定)但你也可以检查其中一个名称节点 - 你有 50/50 的机会它是活跃的。
我必须检查一下,但是如果您只是从 HDFS 读取数据,您也许可以查询。
对于 Active Name 节点,您可以随时询问 Zookeeper。您可以从下面的 Zk 路径获取活动名称节点。
/hadoop-ha/namenodelogicalname/ActiveStandbyElectorLock
有两种方法可以解决这种情况(java代码)
在代码中使用 core-site.xml 和 hdfs-site.xml
在您的代码中使用 conf.set