Hadoop -- MapReduce相关原理超全汇总!!!

目录

一、概述

二、MapReduce核心八步

三、MapReduce执行流程

总结


一、概述

MapReduce是代码级别的, 没有角色划分, 直接通过Python或者Java操作它即可.
MapReduce程序所需的 数据源 及 结果数据的存储, 由 HDFS 来完成.
MapReduce程序执行所需的资源等由 Yarn来调度的.

MR程序的两个弊端是什么?
1. 开发难度相对较大.        # 通过Hive解决, 写SQL => 底层自动转MR程序.
2. 执行速度相对较慢.        # 换计算引擎, 例如: Presto, Spark, Flink...

基于MapReduce构建分布式SQL引擎, 需要有哪些组件?
  元数据管理服务(metastore): 负责管理元数据的.
  SQL解析器: 负责解析SQL, 将其转成MR程序, 运行并获取结果, 然后返回.

二、MapReduce核心八步

 三、MapReduce执行流程

    1. MR程序分为MapTask阶段 和 ReduceTask阶段, 且:
        1个切片 = 1个Block块 = 1个MapTask任务 = 1个分好区, 排好序, 规好约的文件.
        1个分区 = 1个ReduceTask任务 = 1个结果文件.
    2. 先对文件切片, 每个片的大小默认和Block块大小一致(即: 128MB), 且每个切片的数据会交由1个MapTask任务来处理.
    3. MapTask任务采用逐行的方式从切片中读取数据, 逐行处理, 且会将处理后的数据放到 环形缓冲区(默认大小:100MB, 溢写比:0.8)
    4. 当环形缓冲满(80MB)的时候, 会触发溢写线程(spill), 对该部分数据做分区, 排序, 规约的操作, 然后存储到磁盘上(小文件)
    5. 对上述的小文件进行合并(默认: 10个一合并), 获取最终的文件, 即: 1个MapTask = 1个分好区, 排好序, 规好约的文件.
    6. 当MapTask任务执行结束后, ReduceTask会开启1个拷贝线程, 从各个MapTask的结果文件中, 拷贝属于自己的数据(根据分区编号识别).
    7. ReduceTask对数据进行 合并, 排序的操作, 获取最终结果数据.
    8. ReduceTask将处理好的结果数据写到磁盘文件中, 1个ReduceTask = 1个结果文件, 至此, MR程序执行结束.


总结

以上就是今天的内容,本文介绍了MapReduce的相关原理.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值