实时流处理引擎
storm:
来一条处理一条 时效性强 吞吐量差 适合延迟低业务比较小的时候
sparkStreaming:
微批处理 高吞吐 容错性高 时效性差
适合之前的业务都是用spark生态写的 并且秒级的时效性完全可以满足我们的需求
flink:
要求高时效性 高吞吐量的时候可以选择
flink
Flink几种图的变化
Stream Graph
Job Graph
Execution Graph
架构设计
物理部署层 deploy
核心层 runtime
依赖库 API&libraries
概念
有界数据:离线数据
无界数据:实时数据
三中运行模式
session模式
表现形式:
预先启动一个flink session集群 后续我们的任务都提交到这个集群上,在集群上进行运行
特点
生命周期不受任务影响
资源隔离比较差 多个任务共享一些资源
两种模式
追加模式 main方法运行在客户端
分离模式 main方法运行在集群
应用场景
适合运行一些比较小的项目
运行
需要导出环境变量,可以在用户的环境变量里导出
vi .bashrc
添加
export HADOOP_CONF_DIR=/user/hdp/3.1.0.0-78/hadoop/conf/
export HADOOP_CLASSPATH=`hadoop classpath`
执行一下source ~/.bashrc
后续执行flink命令就可以了
本地运行
yarn jar 包 类 参数
集群运行
application模式
表现形式
会把jar包上传到HDFS里 由jobManager调用对应的jar包和相关资源,在这里如果在一个main方法里,调用了多次execute方法,这个只会启动一个session(per-job会启动多个)
特点
相对session和per-job模式属于一种比较这种的模式
应用场景
涉及到应用都可以使用这种方式
特点说明
生命周期和job有关
隔离性较session模式较好
main方法运行在集群上
$FLINK_HOME/bin/flink run application -t yarn-application -c 类 jar包 参数
-t运行模式
-c执行的主类
查看日志
在集群上查看 main方法运行在集群上的
per-job模式
表现形式:
会为每一个job启动一个session
特点
隔离性非常好
启动时间比较长
应用场景
长时间执行,比较大型的任务
特点说明
生命周期和job有关
隔离性比较好
main方法运行在客户端
$FLINK_HOME/bin/flink run -t yarn-per-job -c 类 jar包 参数
main方法运行在客户端上 直接在客户端查看执行日志
session方式
预先启动好session
$FLINK_HOME/bin/yarn-session.sh
不分离的,需要关闭的 Ctrl+c直接退出
$FLINK_HOME/bin/yarn-session.sh -d
分离式的启动,启动完之后需要上集群上才能看到对应的日志和效果
启动程序
$FLINK_HOME/bin/flink run -t yarn-session -c 类 - Dyarn.application.id=application_1627998129686_0475 jar包 参数
$FLINK_HOME/bin/flink run jar 包 参数
随机找一个session