大数据技术学习——MapReduce

举报
slx_share 发表于 2023/02/25 17:18:05 2023/02/25
【摘要】 MapReduce是大规模并行批处理计算框架,用Map以及Reduce实现基本并行计算任务。

1       一句话介绍

MapReduce是大规模并行批处理计算框架,用Map以及Reduce实现基本并行计算任务。

2       计算框架

框架是基于特定领域而言的,领域内共性部分沉淀下来就形成框架,领域内上层开发者则需要遵循框架定义的规范,根据需求添砖加瓦。另外,大的领域可继续缩小范围,新增共性成分形成子框架。所谓计算框架就是计算领域内沉淀下来的底层的数据处理逻辑架构。例如,分布式计算领域内,最基础的共性就是将任务切分成子任务,再分发至多台计算机上执行,基于此再延伸出其他共性部分,包括容错、负载分担、分布式一致性等等。该领域还可进一步细分成批处理、流处理、交互式分析等子领域。


3       数据处理架构图

MapReduce是批处理计算框架。整个框架的核心就是Map以及Reduce任务,用户只需要根据实际情况实现Mapper类以及Reducer即可,剩下交由框架去执行(包括shuffle)。

整体的数据处理逻辑架构如下:


注:map会对中间结果进行分区、排序,reduce会进行合并排序

WordCount示例如下:

  • 文件按照一定标准分片(默认等于BlockSize),每个分片对应一个Map任务。文件切分时会尽量将本地磁盘上存储的数据分配给本地的Map任务,避免网络开销。
  • Map任务输出键值对。
  • 根据应用程序定义的分组方式(上图即根据单词),shuffle过程对数据进行分组,然后启动相应个数的Reduce任务,且Reduce任务通过网络获取该组所有键值对。
  • Reduce任务将组内键名相同的值合并为列表输出。

4       数据倾斜

数据倾斜主要发生在Reduce阶段,而很少发生在 Map阶段,其原因是Map端的数据倾斜一般是由于HDFS数据存储不均匀造成的(一般数据均匀分块存储,每个文件大小基本固定),而Reduce阶段的数据倾斜一般是因为分析师没有考虑到某种key值对应value数据量偏多的情况而导致的。

5       Tez引擎

Tez引擎源于MapReduce引擎,核心思想是将Map与Reduce任务进一步拆分为input、processor、sort、merge以及output算子,灵活表达更加复杂的操作,组合若干操作形成DAG计算任务,减少磁盘存储中间结果。


目前,Tez引擎基本与Hive捆绑,在其他领域应用不多,社区也不活跃。

6       参考

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。