我正在使用 Amazon AWS、Dynamo DB 和 EMR 集群进行 hadoop 流式传输。我的 reduce 任务写入 Dynamo 表。我需要建立并遵守写入表的上限,比如写入吞吐量的 50%。
我可以查询表的写入吞吐量设置,除以 mapred.reduce.tasks,然后乘以 50% 以获得每个任务的表写入吞吐量的下限。更好的是,我想查询此刻正在处理的reduce任务的数量,以获得每个reduce任务的准确写入吞吐量上限,但我不知道如何获得该数字。我在 jobtracker 中看到它显示了任务总数、待处理任务和正在处理的任务。
一种不太灵活的替代方法是使用 hadoop 流参数“-numReduceTasks”设置任务数。
最佳答案
您应该为此使用 JobTracker
API,如 here 所述.
特别是,您有兴趣调用 getClusterStatus
,它会返回一个 ClusterStatus
对象,详情 here .从那时起,只需调用 getReduceTasks
即可,这将为您提供集群中当前正在运行的 reduce 任务的数量。
您也可以使用 getClusterMetrics
方法获取类似的信息。
关于hadoop - 获取当前运行的reduce任务数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16741345/