flink源码学习:
http://www.cnblogs.com/bethunebtj/p/9168274.html
flink on yarn 执行任务的两种方式
1.yarn-session.sh(开辟资源)+flink run(提交任务)
1.在yarn中起一个守护进程,用于启动多个job,即一个application master 管理多个job
2.启动命令:
./yarn-session.sh -n 4 -jm 1024 -tm 5120 -s 5 -nm yarn-session-jobs -d
参数说明:
(1) -n : 指定number of task manager,指定taskmanager个数
(2) -jm: jobmanager所占用的内存数,单位为MB
(3) -tm: 指定每个taskmanager所占用的内存,单位为MB
(4) -s: 指定每个taskmanager可使用的cpu核数
(5) -nm: 指定Application的名称
(6) -d : 后台启动,session启动后,进程关闭
3.流程说明:
(1) 启动session 后,yarn首先会分配一个Container,用于启动APP master和jobmanager, 所占用内存为-jm指定的内存大小,cpu为1核
(2) 没有启动job之前,jobmanager是不会启动taskmanager的(jobmanager会根据job的并行度,即所占用的slots,来动态的分配taskmanager)
(3) 提交任务到APP master
./flink run -p 3 -yid application_id -d -c com.kn.rt.Test01 ~/jar/dw-1.0-SNAPSHOT.jar
用于启动一个job到指定的APP master中
参数说明:
#1.-p:指定任务的并行度,如果你在程序代码中指定了并行度的话,那么此处的并行度参数不起作用
#2.-yid:指定任务提交到哪一个application—id,默认是提交到本节点最新提交的一个application
#3.-c: job的主入口 + jar path
> 注:job参数要写在-c之前,不然指定参数不起作用...
1.2 flink run -m yarn-cluster(开辟资源+提交任务)
1.启动单个job,即单job单session,实现资源的完全隔离
2.启动job的脚本跟yarn-session 中有差异 ,通过指定 -m yarn-cluster,参数较session都带有-y
./flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 3076 -ys 3 -ynm yarn-cluster-1 -yqu root.default -c com.kn.rt.Test01 ~/jar/dw-1.0-SNAPSHOT.jar
参数说明:
#1.-m :yarn-cluster,代表启动单session提交单一job
#2.-yn:taskmanager个数
#3.-yjm:jobmanager的内存占用
#4.-ytm:每个taskmanager的内存占用
#5.-ys: 每个taskmanager可使用的CPU核数
#6.-ynm:application 名称
#7.-yqu:指定job的队列名称
#8.-c: 程序主入口+ jar path
1.3.flink on yarn设置参数注意事项
1.资源都统一有yarn来统一管理