美文网首页
Introduction to Apache Flink - C

Introduction to Apache Flink - C

作者: 耳边的火 | 来源:发表于2018-12-02 14:38 被阅读11次

    初识Apache Flink

    Apache Flink项目首页的标语写着“Apache Flink是一个可在流数据及离线数据上进行分布式处理的开源平台”。对许多人来说,会惊奇于Flink不仅能处理实时流数据且有高吞吐以及恰好一次的保证,竟然还能做维护离线数据处理的引擎。你以前需要选择使用实时处理还是离线处理来选择框架,但是Fklink使用同一套技术让你能够处理你想要的类型。
    这样一个Apache顶级项目时如何开始的呢?Flink出身与Stratosphere 项目,该研究项目由三所柏林的大学以及其他欧洲大学在2010年至2014年间创立。这期间项目已经在社区吸引了广泛的兴趣,部分功能也通过包括柏林的Buzzwords,Cologne的NoSQL Matters等在内的公开的开发者会议进行了展示。这些社区基础是该项目得以进入Apache软件基金会进行孵化的原因之一。
    在2014年的四月,Stratosphere的一个代码分支被捐赠给了Apache软件基金会作为一个孵化项目,同时也有一些由系统的核心开发者组成的初始代码提交者面世。自此之后不久,这些人离开了大学,创建了一个公司data Artisans围绕Flink开展一些业务。在孵化期间,项目的名称不再叫做Stratosphere,以此来避免该项目作为一个框架与一个不相关的项目产生潜在的误解。之所以选择Flink作为项目名称,是为了向流处理或批处理这种方式致敬:在德国,flink这个单词意味着快速或者灵巧。Flink的logo选择彩色的松树是因为松树行动快速且灵巧,德国的松树的皮毛是红棕色的,如下图:


    左侧:柏林的红色的松树,有着长长的耳朵。右侧:Apache Flink的logo有着长长的尾巴。它的颜色反应的正是Apache软件基金会的logo的颜色。这是一个Apache风格的松树!

    这个项目很快的完成了孵化,并且在2014年的12月,Flink正式成为Apache软件基金会的顶级项目。Flink是Apache软件基金会的5个最大的大数据项目之一,有着来自全球的超过200名开发者,以及在一些公司的生产环境运行,某些是世界500强企业。本书写作之时,已经有34场Apache Flink的见面会在世界各地举办,有接近12000名参与者以及演讲者参与了大数据会议。在2015年的10月,Flink项目在柏林举办了第一场年度会议:Flink Forward。

    批处理以及流处理

    Flink为什么以及如何做到既能处理批任务也能处理流数据的呢?Flink将批处理看做是一个静态的有限的数据,是流处理的一种特殊情况。
    Flink的核心计算结构,称作“Flink运行时”,如下图。Flink运行时是一个分布式的系统,可以接受流处理程序,并且在一个或多个机器上以故障容忍的方式执行流处理程序。运行时可以在集群中运行,也可以作为YARN的一个应用。或者单机运行以方便调试Flink应用。


    这张图展示了Flink关键的组件。可以看到面向用户层的API可以处理流数据与离线数据,是的仅仅使用Flink这一个工具就可以完成任一情形的工作。工具库包括机器学习(FlinkML),复杂事件处理(CEP),图像处理(Gelly)以及使用Table API处理流数据或离线数据

    由运行时来接收程序的功能很强大,但是写起来很繁琐有些困难。因此,Flink提供了对开发者友好的API,这些API构建在运行时之上,且能够生产流处理程序。针对流处理有DataStream API,针对离线处理有DataSet API。很有趣的一点是,尽管Flink运行时将所有操作都看作流操作,但是DataSet API面世时间却是在DataStream API之前,这是由于在Flink早期,对无界数据流的处理不如现在那么广泛。
    在处理无界数据流时,使用DataStream API定义数据分析是很流畅的。API提供了java与scala两种语言支持。使用者对一个称作DataStream的数据结构进行操作,该数据结构可能代表一个分布式的无界的数据流。
    Flink是分布式的,这也就意味着,它可以在数百甚至数千机器上运行,将一个大型的计算分发成一个个小任务,每个机器都处理其中一个任务。当遇到机器问题或者其他故障时,Flink框架能够自动的小心地精确修复计算结果,或者在bug修复后以及版本更新后,人为的从某处重新运行。这种能力减轻了编程人员对故障的担忧。Flink内部使用具有故障容忍能力的数据流,这允许开发者在一个持续产生,不停止的事件流上进行分析。

    因为Flink解决了很多令人关心的问题,例如仅处理一次的保证以及基于事件事件的数据窗口计算,开发者不必在应用层实现这些特性,从而减少bug的发生。

    由于工程师们不再担心他们应用代码的问题,因此团队可以更好的利用工程师的时间。这种好处不仅影响了开发时间,也通过其灵活性提升了质量,也使得操作可以更有效的执行。Flink提供了在生产环境让应用健壮运行的能力。这不仅仅是理论,尽管Flink相对来说是一个新项目,但是FLink早就被用在了生产环境,我们将在下一部分讨论。


    所以下一部分就不翻译了。

    相关文章

      网友评论

          本文标题:Introduction to Apache Flink - C

          本文链接:https://www.haomeiwen.com/subject/zzsjcqtx.html