Spark Streaming:大规模流式数据处理的新贵.pdfVIP

Spark Streaming:大规模流式数据处理的新贵.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Spark Streaming:大规模流式数据处理的新贵 Spark Streaming是大规模流式数据处理的新贵,将流式计算分解成一系列短小的批处理作业。 本文阐释了SparkStreaming 的架构及编程模型,并结合实践对其核心技术进行了深入的剖析,给出 了具体的应用场景及优化方案。 提到Spark Streaming,我们不得不说一下BDAS (Berkeley Data Analytics Stack),这个伯 克利大学提出的关于数据分析的软件栈。从它的视角来看,目前的大数据处理可以分为如以下三个类 型。 1.复杂的批量数据处理(batchdataprocessing),通常的时间跨度在数十分钟到数小时之间。 2.基于历史数据的交互式查询 (interactivequery),通常的时间跨度在数十秒到数分钟之间。 3.基于实时数据流的数据处理(streaming data processing),通常的时间跨度在数百毫秒到 数秒之间。 目前已有很多相对成熟的开源软件来处理以上三种情景,我们可以利用MapReduce来进行批量数 据处理,可以用Impala来进行交互式查询,对于流式数据处理,我们可以采用Storm。对于大多数 互联网公司来说,一般都会同时遇到以上三种情景,那么在使用的过程中这些公司可能会遇到如下的 不便。 1.三种情景的输入输出数据无法无缝共享,需要进行格式相互转换。 2.每一个开源软件都需要一个开发和维护团队,提高了成本。 3.在同一个集群中对各个系统协调资源分配比较困难。 BDAS就是以Spark为基础的一套软件栈,利用基于内存的通用计算模型将以上三种情景一网打 尽,同时支持Batch、Interactive、Streaming的处理,且兼容支持HDFS和S3等分布式文件系统, 可以部署在YARN和Mesos等流行的集群资源管理器之上。BDAS 的构架如图1所示,其中Spark可以 替代MapReduce进行批处理,利用其基于内存的特点,特别擅长迭代式和交互式数据处理;Shark处 理大规模数据的SQL查询,兼容Hive 的HQL。本文要重点介绍的Spark Streaming,在整个BDAS 中 进行大规模流式处理。 图1 BDAS软件栈 Spark Streaming构架 计算流程:SparkStreaming是将流式计算分解成一系列短小的批处理作业。这里的批处理引擎 是Spark,也就是把Spark Streaming 的输入数据按照batch size (如1秒)分成一段一段的数据 (Discretized Stream),每一段数据都转换成Spark 中的RDD (ResilientDistributedDataset), 然后将 Spark Streaming 中对 DStream 的 Transformation 操作变为针对 Spark 中对 RDD 的 Transformation操作,将RDD经过操作变成中间结果保存在内存中。整个流式计算根据业务的需求 可以对中间的结果进行叠加,或者存储到外部设备。图2显示了Spark Streaming的整个流程。 图2 Spark Streaming构架图 容错性:对于流式计算来说,容错性至关重要。首先我们要明确一下Spark 中RDD的容错机制。 每一个RDD都是一个不可变的分布式可重算的数据集,其记录着确定性的操作继承关系 (lineage), 所以只要输入数据是可容错的,那么任意一个RDD 的分区(Partition)出错或不可用,都是可以利 用原始输入数据通过转换操作而重新算出的。 图3 Spark Streaming 中RDD 的lineage关系图 对于SparkStreaming来说,其RDD 的传承关系如图3所示,图中的每一个椭圆形表示一个RDD, 椭圆形中的每个圆形代表一个RDD 中的一个Partition,图中的每一列的多个RDD表示一个DStream (图中有三个DStream),而每一行最后一个RDD则表示每一个Batch Size所产生的中间结果RDD。 我们可以看到图中的每一个RDD都是通过lineage相连接的,由于SparkStreaming输入数据可以来 自于磁盘,例如HDFS (多份拷贝)或是来自于网络的数据流 (SparkStreaming

文档评论(0)

177****1520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档