MR处理数据内部流程图文字说明1. 客户端有一个文件,读取文件(textInputFormat),生成新的的k v,开始一行一行的读取数据,

  1. 任务被读取之后,开始计算任务切片(就是Maptask个数,maptask的个数是根据文件的个数和文件的大小来决定的),

  2. 然后kv(k代表 行偏移量,v代表行内容)交给maptask(),之后kv不断地往maptask输入,kv交给map()方法,一个kv执行一次map方法,然后可以子啊map方法中可以对文件进行切割了,

  3. Map切割完成后,context.write写出去,写到缓存区(MapOutputBuffer)中,在缓存区中进行分区标识,

  4. 然后把数组传到环形缓冲区,然后在环形缓冲区内进行排序,

  5. 然后通过spill输出溢出组件,把排好顺序的数组同过spill溢出环形缓冲区,然后写入磁盘,将写入磁盘的数据进行合并排序,再输出流写道(SepueFileOutputFormat)到磁盘中,然后提供了一个http下载服务,

  6. 当启动reducetaskde 时候开始拉去自己的数据,在拉去数据的过程中先经过shuffle,

  7. 拉去完成之后通过Merger进行归并排序,然后经过开始通过GroupingCompator判断两个相邻的key是否相同,如果相同存储在同一个迭代器中,调用一次reduce方法处理,reduce方法遍历迭代器聚合操作

  8. 然后通过outputformat写道本地磁盘中

相关文章:

  • 2022-12-23
  • 2021-12-30
  • 2021-04-24
  • 2022-12-23
  • 2022-12-23
  • 2021-04-13
  • 2021-11-23
  • 2021-03-31
猜你喜欢
  • 2021-05-01
  • 2021-11-25
  • 2021-10-01
  • 2021-11-06
  • 2021-11-07
  • 2021-06-23
  • 2021-06-23
相关资源
相似解决方案