我正在尝试设置/维护3个HDFS群集,所有这些都使用高可用性。它们都在那里工作得很好,但我想使用HDFS Federation帮助他们互相交流。
我正在使用Cloudera 420,并使用他们的指南来设置它。对于每个集群,core-site.xml文件是不同的(fs.defaultFS),但hdfs-site.xml都是相同的。 hdfs-site.xml文件列出了所有名称服务(dfs.nameservices),当然,这些名称服务引用回相应的core-site.xml。每个群集都有一个从属文件,其中列出了应属于它的数据节点。
我的麻烦在于添加一个新的datanode。我为我希望它加入的集群配置了配置文件(core,hdfs,slave等)。但是,当我启动datanode时,它似乎尝试加入dfs.nameservices属性中列出的第一个集群。我认为它首先会查看fs.defaultFS属性,但它似乎没有这样做。尽管新的datanode不在slave文件中,但错误的集群似乎也接受了它。
最重要的是,我的新datanode正在尝试加入错误的群集。它如何知道加入哪一个?
提前感谢任何想法。
**更新**
也许我只是误解了这样做的用例。当我查看Hadoop代码时,会出现每个dfs.nameservices条目的一个线程。这些中的每一个都尝试将其CID分配给单个DataNode对象,但前提是它已经为空。它似乎是在不考虑订单的情况下这样做,这意味着第一个获胜。只有我“幸运”,它才会选择正确的。如果我不是“幸运”,我通常不是,它会得到另一个......然后先连接到那里。奇怪。