Flink简介

是什么

Apache Flink是Apache基金会开发的开源流处理框架,其核心是由Java和Scala编写的分布式数据流引擎。对无界和有界数据进行有状态计算。

Flink 是有状态的和容错的,可以在维护一次应用程序状态的同时无缝地从故障中恢复;它支持大规模计算能力,能够在数千个节点上并发运行;它具有很好的吞吐量和延迟特性。同时,Flink 提供了多种灵活的窗口函数

API

  • DataSet API, 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理,支持Java、Scala和Python。

  • DataStream API,对数据流进行流处理操作,将流式的数据抽象成分布式的数据流,用户可以方便地对分布式数据流进行各种操作,支持Java和Scala。

  • Table API,对结构化数据进行查询操作,将结构化数据抽象成关系表,并通过类SQL的DSL对关系表进行各种查询操作,支持Java和Scala。

优点

  • 提供准确的结果,甚至在出现无序或者延迟加载的数据的情况下
  • 它是状态化的容错的,同时在维护一次完整的的应用状态时,能无缝修复错误
  • 大规模运行,在上千个节点运行时有很好的吞吐量和低延迟 

应用场景

场景 定义 举例  
事件驱动型应用 事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。

反欺诈

基于规则的报警

业务流程监控

 
数据分析型应用 数据分析任务需要从原始数据中提取有价值的信息和指标 消费者技术中的实时数据即席分析  
数据管道应用      

 

Flink & Storm & SparkStreaming 流处理框架的区别

  • Strom:纯实时处理数据,吞吐量小 --水龙头滴水。Strom 的容错机制需要对每条数据进行 ack,因此其吞吐量瓶颈也是备受诟病
  • SparkStreaming : 准实时处理数据,微批处理数据,吞吐量大 --河道中开闸关闸。生态总体更为完善一些,且在机器学习的集成和应用性暂时领先
  • Flink:纯实时处理数据,吞吐量大 --河流远远不断。真正意义上的单条处理,每一条数据都触发计算;容错机制较为轻量,对吞吐量影响较小

 

 

参考

https://flink.apache.org/zh/usecases.html

https://zhuanlan.zhihu.com/p/90024398

 

posted @ 2020-09-23 10:45  jihite  阅读(403)  评论(0编辑  收藏  举报