Flink之提交任务
一、Flink 代码及打包
1.1、代码
package com.hpsk.flink.stream;
import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;
import java.util.Arrays;
public class StreamWordCount {
public static void main(String[] args) throws Exception {
// 1.创建执行环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(2); // 设置并行度
ParameterTool parameterTool = ParameterTool.fromArgs(args); // 获取外部参数
String host = parameterTool.get("host");
int port = parameterTool.getInt("port");
// 2.读取文本流数据
DataStreamSource<String> socketDS = env.socketTextStream(host, port);
// 3.汇总统计
SingleOutputStreamOperator<Tuple2<String, Long>> wordCount = socketDS
.flatMap((String line, Collector<String> words) -> {
Arrays.stream(line.split(" ")).forEach(words::collect);
})
.returns(Types.STRING)
.map(word -> Tuple2.of(word, 1L))
.returns(Types.TUPLE(Types.STRING, Types.LONG))
.keyBy(t -> t.f0)
.sum(1);
// 4.打印
wordCount.print(">>>");
// 5.执行
env.execute();
}
}
1.2、打包
1.利用maven插件进行打包如下图
二、Flink Web页面提交
-
进入flink Web页面:http://hostname:8081/
-
双击jar进入如下页面,设置参数并提交:注意提前开启nc 8888端口
-
nc命令行输入数据,查看Flink Web 输出
由于并行度设置的是2,3台机器只有2台是有数据的,如下图
三、Flink 命令行提交
3.1、Standalone 模式
- 提交命令
bin/flink run -c com.hpsk.flink.stream.StreamWordCount -p 2 myjars/original-flinkLearning-1.0-SNAPSHOT.jar --host hadoop102 -port 8888
-
Web页面查看job
-
停止job
1、bin/flink stop -m hadoop102:8081 jobId
2、bin/flink cancel -m hadoop102:8081 jobId
3.2、Yarn 模式
3.2.1、 yarn-session
-
启动yarn session
bin/yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024 -nm test -d
-n(–container):TaskManager 的数量。
-s(–slots): 每个 TaskManager 的 slot 数量,默认一个 slot 一个 core,默认每个
taskmanager 的 slot 的个数为 1,有时可以多一些 taskmanager,做冗余。
-jm:JobManager 的内存(单位 MB)。
-tm:每个 taskmanager 的内存(单位 MB)。
-nm:yarn 的 appName(现在 yarn 的 ui 上的名字)。
-d:后台执行。如果出现启动失败的情况,如下图
则需将如下的hadoop classpath添加到/etc/profile中export HADOOP_CLASSPATH=`hadoop classpath` export HADOOP_CONF_DIR=/opt/module/hadoop/etc/hadoop
-
提交任务
bin/flink run -c com.hpsk.flink.stream.StreamWordCount myjars/original-flinkLearning-1.0-SNAPSHOT.jar --host hadoop102 -port 8888
-
Flink Web界面查看提交任务
-
Yarn Web界面查看提交任务
-
取消 yarn-session
bin/yarn application --kill application_1684041808228_0001
3.2.2、 yarn-cluster
- 不启动yarn-session直接提交任务
bin/flink run -m yarn-cluster -c com.hpsk.flink.stream.StreamWordCount myjars/original-flinkLearning-1.0-SNAPSHOT.jar --host hadoop102 --port 8888
- Yarn Web界面
-
Flink Web界面
-
查看集群上运行的job
./bin/flink list -t yarn-application -Dyarn.application.id=application_1684041808228_0007
-
取消Job
bin/flink cancel -t yarn-application -Dyarn.application.id=application_1684041808228_0007 f7ace78d07e3e24f0a2f848fa0e22a88