Flink提交任务的方式有两种,第一种是自带的UI页面,但是这种提交方式很少有团队正式使用,因为这种方式的资源分配是按照task为单位,设置任务并行度的,而不是可以灵活的根据提交任务时的参数来改变所占资源大小的continer,一个task拥有多少计算资源已经在配置文件中写死了,且使用时一个并行度就代表占用一个task,它的好处就在于你能够明确的把控资源的使用频率,缺点就是不够灵活。
自己手搭过原生的或者其他发行版的yarn服务的朋友,就会明白yarn体系中资源的在使用频率是根据调度队列判断当前所有任务的Applicationmanage占总资源大小的一个百分比掌控的,默认是0.1也就是10%,另外90%用来运行具体任务,但是这90%的资源是否被充分利用或者是否被过度利用,这都说不准。而flink的task方式就用一种强硬的方式限制了被使用时的task,其他任务不能使用,反之只要存在空余task,就可以提交任务。
国内九成九的都是普通公司,不是大厂,根本原因是用不起Flink的第一种方式,做不到财大气粗的堆资源,只能那种最经济的用法,这也是flink很少在国内使用的原因之一。第二种提交方式就是命令行模式,这种方式下就和UI提交是同源的,也可以提交给yarn。说白了就算国内的公司跳不开必须使用flink时,也只是提交给了yarn,很少有公司有那个经济实力,直接把任务交给flink自身的jobmanager。一般测试环境为了方便才可能用ui页面提交。
第一种UI提交
UI页面你需要浏览器访问flink的jobmanager节点,默认端口号是8081
点击左侧导航栏最后一项
点击add new
,会弹出文件框,你要选择你的jar包上传
上传后点击后边的Upload
,在进度条完成后就会生成任务
选择任务前面的复选框,点击后会弹出基本配置内容,分别是运行的类的包路径、并行度、参数,以及最后一个SavePath一般不用,它的作用和Spark的Checkpoint一样,都是设置一个检查点。
区别在于checkpoint是增量做的,每次的时间短,数据量小,只要在程序里面启用后会自动触发,用户无需感知;savepoint是全量做的,时间长,数据量大,需要用户主动触发。
checkpoint 是任务结束的时候自动使用,不需要用户指定,savepoint 一般用于程序版本更新、bug修复、A/B Test 等场景,需要用户指定。
需要特别注意的是并行度,最大不能超过Overview页面中显示的Available Task Slots可用数
,而且并行度的生效权重遵循页面权重<代码中StreamExecutionEnvironment权重<算子权重
设置好这些就可以点击Submit
提交了,然后就会跳转到任务的监控页面,你可以在这个页面中看到每一个详情算子的状态,以及整个任务的相关信息
你要关注的重点是下面算子列表的状态,确保正常运行,此时你就可以不用管了,在,Running Jobs
中可以看到这个任务,如果你想结束就进入任务详情,点击右上角的Cancel
第二种就是命令行
命令行模式下就是使用${FLINK_HOME}/bin
下的flink
命令提交任务,和前面说的一样在使用flink的jobmanager下和页面操作没差别。命令使用方法如下
flink命令执行模板:flink run [option]