版本:Flink 1.13.2 - 2021-08-02
Standalone 独立模式的集群:Standalone 独立模式的 Flink 集群不支持 Per-Job Mode 作业模式。
部署前期准备:
- 四台虚拟机(一个 master,三个 worker,集群节点之间最好可以免密登录)
192.168.116.10
192.168.116.11
192.168.116.12
192.168.116.13 - jdk环境 :
- 下载 flink 二进制包:flink-1.13.2-bin-scala_2.12.tgz
将压缩包分别解压到四台机器的相同路径下:
在master节点修改配置文件 (flink 的配置文件都在 ./flink-1.13.2/conf/ 目录下,所有 cd 到 conf 目录下)
-
集群节点配置:
在解压目录 flink-1.13.2/conf 中有两个配置文件配置集群的 master 和 worker
vi masters
#添加master节点 IP:PORT,也就是 Flink Web 页面的服务地址 192.168.116.10:8081
vi workers
#添加 worker 节点 IP 地址,一行一个,也就是将要部署 TaskManager 的节点 192.168.116.11 192.168.116.12 192.168.116.13
-
修改master节点关于Flink运行时环境的配置
vi flink-conf.yaml几个重要的配置:
-
jobmanager.rpc.address: 192.168.116.10
- 指向 master 节点 jobmanager jobmanager.rpc.port: 6123
- master 节点 jobmanager 的访问端口 jobmanager.memory.process.size
- 每个 JobManager 进程的可用内存值 taskmanager.memory.process.size
- 每个 TaskManager 进程的可用内存值 taskmanager.numberOfTaskSlots
- 每台 taskmanager 机器的可用 Slot 数,一般配置为 宿主机的 CPU 这样可以避免 Slot 之间抢占 cpu 资源 parallelism.default
- 默认并行度,只有在没有指定任务并行度时才生效 classloader.resolve-order
-
The classloading resolve order. Possible values are ‘child-first’ (Flink’s default) and ‘parent-first’ (Java’s default).
意思就是 Java 默认用 parent-first ,如果使用 Flink 默认的 child-first ,在提交 java 作业时任务会启动不起来
其他配置可以看注释。配置完成后同步到其他节点,如果需要针对特定的 TaskMavager 配置不一样的参数,可以在对应节点的配置文件中重写这些配置。
启动集群
./bin/start-cluster.sh
因为没有配置 ssh 免密登录,所以在地洞TaskMavager时需要输入其他主机的密码:
英文都是 Java 程序,所可以用 jps 命令产看各个节点启动的进程:
访问 JobMavager 的 Web 页面:192.168.116.10:8081 (注意防火墙策略)
提交作业测试集群
准备一个 Flink 程序,这里使用之前文章中写的一个 WordCount 程序:
参考地址:Flink (二)经典用例 WordCount 之实时流处理和批处理实验
也可以直接下载我打好的 jar 包
该 jar 包中有两个可执行程序,本文后面使用无界流数据处理程序测试,另一个的详细参考之前的文章。
如果要测试无界流数据处理,需要在一台虚拟机上利用 nc -lk 9999 开一个 socket 用来实时的输入数据流
在 master 节点开启 9999 端口的监听,在 192.168.116.10 上执行:nc -lk 9999
通过web页面提交作业:
相关参数
入口类(Entry Class):org.flink.study.practice01.StreamWordCount
程序启动参数(Program Arguments):--isNetcat true --host 192.168.116.10 --port 9999
Application Mode 作业模式独立模式部署也可以借助 Docker 或者 K8s,这里使用虚拟机直接搭建,方便之后学习 Flink 的相关特性。
参考官网的例子:
# 在 master 节点 flink 的根目录下执行,通过启动 Application 来启动 JobManager cp ./examples/streaming/TopSpeedWindowing.jar lib/ ./bin/standalone-job.sh start --job-classname org.apache.flink.streaming.examples.windowing.TopSpeedWindowing # 在 worker 节点 flink 的根目录下执行,启动TaskMavager $ ./bin/taskmanager.sh start
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)