并行度、分区
flink部署的四种方式
- local模式:一个节点的单机模式 ```java tar -zxvf flink-1.13.0-bin-scala_2.12.tgz -C /opt/module/
cd flink-1.13.0/ bin/start-cluster.sh bin/stop-cluster.sh
- standalone模式:多个节点、不依靠yarn调度的集群```java// 三台都要操作vim conf/flink-conf.yaml# JobManager 节点地址jobmanager.rpc.address: hadoop102vim workershadoop103hadoop104bin/start-cluster.sh访问http://hadoop102:8081/
- flink on yarn
- yarn on k8s
submit-job的三种模式
在standlone、native k8s、on yarn三种部署方式下,都分别有三种提交方式,下文主要讲的 on yarn,其他部署方式详见官方文档
session mode:常驻
- 在yarn中初始化一个flink集群,所有job共用。 这个集群会常驻在yarn中 除非手动停止 所有作业共享 dispatcher、resourceManager
- main方法运行在client上, 然后将 JobGraph 提交到yarn-jobmanager
- 缺点:资源隔离做的不好。如果 TaskManager 崩溃,则在此 TaskManager 上运行 task 的所有作业都将失败;类似的,如果 JobManager 上发生一些致命错误,它将影响集群中正在运行的所有作业。
优点:节省大量时间申请资源和启动 TaskManager
# 创建yarn-session集群./yarn-session.sh-n 2 taskmanager数量-s 2 每个taskmanager的slot数量-jm 1024 jobmanager内存-tm 1024 每个taskmanager的内存-nm test yarn上的appname-d 后台执行# 在session集群上提交一个job./bin/flink run-t yarn-session \-Dyarn.application.id=application_XXXX_YY \ # 手动指定运行在刚创建的session集群./examples/streaming/TopSpeedWindowing.jar# 取消yarn-session集群yarn application --kill application_1577或者 echo "stop" | ./bin/yarn-session.sh -id application_XXXXX_XXX
per-job mode:job独占+client 生产常用
每个job独立一个集群,作业之间互不影响。job完成后 对应的集群也会消失
- main方法运行在client上, 然后将 JobGraph 提交到yarn-jobmanager。如果您传递—detached参数,一旦提交被接受,客户端将停止
- -d、—detached :加上本参数是cluster模式 不加是client模式(client一直输出日志)。
- 优点:资源隔离:JobManager 中的致命错误仅影响在 Flink Job 集群中运行的一个作业。 适合长期运行、具有高稳定性要求且对较长的启动时间不敏感的大型作业 ```bash ./bin/flink run -t yarn-per-job —detached // cluster模式 ./examples/streaming/TopSpeedWindowing.jar
List running job on the cluster
./bin/flink list -t yarn-per-job -Dyarn.application.id=application_XXXX_YY
Cancel running job
./bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_XXXX_YY
<a name="LdrYg"></a>#### application mode:job独占+cluster- 每个job独立一个集群,作业之间互不影响。job完成后 对应的集群也会消失- main方法运行在yarn-jobmanager上。可以看做 client与cluster的区别 (除了client、cluster,其他都和per-job模式相同)- Kubernetes 支持 application cluster,不支持per-job```sql./bin/flinkrun-application-t yarn-application./examples/streaming/TopSpeedWindowing.jar# List running job on the cluster./bin/flink list -t yarn-application -Dyarn.application.id=application_XXXX_YY# Cancel running job./bin/flink cancel -t yarn-application -Dyarn.application.id=application_XXXX_YY <jobId># 停止jobyarn application --kill application_1577

