Spark版本定制班第4课-Frank.docxVIP

  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版本定制班第4课-Frank

Spark源码定制班第4课 PAGE11 / NUMPAGES11 第4课:Spark Streaming事务处理 作者:杭州-Frank 本期导读: Exactly Once 输出不重复  HYPERLINK /base/10 \o Apache Spark知识库 \t _blank Spark?Streaming?事务处理架构 什么是事务 以银行转帐为例,A用户转笔账给B用户,如果B用户没收到账,或者收到多笔账,都是破坏事务的一致性。事务处理就是,能够处理且只会处理一次,即A只转一次,B只收一次。 从事务视角解密Spark Streaming HYPERLINK /base/16 \o 大型网站架构知识库 \t _blank 架构 SparkStreaming应用程序启动时会分配资源,除非整个集群硬件资源崩溃,一般情况下都不会有问题。 SparkStreaming程序分成而部分: Driver Executor Receiver接收到数据后不断发送元数据给Driver,Driver接收到metadata元数据信息后进行CheckPoint处理。其中CheckPoint包括: Configuration(含有 HYPERLINK /base/10 \o Apache Spark知识库 \t _blank Spark?Conf、Spark Streaming等配置信息)、 Block MetaData、 DStreamGraph、 未处理完和等待中的Job。 Receiver可以在多个Executor节点的上执行Job,Job的执行完全基于SparkCore的调度模式进行。 架构演进变化图 根据上面的解密画出最基础的架构,如下图1所示: 图1 图1只是Spark Streaming基本的情况,Executor只有函数处理逻辑和数据,外部InputStream流入到Receiver中通过BlockManager写入磁盘、内存、WAL进行容错。WAL先写入磁盘然后写入Executor中,WAL它是写进HDFS的,失败可能性不大。如果1G数据要处理,Executor一条一条接收,Receiver接收数据是积累到一定记录后才会写入WAL,如果Receiver线程失败时,数据有可能会丢失。 Driver处理元数据前会进行CheckPoint,Spark Streaming获取数据、产生作业,但没有解决执行的问题,执行一定要经过Spark Context。Driver级别的恢复,通过CheckPoint从文件系统上恢复,重新构建Streaming Context,也就是重新构建SparkContext,再重新生成Spark Job,再提交Spark集群运行。Receiver的重新恢复时会通过磁盘的WAL从磁盘恢复过来。演进后的架构如下图2所示: 图2 Spark Streaming和Kafka结合不会出现WAL数据丢失的问题,Spark Streaming必须考虑外部流水线的方式处理。Spark Streaming 1.3的时候为了避免WAL的性能损失和实现Exactly Once而提供了Kafka Direct API,把Kafka作为文件存储系统! Spark Streaming+Kafka构建完美的流处理世界!下图3是再次演化后的架构图: 图3 Exactly Once原理 Exactly Once的事务处理: 1.数据零丢失:必须有可靠的数据来源和可靠的Receiver,且整个应用程序的metadata必须进行checkpoint,且通过WAL来保证数据安全; 2.Spark Streaming 1.3的时候为了避免WAL的性能损失和实现Exactly Once而提供了Kafka Direct API,把Kafka作为文件存储系统!!!此时兼具有流的优势和文件系统的优势,至此,Spark Streaming+Kafka就构建了完美的流处理世界!!! 为什么说它完美: 数据不需要拷贝复本; 不需要进行WAL,不必要的性能损耗。 kafka比HDFS高效很多,内存中产生Memory copy的方式。 有了kafka就不需要所谓的Receiver,所有的Executors通过Kafka API直接消费数据,直接管理Offset,所以也不会重复消费数据;事务实现啦!!! 数据丢失及其具体的解决方式: 在Receiver收到数据且通过Driver的调度Executor开始计算数据的时候,如果Driver突然崩溃,则此时Executor会被Kill掉,那么Executor中的数据就会丢失。 此时就必须通过列如WAL的方式,让所有的数据都通过列如HDFS的方式进行安全性容错处理,此时如果Executor数据

文档评论(0)

aicencen + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档