《Hadoop与大数据挖掘》一2.1.3 Hadoop计算—MapReduce

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

本节书摘来华章计算机《Hadoop与大数据挖掘》一书中的第2章 ,第2.1.3节,张良均 樊 哲 位文超 刘名军 许国杰 周 龙 焦正升 著 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.1.3 Hadoop计算—MapReduce

MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(归纳)”以及它们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。
当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归纳)函数,用来保证所有映射的键值对中的每一个共享相同的键组,如图2-6所示。

image


下面将以Hadoop的“Hello World”例程—单词计数来分析MapReduce的逻辑,如图2-7所示。一般的MapReduce程序会经过以下几个过程:输入(Input)、输入分片(Splitting)、Map阶段、Shuffle阶段、Reduce阶段、输出(Final result)。

image


1)输入就不用说了,数据一般放在HDFS上面就可以了,而且文件是被分块的。关于文件块和文件分片的关系,在输入分片中说明。
2)输入分片:在进行Map阶段之前,MapReduce框架会根据输入文件计算输入分片(split),每个输入分片会对应一个Map任务,输入分片往往和HDFS的块关系很密切。例如,HDFS的块的大小是128MB,如果我们输入两个文件,大小分别是27MB、129MB,那么27MB的文件会作为一个输入分片(不足128M会被当作一个分片),而129MB则是两个输入分片(129-128=1,不足128MB,所以1MB也会被当作一个输入分片),所以,一般来说,一个文件块会对应一个分片。如图2-7所示,Splitting对应下面的三个数据应该理解为三个分片。
3)Map阶段:这个阶段的处理逻辑其实就是程序员编写好的Map函数,因为一个分片对应一个Map任务,并且是对应一个文件块,所以这里其实是数据本地化的操作,也就是所谓的移动计算而不是移动数据。如图2-7所示,这里的操作其实就是把每句话进行分割,然后得到每个单词,再对每个单词进行映射,得到单词和1的键值对。
4)Shuffle阶段:这是“奇迹”发生的地方,MapReduce的核心其实就是Shuffle。那么Shuffle的原理呢?Shuffle就是将Map的输出进行整合,然后作为Reduce的输入发送给Reduce。简单理解就是把所有Map的输出按照键进行排序,并且把相对键的键值对整合到同一个组中。如图2-7所示,Bear、Car、Deer、River是排序的,并且Bear这个键有两个键值对。
5)Reduce阶段:与Map类似,这里也是用户编写程序的地方,可以针对分组后的键值对进行处理。如图2-7所示,针对同一个键Bear的所有值进行了一个加法操作,得到这样的键值对。
6)输出:Reduce的输出直接写入HDFS上,同样这个输出文件也是分块的。
说了这么多,其实MapReduce的本质用一张图可以完整地表现出来,如图2-8所示。

image


MapReduce的本质就是把一组键值对经过Map阶段映射成新的键值对;接着经过Shuffle/Sort阶段进行排序和“洗牌”,把键值对排序,同时把相同的键的值整合;最后经过Reduce阶段,把整合后的键值对组进行逻辑处理,输出到新的键值对。这样的一个过程,其实就是MapReduce的本质。
Hadoop MapReduce可以根据其使用的资源管理框架不同,而分为MR v1和YARN/MR v2版本,如图2-9所示。
在MR v1版本中,资源管理主要是Jobtracker和TaskTracker。Jobtracker主要负责:作业控制(作业分解和状态监控),主要是MR任务以及资源管理;而TaskTracker主要是调度Job的每一个子任务task;并且接收JobTracker的命令。


image


在YARN/MR v2版本中,YARN把JobTracker的工作分为两个部分:
1)ResourceManager(资源管理器)全局管理所有应用程序计算资源的分配。
2)ApplicationMaster负责相应的调度和协调。
NodeManager是每一台机器框架的代理,是执行应用程序的容器,监控应用程序的资源(CPU、内存、硬盘、网络)使用情况,并且向调度器汇报。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
192 6
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
83 2
|
6天前
|
存储 分布式计算 大数据
Flume+Hadoop:打造你的大数据处理流水线
本文介绍了如何使用Apache Flume采集日志数据并上传至Hadoop分布式文件系统(HDFS)。Flume是一个高可用、可靠的分布式系统,适用于大规模日志数据的采集和传输。文章详细描述了Flume的安装、配置及启动过程,并通过具体示例展示了如何将本地日志数据实时传输到HDFS中。同时,还提供了验证步骤,确保数据成功上传。最后,补充说明了使用文件模式作为channel以避免数据丢失的方法。
34 4
|
21天前
|
数据采集 分布式计算 Hadoop
使用Hadoop MapReduce进行大规模数据爬取
使用Hadoop MapReduce进行大规模数据爬取
|
1月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
115 2
|
1月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
84 1
|
2月前
|
分布式计算 Hadoop 大数据
大数据体系知识学习(一):PySpark和Hadoop环境的搭建与测试
这篇文章是关于大数据体系知识学习的,主要介绍了Apache Spark的基本概念、特点、组件,以及如何安装配置Java、PySpark和Hadoop环境。文章还提供了详细的安装步骤和测试代码,帮助读者搭建和测试大数据环境。
81 1
|
2月前
|
SQL 分布式计算 大数据
大数据平台的毕业设计01:Hadoop与离线分析
大数据平台的毕业设计01:Hadoop与离线分析
165 0
|
数据采集 分布式计算 搜索推荐
Hadoop学习---7、OutputFormat数据输出、MapReduce内核源码解析、Join应用、数据清洗、MapReduce开发总结(一)
Hadoop学习---7、OutputFormat数据输出、MapReduce内核源码解析、Join应用、数据清洗、MapReduce开发总结(一)
|
存储 分布式计算 Hadoop
Hadoop基础学习---6、MapReduce框架原理(一)
Hadoop基础学习---6、MapReduce框架原理(一)