作家
登录

一文读懂大数据计算框架与平台

作者: 来源: 2017-05-04 20:57:39 阅读 我要评论

图5. MapReduce与Spark中心结不雅保存方法比较

图6. RDD reduceByKey内部实现

RDD因为把数据存放在内存中而不是磁盘上,是以须要比Hadoop更多地推敲容错问题。分布式数据集的容错有两种方法:数据检查点和记录数据的更新。处理海量数据时,数据检查点操作成本很高, 是以Spark默认选择记录更新的方法。不过如不雅更新粒度太细太多,记录更新成本也不低。是以,RDD只支撑粗粒度转换,即只记录单个块上履行的单个操作,然后将创建RDD的一系列变换序列记录下来,类似于数据库中的日记。

当RDD的部分分区数据损掉时,Spark根据之前记录的演变过程从新运算,恢复损掉的数据分区。Spark生态圈的另一项目Alluxio(原名Tachyon)也采取类似的思路,使数据写入速度比HDFS稀有量级的晋升。

下面总结Spark对MapReduce的改进:

MapReduce抽象层次低,须要手工编写代码完成;Spark基于RDD抽象,使数据处理逻辑的代码异常简短。

MapReduce只供给了map和reduce两个操作,表达力欠缺;Spark供给了很多转换和动作,很多关系数据库中常见的操作如JOIN、GROUP BY已经在RDD中实现。

MapReduce中,只有map和reduce两个阶段,复杂的枷⒚须要大年夜量的组合,并且由开辟者本身定义组合方法;Spark中,RDD可以持续履行多个转换操作,如不雅这些操尴尬刁难应的RDD分区不变的话,还可以放在同一个义务中履行。

MapReduce处理逻辑隐蔽在代铝闼楝不直不雅;Spark代码不包含操作细节,逻辑更清楚。

MapReduce中心结不雅放在HDFS中;Spark中心结不雅放在内存中,内存放不下时才写入本地磁盘而不是HDFS,这明显进步了机能,特别是在迭代式数据处理的场合。

MapReduce中,reduce义务须要等待所有map义务完成后才可以开端;在Spark中,分区雷同的转换构成流水线放到同一个义务中运行。

3. 流计算框架

3.1. 流计算概述

在大年夜数据时代,数据平日都是持续赓续动态产生的。在很多场合,数据须要在异常短的时光内得到处理,并且还要推敲容错、拥塞控制等问题,避免数据漏掉或反复计算。流计算框架则是针对这一类问题的解决筹划。流计算框架一般采取DAG(有向无环图)模型。图中的节点分为两类:一类是数据的输入节点,负责与外界交互而向体系供给数据;另一类是数据的计算节点,负责完成某种处理功能如过滤、累加、归并等。大年夜外部体系赓续传入的及时数据则流经这些节点,把它们串接起来。如不雅把数据流比作水的话,输入节点比如是喷头,源源赓续地出水,计算节点则相当于水管的转接口。如下图所示。

图7. 流计算DAG模型示意图

图8. 流计算分组

因为应用处合的广泛性,今朝市情上已经有不少流寂?娼台,包含Google MillWheel、Twitter Heron和Apache项目Storm、Samza、S4、Flink、Apex、Gearpump。

3.2. Storm及Trident

在流计算框架中,今朝人气最高,应用最广泛的要数Storm。这是因为Storm具有简单的编程模型,且支撑Java、Ruby、Python等多种开辟说话。Storm也具有优胜的机能,在多节点集群膳绫强秒可以处理上百万条消息。Storm在容错方面也设计得很优雅。下面介绍Storm确保消息靠得住性的思路。

在DAG模型中,确保消息靠得住的可贵在于,原始数据被当前的计算节获成功处理后,还不克不及被丢弃,因为它生成的数据仍然可能在后续的计算节点上处理掉败,须要由该消息从新生成。而如不雅要对消息在各个计算节点的处理情况都作跟踪记录的话,则会消费大年夜量资本。

Storm的解决思路,是为每条消息分派一个ID作为独一性标识,并在消息中包含原始输入消息的ID。同时用一个响应中间(Acker)保护每条原始输入消息的状况,状况的初值为该原始输入消息的ID。每个计算节获成功履行后,则把输入和输出消息的ID进行异或,再异或对应的原始输入消息的状况。因为每条消息在生成和处理时分别被异或一次,则成功履行后所有消息均被异或两次,对应的原始输入消息的状况为0。是以当状况为0后可安然清除原始输入消息的内容,而如不雅跨越指准时光距离后状况仍不为0,则认为处理该消息的某个环节出了问题,须要从新履行。

图9. Storm包管消息靠得住性过程示意图

Storm还实现了更高层次的抽象框架Trident。Trident以微批处理的方法处理数据流,比如每次处理100笔记录。Trident供给了过滤、分组、连接、窗口操作、聚合、状况治理等操作,支撑跨批次进行聚合处理,并对履行过程进行优化,包含多个操作的归并、数据传输前的本地聚合等。以微批处理方法处理数据流的框架还有Spark Streaming。

(1) 及时流处理

(2) 微批处理

图10. 及时流处理与微批处理比较

下面是Storm、Trident与别的几种流计算框架的比较:

4.1. 概述

在解决了大年夜数据的靠得住存储和高效计算后,若何为数据分析人员供给便利日益受到存眷,而最便利的分析方法莫过于交互式萌芽。这几年交互式分析技巧成长敏捷,今朝这一范畴有名的平台有十余个,包含Google开辟的Dremel和PowerDrill,Facebook开辟的Presto, Hadoop办事商Cloudera和HortonWorks分别开辟的Impala和Stinger,以及Apache项目Hive、Drill、Tajo、Kylin、MRQL等。


  推荐阅读

  网易数据传输服务NDC高可用实践

高可用实践 【51CTO.com原创稿件】NDC全称Netease data canal,即网易数据运河,是一个平台化的构造化数据传输体系,目标是解决构造化数据的及时迁徙、同步、订阅、OLTP到OLAP的及时数据整>>>详细阅读


本文标题:一文读懂大数据计算框架与平台

地址:http://www.17bianji.com/lsqh/35021.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)