hadoop - 为什么映射器的运行时间应该超过1分钟?

标签 hadoop mapper

我从许多博客/网页上读到

the running time of a mapper should be more than X minutes



我了解设置映射器会涉及开销,但是这是如何计算的呢?为什么X分钟后开销是合理的?当我们讨论开销时,Hadoop开销是多少?

最佳答案

它不是硬编码规则,但是很有意义。在启动映射器之前,在后台处理了许多小过程。它的初始化,除实际处理外的其他内容本身将需要10到15秒。因此,为了减少分割数(这反过来又会减少映射器数),可以将maxsplitsize设置为博客传达的更高值。如果我们做不到。以下是MR框架在创建映射器时必须处理的开销。

  • 计算该映射器的拆分。
  • jobtracker中的Job Scheduler必须创建一个separarte map任务,这会稍微增加延迟。
  • 在分配任务时,作业跟踪程序将必须根据其数据位置查找任务跟踪程序。这将再次涉及在tasktracker中创建本地临时目录,该目录将由该映射器的设置和清理任务使用,例如,在设置中,如果我们正在从分布式缓存中读取并将其放入哈希表中,或者进行初始化和清理如果已经有足够的 map 并减少在该任务跟踪器中运行的任务,则这将给任务跟踪器带来负担。
  • 在最坏的情况下,固定映射任务的数量已满,因此JT将不得不寻找不同的TT,这将导致远程读取。
  • 此外,TT只会在3秒内将心跳发送给JT一次,这会导致作业初始化延迟,因为TT必须联系JT来运行作业以及发送完成状态。
  • 不幸的是,如果您的映射器失败,那么该任务将在最终失败之前运行3次。
  • 关于hadoop - 为什么映射器的运行时间应该超过1分钟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32753532/

    相关文章:

    java - HDFS 目录中的文件数

    python - Hadoop pig latin 无法通过 python 脚本流式传输

    java - 如何填写Mapper?

    java - 将 XML 实体映射到 Java 对象

    scala - jOOQ 将自定义 SQL 获取到映射器中

    python - 应用程序错误 : 7 when processing is done for mapreduce worker writing to Google Cloud Storage

    java - 在 arraylist 中缓存 iterable 以在 reducer 中迭代两次不起作用

    java - 如何对 Reducer 输出进行排序?

    scala - "User did not initialize spark context"在 SPARK YARN 集群模式下使用 Scala 代码时出错

    hadoop - Reducer 可以一次拥有多个键吗?