在Hadoop中,我们可以通过编程方式控制每个作业的节点数吗?

时间:2012-01-20 16:40:51

标签: hadoop

我正在进行工作时间分析。我有一个预配置的集群,有8个节点。我想分别运行8个节点,6个节点,4个节点和2个节点的给定作业,并记下相应的运行时间。有没有办法以编程方式执行此操作,即在Java代码中使用Job配置中的适当设置?

2 个答案:

答案 0 :(得分:1)

有两种方法。希望以相同的顺序。

  1. exclude文件可用于不允许某些任务跟踪器/数据节点连接到作业跟踪器/名称节点。检查此faq。要使用的属性是mapreduce.jobtracker.hosts.exclude.filenamedfs.hosts.exclude。请注意,文件更改后,必须使用带有mradmin选项的dfsadminrefreshNodes命令刷新名称节点和作业跟踪器,并且可能需要一些时间要解决的集群,因为必须从排除的节点移动数据块。

  2. 另一种方法是停止节点上的任务跟踪器。然后,不会在该节点上安排map / reduce任务。但是,仍将从所有数据节点获取数据。因此,还需要停止数据节点。确保名称节点超出安全模式并且复制因子也已正确设置(使用2个数据节点,复制因子不能为3)。

  3. 还可以使用Capacity Scheduler来限制特定作业对群集的使用。但是,当资源空闲/空闲时,调度程序将分配超出容量的资源,以便更好地利用群集。我不确定这是否可以停止。

答案 1 :(得分:0)

你对脚本编写好吗?如果是这样,可以使用守护进程的启动脚本。由于这是一个实验设置,我认为重新启动每个实验的hadoop应该没问题。