Flink 部署笔记:
注:操作系统为Ubuntu 20.04.6;Java版本为8;Flink版本为Flink 1.16.2。
1 本地启动配置
1.1 JAVA环境配置
- 输入
javac
可查看安装提示信息。 - 使用命令
sudo apt install openjdk-8-jdk-headless
安装JDK - 配置环境变量。使用
sudo vim /etc/profile
打开profile文件,按按键i,输入以下内容,依次按按键w、q保存并退出。然后输入命令source /etc/profile
使修改生效。export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
1.2 Flink配置
-
进入Flink官网下载安装包,如flink-1.16.2-bin-scala_2.12.tgz。
-
解压安装包。进入安装包所在文件夹打开终端,输入命令
sudo tar -zxvf flink-1.16.2-bin-scala_2.12.tgz -C /opt/module/
,位置可做修改。
可通过命令chmod -R 777 flink-1.16.2
递归修改文件权限。
若没有文件夹,可使用sudo mkdir /opt/module/
创建。解压完毕后,可进入解压后的目录的bin目录中,并可使用以下命令:# 启动集群 bash start-cluster.sh # 关闭集群 bash stop-cluster.sh
若报出下面错误,原因是压缩包在上传的时候没有上传完整,需要重新上传一下。
gzip: stdin: unexpected end of file tar: 归档文件中异常的 EOF tar: 归档文件中异常的 EOF tar: Error is not recoverable: exiting now
-
为了方便,可配置环境变量,即使用命令
sudo vim /etc/bash.bashrc
在/etc/bash.bashrc中写入以下内容。然后输入命令source /etc/bash.bashrc
使修改生效。 然后就可以直接使用start-cluster.sh
、stop-cluster.sh
来启动或关闭集群。若提示权限不够,可使用sudo su
切换为root用户。export FLINK_HOME=/opt/module/flink-1.16.2 export PATH=$FLINK_HOME/bin:$PATH
-
启动成功后,可访问http://localhost:8081,对Flink集群和任务进行监控管理。
2 集群启动配置
2.1 集群环境配置
- 准备好多个虚拟机,可直接用克隆功能。
- 可参考 https://blog.youkuaiyun.com/White_Ink_/article/details/139743058 配置集群环境。
2.2 Flink配置
- 修改Flink目录下的conf/flink-conf.yaml文件,内容如下,指定了node1作为JobManager 节点。
该文件还有其他配置,部分配置项如下:# JobManager 节点地址. jobmanager.rpc.address: node1
参考配置:jobmanager.heap.size: 1024m # JobManager JVM heap 内存大小 taskmanager.heap.size: 1024m # TaskManager JVM heap 内存大小 taskmanager.numberOfTaskSlots: 2 # 每个 TaskManager 提供的任务 slots 数量大小 taskmanager.memory.preallocate: false #是否进行预分配内存,默认不进行预分配,这样在我们不使用flink集群时候不会占用集群资源 parallelism.default: 1 # 程序默认并行计算的个数 jobmanager.bind-host: 0.0.0.0 # 如果是集群环境,这个必须设置为0.0.0.0。默认情况下,这是 localhost,它将阻止JobManager 与它所运行的机器/容器之外进行通信。 jobmanager.web.port: 8081 # JobManager的Web界面的端口(默认:8081) rest.bind-address: 0.0.0.0 # 0.0.0.0为允许其他设备访问Web UI
jobmanager.rpc.address: node1 jobmanager.rpc.port: 6123 jobmanager.bind-host: 0.0.0.0 jobmanager.memory.process.size: 1600m taskmanager.bind-host: 0.0.0.0 taskmanager.host: localhost taskmanager.memory.process.size: 1728m taskmanager.numberOfTaskSlots: 2 parallelism.default: 1 jobmanager.execution.failover-strategy: region rest.address: 0.0.0.0 rest.bind-address: 0.0.0.0
- 修改conf/workers文件,内容如下,指定了node2和node3为 TaskManager 节点。
node2
node3
- 配置修改完毕后,将 Flink 安装目录发给其他节点服务器,命令如
scp -r /opt/module/flink-1.16.2 root@node2:/opt/module/
。 - 在node1下,执行bin/start-cluster.sh文件即可启动集群。得到以下信息。
Starting cluster.
Starting standalonesession daemon on host node1.
Starting taskexecutor daemon on host node2.
Starting taskexecutor daemon on host node3.
- 启动成功后,可访问
http://localhost:8081
,对Flink集群和任务进行监控管理。
3 提交任务
- 将编写的代码打成 jar 包。
可以引入插件 maven-assembly-plugin 进行打包。 在maven项目的 pom.xml 文件中添加打包插件的配置,具体如下。
然后可以使用 IDEA 的 Maven 工具执行 package 命令进行打包。<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.0.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
- web UI界面:在右侧导航栏点击“Submit New Job”,然后点击按钮“+ Add New”,选择要上传运行的 jar 包。点击该 JAR 包,出现任务配置页面,进行相应配置。点击按钮“Submit”。
命令行界面:使用命令示例:flink run -m node1:8081 -c org.example.WordCount /home/zpeng/My/FlinkStudy-1.0-SNAPSHOT-jar-with-dependencies.jar
。