Apache Flink是一个高效、分布式、基于Java实现的通用大数据分析引擎,它具备分布式 MapReduce一类平台的高效性、灵活性和扩展性以及并行数据库查询优化方案,它支持批量和基于流的数据分析,且提供了基于Java和Scala的API。从Apache官方博客中得知,Flink已于近日升级成为Apache基金会的顶级项目。Flink项目的副总裁对此评论到:html
Flink可以成为基金会的顶级项目,本身感到很是高兴。本身认为社区的驱动将是Flink成长的最好保证。Flink逐渐的成长以及众多新人加入该社区真是一件大好事。程序员
从Flink官网得知,其具备以下主要特征:es6
Flink利用基于内存的数据流并将迭代处理算法深度集成到了系统的运行时中,这就使得系统可以以极快的速度来处理数据密集型和迭代任务。算法
当服务器内存被耗尽时,Flink也可以很好的运行,这是由于Flink包含本身的内存管理组件、序列化框架和类型推理引擎。数据库
利用Java或者Scala语言可以编写出漂亮、类型安全和可为核心的代码,并可以在集群上运行所写程序。开发者能够在无需额外处理就使用Java和Scala数据类型apache
在无需进行任何配置的状况下,Flink内置的优化器就可以以最高效的方式在各类环境中执行程序。此外,Flink只须要三个命令就能够运行在Hadoop的新MapReduce框架Yarn上,编程
Flink支持全部的Hadoop全部的输入/输出格式和数据类型,这就使得开发者无需作任何修改就可以利用Flink运行历史遗留的MapReduce操做安全
Flink主要包括基于Java和Scala的用于批量和基于流数据分析的API、优化器和具备自定义内存管理功能的分布式运行时等,其主要架构以下:服务器
摘自 http://www.infoq.com/cn/news/2015/01/big-data-apache-flink-project架构
现在流处理愈来愈流行,例如Apache Kafka, Apache Samza, Apache Storm, Apache Spark的Streaming模块等等,云服务还有相似Google Cloud Dataflow。Apache Flink做为一个新的流处理系统,其特色是:
1. 低延迟的流处理器
2.丰富的API可以帮助程序员快速开发流数据应用
3.灵活的操做状态和流窗口
4.高效的流与数据的容错不少公司正在从传统的批处理架构迁移到实时流架构,在分布式系统如HDFS中静态文件和关系数据库在经过事件流获得加强,使用批处理实现的工做任务可以在流处理中以更低延迟实现。
这种转型有许多方式,首先,许多数据集和用例都是基于事件的(好比机器日志等),其次流处理在某种程度上能够处理更复杂的工做任务,流处理原则上可以以低延时执行大部分批处理的工做任务,这样,当流处理可以处理一样的工做任务时,几乎没有理由再选择使用hadoop这样的批处理框架了。最后,一些新的应用类型诸如处理敏感数据常常须要持续查询,这些应用只能使用流架构实现。一个典型的流架构由下面三个组件组成:
1. 一个模块组件是从各类数据源收集事件流
2. 一个模块组件集成各类流,使它们可用于直接消费。
3.一个模块组件用来分析消费这些流数据
第一步是从各类数据源收集事件,事件来自于数据库,机器产生日志,事件传感器等,这些事件须要清理 组织化到一个中心。
第二步,在一个中心集成各类流,典型工具如Apache Kafka,Kafka提供一个broker功能,以失败容错的高可靠性用来收集流 日志或缓冲数据,以及分发到各类对不一样流感兴趣的消费者那里进行分析。
第三步,对流进行真正的分析,好比建立计数器 实现聚合,Map/Reduce之类计算,将各类流Join一块儿分析等等,提供了数据分析所需的一步到位的高级编程。Apache Flink正是这步实现。
Flink可以既用来进行批处理又能用来进行流处理,也就是综合了Hadoop和Storm或Spark Streaming二者优势,须要了解详情见:Real-time stream processing: The next step for Apa
摘自 http://www.jdon.com/47283
Flink 的其余文档 https://www.ibm.com/developerworks/cn/opensource/os-cn-apache-flink/
http://flink.apache.org/introduction.html