我正在进行工作时间分析。我有一个预配置的集群,有8个节点。我想分别运行8个节点,6个节点,4个节点和2个节点的给定作业,并记下相应的运行时间。有没有办法以编程方式执行此操作,即在Java代码中使用Job配置中的适当设置?
答案 0 :(得分:1)
有两种方法。希望以相同的顺序。
exclude
文件可用于不允许某些任务跟踪器/数据节点连接到作业跟踪器/名称节点。检查此faq。要使用的属性是mapreduce.jobtracker.hosts.exclude.filename
和dfs.hosts.exclude
。请注意,文件更改后,必须使用带有mradmin
选项的dfsadmin
和refreshNodes
命令刷新名称节点和作业跟踪器,并且可能需要一些时间要解决的集群,因为必须从排除的节点移动数据块。
另一种方法是停止节点上的任务跟踪器。然后,不会在该节点上安排map / reduce任务。但是,仍将从所有数据节点获取数据。因此,还需要停止数据节点。确保名称节点超出安全模式并且复制因子也已正确设置(使用2个数据节点,复制因子不能为3)。
还可以使用Capacity Scheduler来限制特定作业对群集的使用。但是,当资源空闲/空闲时,调度程序将分配超出容量的资源,以便更好地利用群集。我不确定这是否可以停止。
答案 1 :(得分:0)