大数据处理(一)|学习笔记

简介: 快速学习大数据处理(一)

开发者学堂课程【高校精品课-北京理工大学-大数据技术导论:大数据处理(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/857/detail/15610


大数据处理(一)

 

内容介绍:

一、引言

二、基于 mapreduce 批处理计算框架

三、mapreduce 工作原理

四、map reduce 编程

五、小结

 

一、引言

大数据技术的两大核心是大数据存储技术与大数据处理技术。在前面的章节中了解到了分布式的大数据存储技术,在处理方面,随着人们对数据特点的认识和需求的变化,以及新型数据类型的不断出现,也有了新的处理架构和处理技术。

从架构的结构上来看,有集中式的处理架构和分布式的处理架构。

图片149.png

(1)在集中式的处理架构中,把数据集中的存储在中心节点上,整个系统的所有的业务单元都集中部署在中心节点上,系统所有的功能都由这个中心节点来做集中的处理。这种部署结构非常的简单,中心节点通常依赖于大型机或者超级计算机,它们有非常卓越的性能和良好的稳定性。同时它也有一些缺陷,它的经济成本非常高,有单点故障问题,当中心节点出现故障的时候,整个系统就不可以再对外进行服务了。同时可扩展性也有一些局限性。

随着大数据时代的到来以及。互联网应用的爆炸式的增长,集中式的处理架构不再足以满足一些应用的需求,同时小型机的性能,例如普通的 PC 机的性能都在不断的提升,互联网的技术也在不断的发展,采用小型机和普通PC机,以较低成本构建分布式平台成为了一些应用的主流选择。

(2)在分布式的架构中,经济和运营成本更加的低廉,同时不存在明显的单点故障问题,也更容易进行横向的水平扩展。根据大数据的特性以及应用的需求,当前存在着很多种不同类型的分布式的计算模型,批处理计算模型、流处理计算模型、混合式的批流融合计算模型以及图处理模型。

在批处理计算模型中,数据的吞吐率非常高,适用于海量的预存数据的批处理,典型的系统,比如说 hadoop平台,之后会详细介绍 hadoop 平台中的 Map Reduce 计算模型,数据计算模型,它的处理时延非常的短,适用于产生速度快,并需要及时处理的实时数据流的处理。代表的典型系统,比如说 Storm 和 S3混合的计算模型能够综合批处理和流处理的优点,然而却有着更高的系统复杂度。典型的系统如 spark 和 flink 系统。图处理计算模型更适合处理大规模的图数据,典型的系统有 Google 的 pregel 、graph lab 等等。 

 

二、基于 mapreduce 批处理计算框架

前面的章节中了解到 hadoop 的 HDFS 分布式文件系统以及 h base 分布式数据库,它们都是以 Google 的系统作为原型来开源实现的。

1.Google 大数据的三驾马车

hadoop 的 mapreduce 同样是来自于 Google 的技术,与 hadoop 的 hdfs mapreduce 与 h base 并称为 Google大数据的三驾马车。

图片148.png

2.hadoop 简介

简单回顾一下 hadoop,Hadoop 是 Apache 软件基金会旗下的一个开源分布式的平台,它的两大核心设计就是HDFS和 mapreduce,hdfs 为海量的数据提供了存储,而 mapreduce 则为海量数据提供了计算框架。

图片147.png

3.HDFS 回顾

HDFS 有着很多优势例如说它可以向下兼容廉价的硬件设备,它采用流失的数据访问,可以提高系统的吞吐量。它更加适合于存储和管理超大型的文件。它采用简单的文件模型,可以支持更高的吞吐量,同时它有非常强大的跨平台的兼容性。

mapreduce 模型简介

mapre duce 是面向大数据并行处理的一个编程框架,它将非常复杂的运行于大规模集群上的并行计算过程。高度的抽象成了 map 和 REDUCE 两个函数。用户不需要掌握分布式并行编程的细节,只需要编写 map 和 reduce 函数就可以完成分布式的程序设计,利用集群的强大的分布式的计算能力来完成海量的数据计算。mapreduce 里面一个非常重要的设计理念就是计算向数据靠拢,而不是数据向计算靠拢。寻找数据块中最近的 map 节点来进行计算,而不是将数据搬运到计算节点上来进行运算。移动数据需要大量的网络传输开销,将大大的降低数据处理的效率。

在 mapreduce 模型里面采用了分而治之的策略。简单来说,就是把一个非常大的数据集切分为许多独立的分片,分发给多个 map 节点进行处理,通过一个或多个 reduce 节点来整合 map 节点处理的中间结果,汇总成为最终的处理结果。

图片146.png

下面具体看一下 Mapreduce 模型中的 map 和 reduce 函数、map 和 reduce 函数都是以<key value>作为输入,通过一定的映射规则转换成另一个或一批<key value pair>这个映射规则是用户在 map 和 reduce 函数里面进行自定义的。具体来看一下,对于 map 来讲,它是把输入的<key value pair>通过映射规则转换成一系列的<key value pair >reduce 函数。是将 key 以及 keep 所关联的 value 作为输入,通过一定的规则转换成了另一系列的<key value pair>。

图片145.png

以一个简单的词频统计的例子来具体的介绍一下 map 和 reduce 函数。在这个例子里面,输入是一个包含三行文本的输入文件,在实际的 mapreduce 的应用中,输入文件可能是一个非常大的数据集,首先对数据集做一个分片的处理,这个例子里面,每一行作为一个分片,每个分片输入到 map 做处理,Map 以一个分片作为输入,输出是针对每一个词的单独的词频统计信息,词频统计信息在输入到 reduce 做最终整合之前,会经历一个 Shuffle 的阶段。shafule是针对每一个词做一个合并的处理,合并的结果交给 reduce 做最终的词频统计。了解了 mapreduce 函数。

 

三、mapreduce 工作原理

1、Map 阶段:主要执行分片和映射两个操作

(1)在 mapreduce 中,管理节点,Master和工作节点 WORKER 两类节点,执行过程分为 map suffer 和 REDUCE三个阶段。具体来说,在 map 阶段,主要进行分片和 map,两个操作力的操作是将用户数据切分成多个分片,每个分片交由一个 map 处理。在第一个阶段,将用户的应用程序拷贝到 master 节点和工作节点上来,创建相应的进程。

(2)must 节点会为空闲节点分配 map 任务或是 reduce 任务,被分配了 map 任务的工作节点会去读取相应分片里面的输入数据,每一个分片对应一个 map 任务,

(3)maple 会执行用户定义的 map 函数,计算得到一些中间结果写到内存缓冲区里面。

2.shuffle 阶段

shuffle 阶段简单来讲就是将 map 的输出,作为 reduce 输入的一个过程。需要对 map 的输出进行分区排序和合并的操作。

map 会首先把中间产生的结果写到内存缓冲区里面,缓冲区里的结果会被阶段性的写入磁盘,这个过程叫它溢写,在溢写的过程中,会对数据做一个分区。通常分区的数量与后面的 reducer 的数量是相同的。在进行溢写的过程中,在每个分区里面会对 key 进行排序,同时会合并具有相同 key 的值,再去写入磁盘。

接下来执行 reduce 任务的 worker 会根据 master 提供的存储了,Map 的中间结果的地址信息,从 map 端来读取数据,数据可能来自多个map,同样的数据会先写入缓存,之后再溢写到。磁盘上,对于相同的 key,同样会进行合并的操作,这个过程被称为 reduce 端的 shuffle 操作。

3.Reduce 阶段:将 shuffle 最终生成的有序的一个文件作为 reduce 的输入。

最后进入 reduce 阶段 reduce 阶段,执行 reduce 的操作,在这个过程中,执行 reduce 任务的 worker 会建立它的输入文件。对于所有相同的 key,我们把 key 相关联的值这个 list 传给 reduce 函数,然后根据用户定义的逻辑来进行运算,产生的输出会被添加到分区的输出文件里面。当所有的 reduce 执行完毕之后,Master 来负责唤醒用户进程,来完成整个的 mapreduce 过程。

图片144.png

4. shuffle 阶段/过程

在 map 和 reduce 中间,我们会经历一个非常重要的 shuffle 阶段,那么,下面通过这个示意图来重点总结一下shuffle的过程。

图片143.png

shuffle 阶段主要是将 map 的输出,作为 reduce 输入的一个过程,shuffle 会分为 map 端的 shuffle 和 reduce 端的shuffle。在 map 端的 shuffle 里面,Map 产生的中间结果会被首先写到内存缓冲区里面,缓冲区里面的数据。会不定时的做一写操作,进行一写操作的时候,会对数据进行分区的处理,分区的数量取决于 reduce 的数量,在每个分区里面,会按 key 来进行排序。经历了 map 端的 shuffle 之后,数据是一个分区有序的状态,接下来进入到 reduced shephone 阶段,Reduced shuffle 阶段,Reduce 端会。分别从多个 map 去读取相应分区的数据,并把相应分区的数据,做一个按key排序的处理,最终输出到 reduce 里。

 

四、map reduce 编程

关于 map reduce 编程,可以参考 hadoop 的官方文档,Map reduce  tutorial 来学习如何使用 Java API 来编写 map reduce 函数。 

 图片142.png

 

五、小结

分布式并行计算是大数据时代的一个必然的趋势,在大数据时代里面,有着来源非常丰富,并且种类多种多样的这样的数据,存储和挖掘的数据量非常的庞大,越来越多的数据处理都要求批量化、实时化。流式化,这一节中,介绍了分布式的数据处理架构,重点介绍了 mapreduce 批处理计算架构,介绍了 mapreduce 的设计思想、编程模型以及它的工作原理。

了解 mapreduce,可以将复杂的运行于大规模集群上的并行计算高度的抽象为 map 和 REDUCE 两个函数,可以非常方便的进行分布式的编程。

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
存储 分布式计算 安全
大数据存储与管理(一)|学习笔记
快速学习大数据存储与管理(一)
727 0
大数据存储与管理(一)|学习笔记
|
存储 机器学习/深度学习 数据采集
大数据处理(三)|学习笔记
快速学习大数据处理(三)
105 0
大数据处理(三)|学习笔记
|
机器学习/深度学习 分布式计算 Hadoop
大数据处理(二)|学习笔记
快速学习大数据处理(二)
78 0
大数据处理(二)|学习笔记
|
SQL 安全 关系型数据库
时空场景开发实践(二)|学习笔记
快速学习时空场景开发实践(二)
142 0
时空场景开发实践(二)|学习笔记
|
存储 SQL 关系型数据库
时空场景开发实践(一)|学习笔记
快速学习时空场景开发实践(一)
212 0
时空场景开发实践(一)|学习笔记
|
存储 SQL NoSQL
大数据存储与管理(三)|学习笔记
快速学习大数据存储与管理(三)
177 0
大数据存储与管理(三)|学习笔记
|
搜索推荐 网络协议 Java
第四课(二)|学习笔记
快速学习第四课(二)
74 0
第四课(二)|学习笔记
|
机器学习/深度学习 自然语言处理 算法
课时3 :高级能力和算法效果优化(三)|学习笔记
快速学习课时3 :高级能力和算法效果优化
126 0
课时3 :高级能力和算法效果优化(三)|学习笔记
|
机器学习/深度学习 自然语言处理 算法
课时3 :高级能力和算法效果优化(一)|学习笔记
快速学习课时3 :高级能力和算法效果优化
77 0
课时3 :高级能力和算法效果优化(一)|学习笔记
|
自然语言处理 算法 机器人
课时3 :高级能力和算法效果优化(二)|学习笔记
快速学习课时3 :高级能力和算法效果优化
86 0
课时3 :高级能力和算法效果优化(二)|学习笔记