深入理解Apache Flink核心技术.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文档。上传文档
查看更多
深化理解Apache Flink核心技术 Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算供应了数据分布、数据通信以及容错机制等功能。基于流执行引擎,Flink供应了诸多更高笼统层的API以便用户编写分布式任务: DataSet API, 对静态数据进行批处理操作,将静态数据笼统成分布式的数据集,用户可以便利地使用Flink供应的各种操作符对分布式数据集进行处理,支持Java、Scala和Python。 DataStream API,对数据流进行流处理操作,将流式的数据笼统成分布式的数据流,用户可以便利地对分布式数据流进行各种操作,支持Java和Scala。 Table API,对结构化数据进行查询操作,将结构化数据笼统成关系表,并通过类SQL的DSL对关系表进行各种查询操作,支持Java和Scala。 此外,Flink还针对特定的应用领域供应了领域库,例如: Flink ML,Flink的机器学习库,供应了机器学习Pipelines API并实现了多种机器学习算法。 Gelly,Flink的图计算库,供应了图计算的相关API及多种图计算算法实现。 Flink的技术栈如图1所示:? 图1 Flink技术栈 此外,Flink也可以便利地和Hadoop生态圈中其他项目集成,例如Flink可以读取存储在HDFS或HBase中的静态数据,以Kafka作为流式的数据源,直接重用MapReduce或Storm代码,或是通过YARN申请集群资源等。 统一的批处理与流处理系统 在大数据处理领域,批处理任务与流处理任务一般被认为是两种不同的任务,一个大数据项目一般会被设计为只能处理其中一种任务,例如Apache Storm、Apache Smaza只支持流处理任务,而Aapche MapReduce、Apache Tez、Apache Spark只支持批处理任务。Spark Streaming是Apache Spark之上支持流处理任务的子系统,看似一个特例,实则不然——Spark Streaming接受了一种micro-batch的架构,即把输入的数据流切分成细粒度的batch,并为每一个batch数据提交一个批处理的Spark任务,所以Spark Streaming本质上还是基于Spark批处理系统对流式数据进行处理,和Apache Storm、Apache Smaza等完全流式的数据处理方式完全不同。通过其机警的执行引擎,Flink能够同时支持批处理任务与流处理任务。 在执行引擎这一层,流处理系统与批处理系统最大不同在于节点间的数据传输方式。对于一个流处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,然后马上通过网络传输到下一个节点,由下一个节点连续处理。而对于一个批处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,并不会马上通过网络传输到下一个节点,当缓存写满,就长久化到本地硬盘上,当全部数据都被处理完成后,才开头将处理后的数据通过网络传输到下一个节点。这两种数据传输模式是两个极端,对应的是流处理系统对低延迟的要求和批处理系统对高吞吐量的要求。Flink的执行引擎接受了一种格外机警的方式,同时支持了这两种数据传输模型。Flink以固定的缓存块为单位进行网络数据传输,用户可以通过缓存块超时值指定缓存块的传输时机。假如缓存块的超时值为0,则Flink的数据传输方式类似上文所提到流处理系统的标准模型,此时系统可以获得最低的处理延迟。假如缓存块的超时值为无限大,则Flink的数据传输方式类似上文所提到批处理系统的标准模型,此时系统可以获得最高的吞吐量。同时缓存块的超时值也可以设置为0到无限大之间的任意值。缓存块的超时阈值越小,则Flink流处理执行引擎的数据处理延迟越低,但吞吐量也会降低,反之亦然。通过调整缓存块的超时阈值,用户可依据需求机警地权衡系统延迟和吞吐量。 图2 Flink执行引擎数据传输模式 在统一的流式执行引擎基础上,Flink同时支持了流计算和批处理,并对功能(延迟、吞吐量等)有所保障。相对于其他原生的流处理与批处理系统,并没有由于统一执行引擎而遭到影响从而大幅度减轻了用户安装、部署、监控、维护等成本。 Flink流处理的容错机制 对于一个分布式系统来说,单个进程或是节点崩溃导致整个Job失败是经常发生的事情,在特别发生时不会丢失用户数据并能自动恢复才是分布式系统必需支持的特性之一。本节次要引见Flink流处理系统任务级别的容错机制。 批处理系统比较简约实现容错机制,由于文件可以反复访问,当某个任务失败后,重启该任务即可。但是到了流处理系统,由于数据源是无限的数据流,从而导致一个流处理任务执行几个月的情况,将全部数据缓存或是长久化,留待以后反复访问基本

文档评论(0)

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

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

1亿VIP精品文档

相关文档