当前位置:   article > 正文

Hadoop MapReduce的运行流程

Hadoop MapReduce的运行流程

MapReduce是一种分布式编程模型,主要用于处理和生成大规模数据集。以下是其基本运行流程:

  1. 作业提交(Job Submission)

    • 用户通过Hadoop客户端向集群中的JobTracker提交MapReduce作业(一个包含Map函数和Reduce函数的程序),同时提交相关的输入文件路径和其他配置信息。
    • JobTracker接收到作业后,会对作业进行初始化并创建一个作业ID。
  2. 资源分配与任务调度(Resource Allocation & Task Scheduling)

    • JobTracker根据集群中TaskTracker节点的状态和资源情况,决定将哪些map任务或reduce任务分配给各个TaskTracker节点执行。
    • 一旦分配好任务,JobTracker会把对应的作业Jar包、配置文件以及任务的具体参数等发送到相应的TaskTracker。
  3. 任务执行(Task Execution)

    • TaskTracker接收到任务后,在本地启动一个新的JVM进程来执行任务,首先执行的是map任务。
    • Map任务读取InputSplit(即输入文件被切分的数据块),对每个数据记录调用用户自定义的map()函数进行处理,并输出键值对 <key, value> 到本地磁盘上的环形缓冲区(Circular Buffer)。
  4. 缓冲区溢写与分区排序(Buffer Overflow & Partitioning & Sorting)

    • 当环形缓冲区达到一定阈值时,Map任务将其内容溢写到本地磁盘上形成中间文件,这个过程会根据Reducer的数量对数据进行分区,并对每个分区内的数据按key进行排序。
    • 溢写过程中还会合并小文件,减少数据量。
  5. 合并中间文件(Intermediate File Merge)

    • 在Map阶段结束后,系统会合并所有的中间文件以进一步减少文件数量和提高效率。
  6. shuffle阶段(Shuffle Phase)

    • Reduce任务从各个Mapper所在的TaskTracker获取其对应的中间结果数据。
    • 数据在网络间传输时,会先在Map端进行局部排序,并在Reduce端完成最终全局排序和合并。
  7. Reduce任务执行(Reduce Task Execution)

    • Reduce任务接收到所有mapper的结果数据后,对这些数据进行归约处理,使用用户自定义的reduce()函数,处理每个key的所有value,产生最终结果。
    • 输出结果同样会被写入HDFS。
  8. 作业完成与清理(Job Completion & Cleanup)

    • 所有Reducer任务完成后,JobTracker标记该作业为成功状态。
    • TaskTracker负责清理本地磁盘上的临时文件和释放资源。
  9. 监控与容错(Monitoring & Fault Tolerance)

    • 整个过程中,JobTracker持续监控各TaskTracker节点的任务执行情况,当发生任务失败时,能够重新调度任务到其他可用节点继续执行,保证了整个计算过程的高容错性。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/567774
推荐阅读
相关标签
  

闽ICP备14008679号