MapReduce工作机制

image.png
image.png

Maptask工作机制

image.png

ReduceTask工作机制

image.png

InputFormat

  • TextInputFormat
  • CombinerTextInpuFormat
    • 切片机制

image.png

  • 切片
    • MapTask并行度由数据切片决定
    • 提交 xml split jar
    • 剩余数据切片大小<1.1 不做分割

Shuffle

image.png

Partition

  • 默认-HashPartition
    • return (key. hashCode()& Integer. MAX VALUE)% numReduceTasks;
  • 自定义

    • @overwrite getParition()

      Combiner

  • 局部汇总 — Maptask

    OutputFormat

  • TaskOutputFormat

  • 自定义

Join操作

  • 解决数据倾斜

  • Reduce Join

    • Map中传多个表,Reduce中取出set
  • Map Join
    • 加载缓存,字符串拼接

Yarn工作机制

image.png

调度器

  • FIFO
  • 容器调度器(Capacity Scheduler)
    • 多队列+资源分配
  • 公平调度器(Fair Scheduler)
    • 多队列+队列内评分资源
    • “缺额”— 刚到,获取资源不足

!!Shuffle

为什么需要shuffle??? map后 避免reduce任务分配到大量数据

map端

  • 环形缓存区缓存
  • 在内存中经过分区、排序后溢出到磁盘
  • 合并溢出文件

reduce端

  • 接收到不同 map 任务传来的有序数据,合并排序。