专栏首页云上大数据EMR入门学习之MR、Tez、Spark之间的关系(六)
原创

EMR入门学习之MR、Tez、Spark之间的关系(六)

一、MapReduce的编程模型

Hadoop MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。

maptask:

读数据:读取源数据,maptask获取分片数据信息(类型有:TextInputFormat,文本文件;SequenceFileInputFormat,序列化文件;DBInputFomrat,数据库文件), 形成key-value数据;

逻辑处理:通过循环调用Mapper类的map方法读取每行数据进行处理;

分区:通过Partitioner类的getPartition()方法对数据进行分区(默认执行HashPartitioner,分发规则:(key的hashcode值&Integer.MAX_VALUE)%numReducetTasks),分区规则注明分区号相同的数据会被分发给同一reducetask(只要按照规则就会返回相同的分区号);

排序:将数据通过key的compareTo()方法比较排序(默认是普通的字典排序);

reducetask:

读数据:reducetask会通过http方式下载各自处理的“区”的数据到本地磁盘,并合并排序,执行默认的GroupingComparator确定数据key相同的为同一组(我们在自定义的时候写一个类A继承WritableComparator,根据需求重写compare()方法,因为要从磁盘上读取数据,那么需要反序列化,需要在A的构造函数中告知WritableComparator反序列化的类型,否则会出错);;

处理数据:reducetask把相同key的数据值聚合到Reducer类,按照reduce()方法处理逻辑,输出数据(输出类型:TextOutputFomat,文件类型;SequenceFileOutputFomrat,序列化文件;DBOutputFomrat,数据库数据文件)。如下图:

二、Tez的计算架构

Tez是Apache开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业。总结起来,Tez有以下特点:

(1)Apache二级开源项目

(2)运行在YARN之上

(3) 适用于DAG(有向图)应用(同Impala、Dremel和Drill一样,可用于替换Hive/Pig等)

传统的MR(包括Hive,Pig和直接编写MR程序)。假设有四个有依赖关系的MR作业(1个较为复杂的Hive SQL语句或者Pig脚本可能被翻译成4个有依赖关系的MR作业)或者用Oozie描述的4个有依赖关系的作业,运行过程如上图(其中,绿色是Reduce Task,需要写HDFS)

Tez可以将多个有依赖的作业转换为一个作业(这样只需写一次HDFS,且中间节点较少),从而大大提升DAG作业的性能

三、Spark计算框架

Spark是一个分布式的内存计算框架,其特点是能处理大规模数据,计算速度快。Spark延续了Hadoop的MapReduce计算模型,相比之下Spark的计算过程保持在内存中,减少了硬盘读写,能够将多个操作进行合并后计算,因此提升了计算速度。同时Spark也提供了更丰富的计算API。

MapReduce是Hadoop和Spark的计算模型,其特点是Map和Reduce过程高度可并行化;过程间耦合度低,单个过程的失败后可以重新计算,而不会导致整体失败;最重要的是数据处理中的计算逻辑可以很好的转换为Map和Reduce操作。对于一个数据集来说,Map对每条数据做相同的转换操作,Reduce可以按条件对数据分组,然后在分组上做操作。除了Map和Reduce操作之外,Spark还延伸出了如filter,flatMap,count,distinct等更丰富的操作。

四、总结

概述:Hadoop是基础,其中的HDFS提供文件存储,Yarn进行资源管理。在这上面可以运行MapReduce、Spark、Tez等计算框架。

MapReduce:是一种离线计算框架,将一个算法抽象成Map和Reduce两个阶段进行处理,非常适合数据密集型计算。

Tez: 是基于Hadoop Yarn之上的DAG(有向无环图,Directed Acyclic Graph)计算框架。它把Map/Reduce过程拆分成若干个子过程,同时可以把多个Map/Reduce任务组合成一个较大的DAG任务,减少了Map/Reduce之间的文件存储。同时合理组合其子过程,也可以减少任务的运行时间。

Spark:Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • EMR入门学习之Hue上创建工作流(十一)

    本文将通过一个简单,并且具有典型代表的例子,描述如何使用EMR产品中的Hue组件创建工作流,并使该工作流每天定时执行。

    和大数据一起走过的路程
  • EMR入门学习之Ranger操作使用(十二)

    为了获得集群数据访问控制能力,在创建集群的时候,请勾选ranger组件。在集群初始化完成后,请在组件快捷入口中,找到ranger的快捷访问入口,并登陆range...

    和大数据一起走过的路程
  • EMR入门学习之HBase数据迁移(九)

    从上面图中可看出,目前的方案主要有四类,Hadoop层有一类,HBase层有三类。下面分别介绍一下。

    和大数据一起走过的路程
  • 【独家】一文读懂大数据计算框架与平台

    1. 前言 计算机的基本工作就是处理数据,包括磁盘文件中的数据,通过网络传输的数据流或数据包,数据库中的结构化数据等。随着互联网、物联网等技术得到越来越广泛的应...

    数据派THU
  • Peter教你谈情说AI | 06朴素贝叶斯分类器

    第五节开始我们谈到回归问题和分类问题,其中回归问题可以用梯度下降法求出其模型,那么分类模型可以通过什么方法可以求出呢?

    刘盼
  • 腾讯TMQ在线沙龙回顾|Android App质量监控及工具应用实战

    腾讯移动品质中心TMQ
  • (译)Cloudflare 的部署失误导致了全球故障

    今天有大概 30 分钟,Cloudflare 网站的浏览者收到了 502 错误,起因是我们网络中的 CPU 使用率飙升。这个 CPU 的峰值是由一个错误的软件部...

    崔秀龙
  • [译文和个人分析]REST vs RPC - RESTful究竟是什么?

    好烦啊,分不清REST RPC RESTful的区别,所以只能翻译一篇谷歌的文章,括号中是我的补充

    ydymz
  • 一个BUG的发现、定位和解决

    前言 在iOS 11发布之后,出现了一系列适配相关的问题,UIScrollView在pagingEnabled=YES时滑动手势不灵敏,UITableView的...

    落影
  • 降低大数据开发难度,轻量级计算实例

    内容来源:2018 年 1 月 27 日,润乾软件创始人蒋步星在“TECH INSIGHT 暨 ArchData技术峰会成都站”进行《轻量级大数据引擎》演讲分享...

    IT大咖说

扫码关注云+社区

领取腾讯云代金券