解压:tar -zxvf flink-1.7.2-bin-scala_2.11.tgz -C /opt/module/
1)修改 flink/conf/flink-conf.yaml 文件:
jobmanager.rpc.address: hadoop102
2)修改 /conf/slave 文件:
hadoop103
hadoop104
分发flink文件给另外两台机子
3).启动
$ ./bin/start-cluster.sh
------ hadoop102 --------
12055 StandaloneSessionClusterEntrypoint
------ hadoop103 --------
12555 TaskManagerRunner
------ hadoop104 --------
12345 TaskManagerRunner
访问 http://hadoop102:8081 可以对 flink 集群和任务进行监控管理。
以 Yarn 模式部署 Flink 任务时,要求 Flink 是有 Hadoop 支持的版本,Hadoop环境需要保证版本在 2.2 以上,并且集群中安装有 HDFS 服务。
1) 启动 hadoop 集群(略)
2) 启动 yarn-session
./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:后台执行。
3) 执行任务
./flink run -m yarn-cluster -c com.atguigu.flink.app.BatchWcApp /ext/flink0503-1.0-SNAPSHOT.jar --input /applog/flink/input.txt --output /applog/flink/output5.csv
4) 去 yarn 控制台查看任务状态
hadoop102:8080/cluster/apps/FINISHED
容器化部署时目前业界很流行的一项技术,基于 Docker 镜像运行能够让用户更 加方便地对应用进行管理和运维。容器管理工具中最为流行的就是 Kubernetes (k8s),而 Flink 也在最近的版本中支持了 k8s 部署模式。
1) 搭建 Kubernetes 集群(略)
2)配置各组件的 yaml 文件
在 k8s 上构建 Flink Session Cluster,需要将 Flink 集群的组件对应的 docker 镜像 分别在 k8s 上启动,包括 JobManager、TaskManager、JobManagerService 三个镜像 服务。每个镜像服务都可以从中央镜像仓库中获取。
3)启动 Flink Session Cluster
// 启动 jobmanager-service 服务
kubectl create -f jobmanager-service.yaml
// 启动 jobmanager-deployment 服务
kubectl create -f jobmanager-deployment.yaml // 启动 taskmanager-deployment 服务
kubectl create -f taskmanager-deployment.yaml
4)访问 Flink UI 页面
集群启动后,就可以通过 JobManagerServicers 中配置的 WebUI 端口,用浏览器
输入以下 url 来访问 Flink UI 页面了: http://{JobManagerHost:Port}/api/v1/namespaces/default/services/flink-jobmanage
r:ui/proxy
```
### 4.提交任务
先启动nc -lk 7777
#### 4-1.通过页面操作
1.添加项目的jar包,等待上传成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020041117211163.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29DaGFuZ1dlbg==,size_16,color_FFFFFF,t_70)
2.**并行度设置,如果代码里设置就用代码里的;如果代码里没设置但页面有设置,就用页面设置的;如果两者都没有设置,就用默认配置文件的,默认为1。**
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020041117394596.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29DaGFuZ1dlbg==,size_16,color_FFFFFF,t_70)
出现如下图
1.因为socketTextStream的tex流不支持并发度,所以只能是1
2.由于页面配置了并行度2,所以第2个和第3个的并行度都是2。(补充问题:为什么FlatMap, Filter放一起,aggregation放一起)
3.由于代码里dataStream.print().setParallelism(1) 设置了并行度为1,所以最后输出的并行度是1.
**flink的并行度是很灵活的,可以为每个算子都设置并行度。**
为什么任务一起在等待启动?想要申请两个资源但可以的只有一个,申请不到只有等待。过段时间会自动失败,也能手动取消。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020041117372271.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29DaGFuZ1dlbg==,size_16,color_FFFFFF,t_70)
3.让任务启动
页面并行度不设置。在nc 那里输出三行数据,刷新页面能看到页面的变化。
也可以到 Task Manage的task任务的stdOut里看print输出
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200411180959802.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29DaGFuZ1dlbg==,size_16,color_FFFFFF,t_70)
其时页面如下,可用task slot已经为0了,不能再提交新的任务了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200411181613156.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29DaGFuZ1dlbg==,size_16,color_FFFFFF,t_70)
增加slot为3个
修改 flink/conf/flink-conf.yaml 文件然后重启。taskmanager.numberOfTaskSlots: 3
#### 4-2.通过命令行提交
$ .bin/flink run -c com.liucw.StreamWordCount -p 2 flinkTest-1.0-SNAPSHOT.jar --host hadoop102 --port 7777
取消当前job:
$ .bin/flink list
$ .bin/flink cancel a9c9fd0aaddk89098098dsf97