Flink初步了解
废话少说----
1 基本框架
2 Flink简介
2.1 Fink是什么
Apache Flink 是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能。
2.2 Flink的来历
Apache Flink的前身是柏林理工大学一个研究性项目,在2014被Apache孵化器所接受,然后迅速地成为了Apache Software Foundation的顶级项目之一。
2.3 Flink的特点
2.3.1 流处理特性
现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型:流处理一般需要支持低延迟、Exactly-once保证,而批处理需要支持高吞吐、高效处理
Flink是完全支持流处理,也就是说作为流处理看待时输入数据流时无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。
1.支持高吞吐、低延迟、高性能的流处理
2.支持带有事件时间的窗口(Window)操作
3.支持有状态计算的Exactly-once语义
4.支持高度灵活的窗口(Window)操作,支持基于time、count、session,以及data-driven的窗口操作
5.支持具有Backpressure功能的持续流模型
6.支持基于轻量级分布式快照(Snapshot)实现的容错
7.一个运行时同时支持Batch on Streaming处理和Streaming处理
8.Flink在JVM内部实现了自己的内存管理
9.支持迭代计算
10.支持程序自动优化:避免特定情况下Shuffle、排序等昂贵操作,中间结果有必要进行缓存
2.3.2 API支持
1.支持高吞吐、低延迟、高性能的流处理
2.支持带有事件时间的窗口(Window)操作
3.支持有状态计算的Exactly-once语义
4.支持高度灵活的窗口(Window)操作,支持基于time、count、session,以及data-driven的窗口操作
5.支持具有Backpressure功能的持续流模型
6.支持基于轻量级分布式快照(Snapshot)实现的容错
7.一个运行时同时支持Batch on Streaming处理和Streaming处理
8.Flink在JVM内部实现了自己的内存管理
9.支持迭代计算
10.支持程序自动优化:避免特定情况下Shuffle、排序等昂贵操作,中间结果有必要进行缓存
2.3.3 Libraries支持
1.支持机器学习(FlinkML)
2.支持图分析(Gelly)
3.支持关系数据处理(Table)
4.支持复杂事件处理(CEP)
2.3.4 整合支持
1.支持Flink on YARN
2.支持HDFS
3.支持来自Kafka的输入数据
4.支持Apache HBase
5.支持Hadoop程序
6.支持Tachyon
7.支持ElasticSearch
8.支持RabbitMQ
9.支持Apache Storm
10.支持S3
11.支持XtreemFS
2.3.5 Flink生态圈
Flink 首先支持了 Scala 和 Java 的 API,Python 也正在测试中。Flink 通过 Gelly 支持了图操作,还有机器学习的 FlinkML。Table 是一种接口化的 SQL 支持,