- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
- 安联大众保险2005年度代理人颁奖典礼创意简报.pdf
- 安庆物流园区规划方案.pdf
- 安全工作会议记录模板.pdf
- ch06管理信息系统分析技术.pdf
- Ch07Trade_Regulations_and_Industrial_Policies(国际经济学-西北大学(美国)).pdf
- Chapter9 Valuation of Common Stocks(Finance -东北财经大学).pdf
- CO_IO_04 成本中心内部订单结算流程图.pdf
- CRM介入信用管理的可行性分析.pdf
- CTG-MBOSS BSS CRM系统业务功能规范.pdf
- C-TPAT反恐验厂报告所有问题点(350个问题点).pdf
原创力文档


文档评论(0)