java - 如何每次都知道Hadoop中任务的处理速度

标签 java hadoop mapreduce hadoop2

当我运行Hadoop程序时,我想知道它的每次运行速度。我如何知道速度,例如完成10%的工作之后?

最佳答案

监视Hadoop作业的进度非常重要,因为它们是长期运行的作业(有时需要几天才能完成)。有意义的进度更新有助于用户确定作业是否运行正常或是否由于Hadoop堆栈深处的某些错误而卡住了。

根据Hadoop权威指南,

衡量Hadoop作业的进度可以分为多个阶段,即Map阶段和Reduce阶段(惊喜!!!)。测量Map阶段的进度相对容易。首先,将输入数据分为多个块,并为每个块生成一个映射任务。只需监视完成了多少个 map 阶段,就可以更新 map 阶段的进度。

还原阶段有些棘手。精简任务分为三个阶段,即复制,排序和精简。这三个阶段用于监视还原阶段的进度。例如,如果在特定的reduce任务中,“reduce”部分完成了一半,那么我们说此reduce任务已完成5/6。 (1/3份+ 1/3种+ 1/6减少= 5/6)。

希望这可以帮助。

关于java - 如何每次都知道Hadoop中任务的处理速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40301234/

相关文章:

java - 从 JPA 实体创建 Gson 对象抛出StackOverflowError 异常

hadoop - 在 Kerberos 数据库中找不到服务器

sql - 无法将 hive 中的String日期转换为unix时间戳

hadoop - 远程连接Hbase时出现信息问题

hadoop - 使用 multipleInputFormat 时未调用映射器

mapreduce - 获取 riak 桶中键数的优化方法是什么?

java - Hadoop NTriplesMapper (apache.jena) 无法正常工作,映射输入记录=0

java - Hibernate 不将实体持久保存到 MySql - Wildfly 10

java - 将小程序与 Telerik 控件一起使用时出现 ClassNotFoundException

java - 再次检查一个列表中的所有内容,导致堆栈溢出