使用StandAlone模式,需要启动Flink的主节点JobManager以及从节点TaskManager
服务 | node1 | node2 | node3 |
---|---|---|---|
JobManager | 是 | 否 | 否 |
TaskManager | 是 | 是 | 是 |
Flink 的部署模式分为3种:
(1)Application模式
(2)Per-Job模式
(3)Session模式
tar zxvf flink-1.14.6-bin-scala_2.11.tgz
export FLINK_HOME=/home/environment/flink-1.14.6
export PATH=$FLINK_HOME/bin:$PATH
每个 JobManager 的可用内存值(jobmanager.memory.process.size)
每个 TaskManager 的可用内存值 (taskmanager.memory.process.size
每台机器的可用 CPU 数(taskmanager.numberOfTaskSlots)
集群中所有 CPU 数(parallelism.default)
临时目录(io.tmp.dirs)
bin/start-cluster.sh 和 bin/stop-cluster.sh 依赖 conf/masters 和 conf/workers 来确定集群组件实例的数量
编辑masters文件;进入conf目录:
vim ./flink/conf/masters
#删除默认的改为
node1:8081
配置工作节点
vi workers
# 将其他两台机器的IP一起写进去
node1
node2
node3
scp -r /home/environment/flink-1.14.6/ node2:/home/environment/
scp -r /home/environment/flink-1.14.6/ node3:/home/environment/
./bin/start-cluster.sh
./bin/stop-cluster.sh
任意一台节点上(一般在 master 节点)执行 bin/start-cluster.sh 均可启动该集群
参数 | 说明 |
---|---|
-n | TaskManager的数量,相当于executor的数量 |
-s | 每个JobManager的core的数量,executor-cores。建议将slot的数量设置每台机器的处理器数量 |
-tm | 每个TaskManager的内存大小,executor-memory |
-jm | JobManager的内存大小,driver-memory |
启动成功后通过web访问;JobManager同时会在8081端口上启动一个web前端,通过http://localhost:8081来访问,默认端口是8081,可以修改config配置端口
命令执行job
# 启动一个终端(端口9099)
# 在一个窗口启动一个websocket 端口9099
nc -l -p 9099
# 再开一个端口执行flink 例子
./flink run ../examples/streaming/WordCount.jar --port 9099
提交官方提供的WordCount程序试试,启动命令:
flink run -m yarn-cluster -yn 1 /home/radmin/package/WordCount.jar
在Flink1.8版本后,Flink官方提供的安装包里没有整合HDFS的jar
下载jar包并在Flink的lib目录下放入该jar包并分发使Flink能够支持对Hadoop的操作
https://mvnrepository.com/artifact/org.apache.flink/flink-shaded-hadoop-2
放入lib目录
Flink自1.11.0 版本开始,已经支持了hadoop 3.x,具体来讲就是将 HADOOP_CLASSPATH 配置成运行机器上的hadoop3 相关jar包即可
YARN上的Flink是针对Hadoop 2.4.1编译的,支持所有的Hadoop版本>= 2.4.1,包括Hadoop 3.x
推荐的方法是通过HADOOP_CLASSPATH环境变量将Hadoop类路径添加到Flink。
Flink 在启动Flink组件(如Client、JobManager或TaskManager)前,将环境变量HADOOP_CLASSPATH的值添加到classpath中。但大多数Hadoop发行版和云环境不会默认设置HADOOP_CLASSPATH这个环境变量,所以如果Hadoop类路径应该由Flink选择,那么必须在所有运行Flink组件的机器上设置这个环境变量。
如果运行在YARN上时,只需要执行下面一条脚本。因为在YARN内部运行的组件将通过Hadoop类路径启动,但当向YARN提交作业时,Hadoop依赖项必须在类路径中。
hadoop classpath是一句shell命令,用于获取配置的Hadoop类路径
export HADOOP_CLASSPATH=`hadoop classpath`
注意:从Flink 1.11开始,Flink项目不再正式支持使用Flink -shade -hadoop-2-uber版本。建议用户通过HADOOP_CLASSPATH提供Hadoop依赖项
/home/environment/flink-1.14.6/lib/flink-shaded-hadoop-2-2.8.3-10.0.jar
export HADOOP_CLASSPATH=`hadoop classpath`