1

我正在尝试设置/维护 3 个 HDFS 集群,全部使用高可用性。他们都在那里工作正常,但我想使用 HDFS Federation 来帮助他们互相交谈。

我正在使用 Cloudera 420,并使用他们的指南进行设置。对于每个集群,core-site.xml 文件是不同的(fs.defaultFS),但 hdfs-site.xml 都是相同的。hdfs-site.xml 文件列出了所有名称服务 (dfs.nameservices),当然,这些名称服务又引用了相应的 core-site.xml。每个集群都有一个从属文件,其中列出了应该属于它的数据节点。

我的麻烦在于添加一个新的数据节点。我使用我希望它加入的集群的配置文件(核心、hdfs、从属等)设置它。但是,当我启动数据节点时,它似乎试图加入 dfs.nameservices 属性中列出的第一个集群。我认为它会首先查看 fs.defaultFS 属性,但它似乎没有这样做。尽管新的数据节点不在从属文件中,但错误的集群似乎也接受了它。

底线,我的新数据节点正试图加入错误的集群。它如何知道加入哪一个?

提前感谢您的任何想法。

** 更新 **

也许我只是误解了这样做的用例。当我查看 Hadoop 代码时,似乎为每个 dfs.nameservices 条目启动了一个线程。这些中的每一个都尝试将其 CID 分配给单个 DataNode 对象,但前提是它已经为空。它似乎在不考虑顺序的情况下这样做,这意味着第一个获胜。只有当我得到“幸运”时,它才会选择正确的。如果我不是“幸运”,我通常不是,它会得到另一个......并首先连接到那里。奇怪的。

4

0 回答 0