Hadoop五大过程举例(以单词统计为例)

本文以单词统计为例,详细介绍了Hadoop的五大过程。包括输入阶段对文件分片并转换为键值对,Map阶段拆分数据、溢写和合并,Reduce阶段获取数据、合并排序、分组和聚合,最后输出统计结果,还提及排序方法的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hadoop五大过程举例(以单词统计为例)

一、Input
输入:

File1:
Hadoop flink Hadoop
Hbase spark flink
File2:
hue hive hive spark spark
hadoop spark spark hbase
1、对文件进行分片(文件大小默认128M),以下假设分片为两片
2、转换为key value形式
Split1:
Key value
0 Hadoop Flink Hadoop
20 Hbase Spark Flink

Split2:
Key value
1 Hue Hive Hive Spark Spark
26 Hadoop Spark Spark Hbase

二、Map
 Map
根据分片的数量启动队相应的maptask数量,每个maptask调用对应的map方法。
将输入的文件按照中的value进行拆分,将每个字母作为key,每个value记为1。
MAPTASK1:
Hadoop 1
Flink 1
Hadoop 1
Hbase 1
Spark 1
Flink 1

MAPTASK2:
Hue 1
Hive 1
Hive 1
Spark 1
Spark 1
Hadoop 1
Spark 1
Spark 1
Hbase 1

 Mapshuffle:

 Spill过程(溢写):将内存中的数据写入磁盘变成文件:
1、 每个maptask会将自己的处理结果放入一个环形的内存缓冲区中(100M)
2、 当缓冲区达到80%的时候会触发溢写,进行相应的排序,以及分区(本质时打标签,表明属于哪一个reduce进程),最后不满80%的也作为一个文件写入。

对内容进行分区以及排序如下:排序方法为快速排序。

MAPTASK1:filea
Hadoop 1 reduce1
Hadoop 1 reduce1
Hbase 1 reduce1
Flink 1 reduce2

MAPTASK1:fileb
Flink 1 reduce2
Spark 1 reduce2

MAPTASK2:filea
Hadoop 1 reduce1
Hbase 1 reduce1
Hive 1 reduce1
Hive 1 reduce1

MAPTASK2:fileb
Hue 1 reduce1
Spark 1 reduce2
Spark 1 reduce2
Spark 1 reduce2
Spark 1 reduce2

 Merge过程(排序合并):每个maptask会将自己生成的所有小文件进行合并,保证每个maptask只有一个大文件:

把每个maptask进行合并并且进行排序:排序方法为归并排序。
Maptask1:
Hadoop 1 reduce1
Hadoop 1 reduce1
Hbase 1 reduce1
Flink 1 reduce2
Flink 1 reduce2
Spark 1 reduce2

Maptask2:
Hadoop 1 reduce1
Hbase 1 reduce1
Hive 1 reduce1
Hive 1 reduce1
Hue 1 reduce1
Spark 1 reduce2
Spark 1 reduce2
Spark 1 reduce2
Spark 1 reduce2

三、Reduce
 Reduceshuffle:
 Merge:通过Http协议每个reducetask会到每个maptask的结果中去取自己的数据。

ReduceTask1:
Maptask1:
Hadoop 1 reduce1
Hadoop 1 reduce1
Hbase 1 reduce1
Maptask2:
Hadoop 1 reduce1
Hbase 1 reduce1
Hive 1 reduce1
Hive 1 reduce1
Hue 1 reduce1
Reducetask2:
Maptask1:
Flink 1 reduce2
Flink 1 reduce2
Spark 1 reduce2
Maptask2:
Spark 1 reduce2
Spark 1 reduce2
Spark 1 reduce2
Spark 1 reduce2

合并过程中进行新的排序:(排序方法同样为归并排序)
Reducetask1:
Hadoop 1
Hadoop 1
Hadoop 1
Hbase 1
Hbase 1
Hive 1
Hive 1
Hue 1
Reducetask2:
Flink 1
Flink 1
Spark 1
Spark 1
Spark 1
Spark 1
Spark 1

 Group:将merge后的结果进行分组,同一组的结果放在同一个key的value中:
Reducetask1:
Hadoop 1 1 1 1
Hbase 1 1
Hive 1 1 1

Reducetask2:
Flink 1 1
Spark 1 1 1 1 1

 Reduce:将shuffle中的结果进行聚合,对一条数据调用reduce方法:

Reduce task1:
Hadoop 4
Hbase 2
Hive 3

Reduce task2:
Flink 2
Spark 5

四、output(将结果进行输出)

	文件一:part-r-00000

Hadoop 4
Hbase 2
Hive 3

文件2:part-r-00001
Flink 2
Spark 5

注:map中的两个排序以及reduce中的排序均调用排序其或者compareto方法来实现,实现的方法不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值