Flink集群部署

Flink集群部署 Flink的安装和部署主要分为本地单机模式和集群模式其中本地模式只需直接解压就可以使用不用修改任何参数一般在做一些简单测试的时候使用。本地模式在这里不再赘述。集群部署模式主要包含Standalone、Hadoop Yarn 、Kubernetes等Flink可以借助以上资源管理器来实现分布式计算目前企业使用最多的是Flink 基于Hadoop Yarn资源管理器模式下面我们重点讲解Flink 基于Standalone集群、Yarn资源管理器以及Kubernetes集群部署方式。关于Flink基于Kubernetes集群部署详见第5章节。Standalone集群部署节点划分通过Flink运行时架构小结我们知道Flink集群是由一个JobManager(Master)节点和多个TaskManager(Worker)节点构成并且有对应提交任务的客户端。这里部署Standalone集群基于Linux Centos7.6版本选择4台节点进行部署Flink其中3台节点Standalone集群节点、一台节点是提交Flink任务的客户端各个节点需要满足以下特点各节点安装java8版本及以上jdk这里选择jdk8。各个节点之间需要两两免密。4台节点角色划分如下standalone集群部署在node1节点上进入到$FLINK\_HOME/conf 目录下配置flink-conf.yaml文件vim $FLINK\_HOME/conf/flink-conf.yaml配置如下内容内容如下# JobManager地址jobmanager.rpc.address: node1# JobManager地址绑定设置jobmanager.bind-host: 0.0.0.0# TaskManager地址绑定设置taskmanager.bind-host: 0.0.0.0# TaskManager地址(不同TaskManager节点host配置对应的host)taskmanager.host: node1# 设置每个TaskManager 的slot个数taskmanager.numberOfTaskSlots: 3# WEB UI 节点只需JobManager节点设置TaskManager节点设置了也无所谓rest.address: node1# WEB UI节点绑定设置(只需JobManster节点设置)rest.bind-address: 0.0.0.0注意以上设置的0.0.0.0代表监听当前节点每一个可用的网络接口0.0.0.0不再是一个真正意义上的ip地址而表示一个集合监听0.0.0.0的端口相当于是可以监听本机中的所有ip端口。以上配置的0.0.0.0 表示想要让外部访问需要设置具体ip或者直接设置为0.0.0.0。5. **分发安装包并配置** node2 ****、**** node3 ****节点**** flink-conf.yaml **文件**#分发到node2、node3节点上[rootnode1 ~]# scp -r /software/flink-1.16.0 node2:/software/[rootnode1 ~]# scp -r /software/flink-1.16.0 node3:/software/#修改node2、node3 节点flink-conf.yaml文件中的TaskManager【node2节点】 taskmanager.host: node2【node3节点】 taskmanager.host: node3#注意这里发送到node4,node4只是客户端[rootnode1 ~]# scp -r /software/flink-1.16.0 node4:/software/6. **启动**Flink **集群**#在node1节点中启动Flink集群[rootnode1 ~]# cd /software/flink-1.16.0/bin/[rootnode1 bin]# ./start-cluster.sh3. **访问**Flink WebUI[https://node1:8081](https://node1:8081/),进入页面如下任务提交测试Standalone集群搭建完成后可以将Flink任务提交到Flink Standalone集群中运行。有两种方式提交Flink任务一种是在WebUI界面上提交Flink任务一种方式是通过命令行方式。这里编写读取Socket数据进行实时WordCount统计Flink任务提交到Flink集群中运行这里以Flink Java代码为例来实现代码如下以上代码编写完成后在对应的项目Maven pom 文件中加入以下plugin:build plugins plugin artifactIdmaven-assembly-plugin/artifactId version2.6/version configuration !-- 设置false后是去掉 xxx-1.0-SNAPSHOT-jar-with-dependencies.jar 后的 “-jar-with-dependencies” -- !--appendAssemblyIdfalse/appendAssemblyId-- descriptorRefs descriptorRefjar-with-dependencies/descriptorRef /descriptorRefs archive manifest mainClassxx.xx.xx/mainClass /manifest /archive /configuration executions execution idmake-assembly/id phasepackage/phase goals goalassembly/goal /goals /execution /executions /plugin /plugins /buildWeb界面提交 Flink 任务向Flink集群提交任务还可以通过WebUI方式提交。点击上传jar包进行参数配置,并提交任务。提交任务之后可以通过WebUI页面查看提交任务输入数据之后可以在对应的TaskManager节点上看到相应结果。Flink On YarnFlink可以基于Yarn来运行任务Yarn作为资源提供方可以根据Flink任务资源需求动态的启动TaskManager来提供资源。Flink基于Yarn提交任务通常叫做Flink On YarnYarn资源调度框架运行需要有Hadoop集群Hadoop版本最低是2.8.5。Flink不同版本与Hadoop整合Flink基于Yarn提交任务时需要Flink与Hadoop进行整合。Flink1.8版本之前Flink与Hadoop整合是通过Flink官方提供的基于对应hadoop版本编译的安装包来实现例如flink-1.7.2-bin-hadoop24-scala_2.11.tgz在Flink1.8版本后不再支持基于不同Hadoop版本的编译安装包Flink与Hadoop进行整合时需要在官网中下载对应的Hadoop版本的flink-shaded-hadoop-2-uber-x.x.x-x.x.jarjar包然后后上传到提交Flink任务的客户端对应的$FLINK_HOME/lib中完成Flink与Hadoop的整合。在Flink1.11版本之后不再提供任何更新的flink-shaded-hadoop-x jarsFlink与Hadoop整合统一使用基于Hadoop2.8.5编译的Flink安装包支持与Hadoop2.8.5及以上Hadoop版本包括Hadoop3.x整合。在Flink1.11版本后与Hadoop整合时还需要配置HADOOP_CLASSPATH环境变量来完成对Hadoop的支持。Flink on Yarn 配置及环境准备Flink 基于Yarn提交任务向Yarn集群中提交Flink任务的客户端需要满足以下两点客户端安装了Hadoop2.8.5版本的hadoop。客户端配置了HADOOP_CLASSPATH环境变量。这里选择node5节点作为提交Flink的客户端该节点已经安装了Hadoop3.3.4版本然后在该节点中配置profile文件加入以下环境变量# vim /etc/profile,加入以下配置export HADOOP_CLASSPATHhadoop classpath#source /etc/profile 使环境变量生效[rootnode5 ~]# source /etc/profile然后将Flink的安装包上传到node5节点/software下并解压[rootnode5 software]# tar -zxvf ./flink-1.16.0-bin-scala_2.12.tgz任务提交测试