大数据-MR的运行原理

在这里插入图片描述
对上诉图片的详细解释

  1. 计算切片:
    有几个切片就有几个map task
  2. 环形缓存区:
    经过map函数的逻辑处理后的数据输出之后,会通过OutputConllector收集器将数据收集到环形缓存区保存 环形缓存区的大小默认100M 当保存的数据达到80%时 就将缓存区的数据溢出到磁盘上保存
  3. 溢出
    环形缓存区的数据达到其容量的80%时就会溢出到磁盘上进行保存 在此过程中 程序会对数据进行分区(默认HashPartition)和排序(默认根据key进行快排)缓存区不断溢出的数据形成多个小文件
  4. 合并
    溢出的多个小文件各个区合并在一起(0区和0区合并成一个da0区) 形成大文件同归归并排序保证区内的数据有序
  5. shuffle
    从过程2到过程7之间(环形缓存区-溢出-合并-shuffle-合并-reduce task) 即map任务和reduce任务之间的数据流称为shuffle(混洗) 而过程5最能体现出混洗这一概念 一般情况下 一个reduce任务的输入数据来自与多个map任务 多个reduce任务的情况下就会出现如过程5所示的 每个reduce任务从map的输出数据中获取属于自己的那个分区数据
  6. 合并
    运行reduce task的节点通过过程5 将来自多个map任务的属于自己的分区数据下载到本地磁盘工作目录 这多个分区文件通过归并排序合并成大文件 并根据key值分好组(key值相同的 value值会以迭代器的形式组在一起)
  7. reduce task
    reduce task 从本地工作目录获取已经分号组并且排好序的数据 将数据进行reduce函数中的逻辑处理中
  8. 输出
    每个reduce task 输出一个结果文件
发布了11 篇原创文章 · 获赞 1 · 访问量 304

猜你喜欢

转载自blog.csdn.net/weixin_45106430/article/details/103844735