Flink的Use Case及项目创建
一、Flink的Use Case:
1、Event-driven Applications事件驱动
(1)传统驱动:当事件发生时,处理数据,在必要时触发trigger作出相应的行为。
(2)事件驱动:当事件发生时,将事件存储在消息队列中,每次处理消息队列中的数据,Flink应用不断消费消息队列中的数据。每隔一段时间往持续存储器中存储数据(异步),处理数据,在必要时触发trigger作出相应的行为或者将事件再次存入消息队列中。
例:欺诈检测、异常检测、、基于规则的告警、业务流程监控、Web应用程序(社交网络)——用CEP(复杂事件处理)解决。
2、Data Analytics Applications分析
(1)批处理分析:将实时数据存储在数据库中,Flink应用在一段时间后进行批处理,经过处理后可以存到数据库中或发布在report中。
(2)流式分析:将上游实时数据先写入消息队列中,处理后不断更新到数据库中,以便Dashboard实时呈现。
3、Data Pipeline Applications管道式ETL
ETL:抽取、转换和加载
(1)周期性ETL:周期性地启动一个job,读数据库,简单处理后放入分布式数据仓库中。
(2)流式ETL:周期性地启动一个job,同样读数据库,在计算之后写入消息队列或者分布式数据仓库中。
二、生成Flink项目
1、通过Maven骨架创建:
$ mvn archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-quickstart-java \
-DarchetypeVersion=1.9.0
2、通过Git创建:
$ curl https://flink.apache.org/q/quickstart.sh | bash -s 1.9.0