Flink作为新一代的大数据项目,除了尽量匹配其他大数据项目所提供的能力之外,还拥有一些不错的特性,列举如下:
- 既支持批处理也支持流计算,拥有一个 streaming-first(流优先)的运行时(runtime)引擎;
- 为Java以及Scala开发者提供优雅而流畅的API;
- 可进行大规模扩展同时兼顾高吞吐和低延迟;
- 基于”Dataflow Model“(数据流模型)在DataStream API中支持事件时间、无序处理、事件延迟等能力并保证结果的正确性;
- 灵活且支持多种时间语义(事件时间、处理时间、摄入时间)的窗口;
- 支持状态以及容错性(fault-tolerance)并提供恰好一次(exactly-once)的一致性语义保证;
- 程序更新、扩容后不丢失状态的保存点机制;
- 流计算中自然的反压机制;
- 提供关系及SQL查询、图计算、机器学习以及复杂事件处理等领域特定库;
- 内置对迭代的支持;
- 自实现的具备高效性和鲁棒性的显式内存管理机制;
- 提供对Hadoop以及Storm的兼容性;
- 提供与YARN、HDFS、HBase以及Hadoop生态系统中其他部件的集成能力;
以上这些特性在保证Flink满足通用目的的数据分析与处理的同时也使得其成为某些特殊领域与场景(比如要求极低延迟、较高准确性的实时流计算)的可靠选择。