Hadoop-MapReduce 工作流程图
2024-11-15 09:23:50 3 举报
Hadoop-MapReduce 工作流程图
作者其他创作
大纲/内容
李 1……
Merge 合并(归并排序)
根据分区拉取 Fetch
Memony 内存
李 1、孙 1、张 1……
file.out合并文件
Partition 分区(Hash)
田 1……
王 1……
第一次溢写 Spill……第 N 次溢写 Spill
Combiner 组合器(可选)
KvBuffer 环形数据缓冲区默认 100M,达到 80% 后开始溢写
spillN.out.index 溢写文件对应的索引文件索引文件主要保存分区起始位置、数据长度
P2:李 1、孙 1、张 1……
分组
HDFS
P1:田 1、钱 1、赵 1……
田 1、钱 1、赵 1……
P0:王 1、郑 1、周 1……
用户重写的 reduce 方法逻辑
Combiner组合器(可选)
王 1、郑 1、周 1……
Combiner 组合器(用户自定义设置)1. 每次 Spill 溢写时会被调用2. 合并文件时文件数达到 3 个会被调用
spillN.out.index 溢写文件对应的索引文件索引文件主要保存分区起始位置、数据长度
P2:李 1、孙 1、张 1…(Sort 快速排序)
用户重写的 map 方法逻辑
P1:田 1、钱 1、赵 1…(Sort 快速排序)
向环形缓冲区写入 KV 数据
以 Key Value 方式读取内容到 map 方法Key:偏移量,Value:一行数据
spillN.out 溢写文件N 表示溢写次数
Shuffle 洗牌
Output写出
数据库
Split切片
Merge 合并(归并排序)
MapTask拆分计算
file.out.index合并文件对应的索引文件
第一次溢写 Spill……第 N 次溢写 Spill
Block3——65M张三、李四、王五……
当已完成的 MapTask 任务达到总 MapTask 任务的 5% 时,ReduceTask 即可初始化并根据 file.out.index 拉取分区数据。拉取回来的数据,在 MapTask 阶段是有序的,但是从不同的 MapTask 拉取回来相同分区的数据后,数据就又无序了。对拉取回来的数据进行合并,全局归并排序,然后再分组进入 Reduce 阶段(用户重写的 reduce 方法逻辑)。有多少个 ReduceTask 就有多少个分区,一个分区可以有若干组,默认情况下使用 MapOutputKey 的比较器规则为分组条件。
100M
用户重写的 reduce 方法逻辑
Split1——128M张三、李四、王五……
Disk磁盘
P0:王 1、郑 1、周 1…(Sort 快速排序)
Memony内存
Disk 磁盘
李 n……
有多少个 ReduceTask 就有多少个分区,一个分区可以有若干组,默认情况下使用 MapOutputKey 的比较器规则为分组条件
ReduceTask归并
一个 Split对应一个 MapTask
Merge 默认每次最多合并 10 个文件
Split3——65M张三、李四、王五……
Shuffle —— map 方法到 reduce 方法之间
Split2——128M张三、李四、王五……
Block1——128M张三、李四、王五……
Block2——128M张三、李四、王五……
根据文件大小和个数,计算任务切片,并初始化 MapTask。切片是一个逻辑概念,可以在不改变现有数据存储的情况下,控制参与计算节点的数量。Split 切片默认大小是 Block 的大小,Block 大小默认是 128M。
HDFS集群
全国百家姓人员统计.txt321M
Disk 磁盘
王 n……
Input
田 n……
Merge 默认每次最多合并 10 个文件Map 和 Reduce 共用该配置
写出到不同的存储
Hadoop-MapReduce 工作流程图
0 条评论
下一页