如何将作业提交到Hadoop中的特定节点?

时间:2013-10-15 01:45:57

标签: hadoop mapreduce

我有一个拥有1个Master和5个slave的Hadoop集群。有没有办法向特定的奴隶提交工作?基本上我正在尝试做的是使我的应用程序具有许多可能性。因此,在测试了5个从站之后,我想用4个从站运行我的应用程序,然后运行3个从站,依此类推。

目前,我所知道的唯一方法是停用从机并从hadoop集群中删除。但这似乎是一项繁琐的工作。我想知道是否有更简单的方法,以避免从群集中删除节点。

感谢。

3 个答案:

答案 0 :(得分:2)

在hadoop / conf中有一个名为'slaves'的文件,你只需添加或删除节点,然后重新启动你的d​​fs和mapred。

答案 1 :(得分:1)

有一个设置指向一个文件,其中包含您可以在mapred-site-xml中设置的排除主机列表。虽然也有点麻烦,但是改变单个配置值可能优选在物理上退役并重新调试多个节点。您可以提前准备多个主机排除文件,更改设置并重新启动mapreduce服务。重新启动mapreduce服务非常快。

In 0.23此设置名为mapreduce.jobtracker.hosts.exclude.filename。这是0.21中引入的一个功能,但我相信该设置名为mapred.hosts.exclude。检查为您正在使用的Hadoop版本调用此设置的内容。

答案 2 :(得分:0)

对于遇到此问题的人,Alex和stackoverflow question的评论将有助于成功解除hadoop群集中的节点。

编辑:只编辑文件hdfs-site.xml和mapred-site.xml并执行hadoop dfsadmin -refreshNodes可能会使您的datanode长时间退役节点状态。因此,还需要将dfs.replication更改为适当的值。