我正在开发一个团队,试图创build一个在EC2上创buildHadoop集群的系统,用户只需花费很less的精力。 理想情况下,我们希望从机实例只需要主机实例的主机名作为启动时的用户数据。 然后从属设备将从主实例rsyncconfiguration并自动启动他们的TaskTracker和DataNode守护进程。
我的问题是:是否有必要在主实例的conf/slaves文件中列出从属实例的主机名? 我唯一一次在Hadoop的代码中看到这个文件是通过start-{dfs,mapred}.sh脚本,将SSH连入列出的所有机器并启动守护进程。 如果从节点上的守护进程自动启动,并且他们知道JobTracker和NameNode(通过configuration)的位置,它们可以自己连接到JobTracker / NameNode,并被视为“正常”奴隶?
我想最好的办法是尝试一下,但是我们想知道这样一个系统的时间投入/复杂性,所以我想我会看看这里有没有人有这个问题的经验。 如果我自己find答案,我会编辑。
编辑:我testing了这一点,整个系统似乎工作正常,没有在configuration中列出的奴隶。 JobTracker在其节点列表中显示从属TaskTracker,并且已经成功运行testing作业。
另外编辑:值得注意的是,如果您使用DFS主机白名单( conf/dfs.hosts ),至less在Cloudera的发行版上至less会有这个function,否则这将不起作用。
从站文件仅由bin / start和stop脚本使用。 如果你在EC2上运行,你应该检查EC2脚本,例如“hadoop-ec2 update-slaves-file”