Hadoop中的MapReduce流程(图解)

一、MapReduce流程图:

image-20240409194307341

 

二、MapReduce流程步骤:

1.文件上传到HDFS中,默认以128M切分为一个block块
2.每个block块对数据进行逻辑上的切片,切片大小为128M,与block块大小一致
3.之后根据切片产生Map任务
4.Map任务会进入环形缓冲区,根据Reduce数量以及数据本身的值进行分区编号(底层与哈希值有关)并进行快速排序,当写入环形缓冲区的数据达到环形缓冲区的80%,向磁盘溢写一个小文件
5.之后将溢写的小文件使用归并算法合并产生Map任务的结果文件
6.然后Reduce从结果文件拉取对应的分区编号的数据,去掉编号后,对拉取的文件数据进行归并排序
7.执行Reduce逻辑,产生Reduce结果

三、思考

思考1:map数量是越多越好吗?

在产生Map任务之前,会进行逻辑切片,切片的大小默认与block大小一致(128M),这个切片的大小会影响下一阶段生成map任务的数量,切片的数量越多,产生的map任务数量就越多,同时需要的资源和时间也越多

 

思考2:hdfs是否适合存储小文件(从MapReduce角度出发)

不适合,小文件一多,意味着block块变多,产生的split切片就多,就意味着map任务过多,会消耗大量的资源和时间

 

思考3: split与map的关系?

要想产生的map任务数量变少,就要调大切片的大小;反之调小;

 

思考4:split切片的大小可以随意调整吗?

split切片的大小理论上来说,想调整多大都可以,但是官方建议是128M的整数倍,这样是为了防止跨节点获取数据,加大网络消耗带宽,增加数据读取时间

 

思考5:map的数量一定是与split数量一致吗?

如果最后两个split切片实际的数据大小加起来小于等于128M(block块的大小)*1.1,那么就会被读取到一个map任务中进行,否则就两个map任务分别读取数据进行处理

 

思考6:map以什么样的格式读取数据呢?

默认情况下,每次读取文件的一样数据,将这一行的数据封装成一个键值对读取进来,键值对的类型默认是<LongWriteable,Text>。
LongWriteable代表的是行开始索引,Text代表的是一行的数据

 

思考7:reduce的个数可以调整吗?

可以,默认MapReduce只提供一个Reduce,但是可以在代码或者集群配置文件中设置reduce个数

 

 思考8:reduce的个数会带来什么影响?

1.有几个reduce最终就会产生几个结果文件
2.reduce的个数影响数据在环形缓冲区的分区编号的计算
3.reduce的数量也会影响整体的执行速度和效率

 

思考9:reduce发挥了什么作用?  

reduce主要从map中间结果文件中拉取对应分区编号的数据,去除编号后,对拉取的多个文件进行归并排序,执行reduce的逻辑

 

思考10:map的数量可以通过配置文件配置吗?  

map数量不可以直接设置,但是可以设置split切片的大小来影响map

 

思考11:整个MapReduce过程中,经过了几次排序,分别是?  

一共经历了3次,一次快速排序,两次归并排序,快速排发生在环形缓冲区内部编号之后,第一次归并排序是将环形缓冲区溢写的小文件进行归并排序,第二次归并排序发生在reduce阶段,拉取所有的小文件后,对拉取的小文件进行归并排序。

相关推荐

  1. Hadoop MapReduce

    2024-04-14 18:12:01       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-14 18:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-14 18:12:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-14 18:12:01       82 阅读
  4. Python语言-面向对象

    2024-04-14 18:12:01       91 阅读

热门阅读

  1. IntelliJ IDEA 代码编辑利器:快速配置技巧精要

    2024-04-14 18:12:01       31 阅读
  2. Linux C++ 034-STL之谓词

    2024-04-14 18:12:01       32 阅读
  3. 从零学算法1702

    2024-04-14 18:12:01       33 阅读
  4. 数据结构之查找的总结

    2024-04-14 18:12:01       33 阅读
  5. 喊7游戏 python版

    2024-04-14 18:12:01       33 阅读
  6. Unity自定义框架(2)-----------事件中心

    2024-04-14 18:12:01       38 阅读
  7. ucore 实验物理内存管理篇

    2024-04-14 18:12:01       32 阅读
  8. React state用法 异步总结

    2024-04-14 18:12:01       27 阅读
  9. PV和uv的区别

    2024-04-14 18:12:01       42 阅读
  10. 力扣经典150题第二十二题:Z 字形变换

    2024-04-14 18:12:01       35 阅读