Flink支持多种安装模式

  • local(本地):单机模式,一般本地开发调试使用
  • StandAlone 独立模式:Flink自带集群,自己管理资源调度,生产环境也会有所应用
  • Yarn模式:计算资源统一由Hadoop YARN管理,生产环境应用较多

    1 环境准备工作

    1.1 基础环境

  • jdk1.8及以上【配置JAVA_HOME环境变量】

  • ssh免密码登录【集群内节点之间免密登录】

    1.2 安装包下载

  • Flink1.11.1版本

    1.3 集群规划

    | hdp-1 | hdp-2 | hdp-3 | | —- | —- | —- | | JobManager+TaskManager | TaskManager | TaskManager |

1.4 StandAlone模式部署

Step1、Flink安装包上传到hdp-1对应目录并解压
Step2、修改 flink/conf/flink-conf.yaml 文件
image.png
Step3、修改 /conf/slave文件
image.png
Step4、standalone模式启动
image.png
Step5、jps进程查看核实
image.png
Step6、查看Flink的web页面 ip:8081/#/overview
image.png
Step7、集群模式下运行example测试
image.png
Step8、查看结果文件
注意:集群搭建完毕后,Flink程序就可以达成Jar,在集群环境下类似于Step7中一样提交执行计算任务
打jar包插件:
image.png

1.5 Yarn模式部署

(1)启动一个YARN session(Start a long-running Flink cluster on YARN);

image.png
修改/etc/profile

  1. export HADOOP_CONF_DIR=$HADOOP_HOME
  2. export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
  3. export HADOOP_CLASSPATH=`hadoop classpath`

配置文件 yarn-site.xml

<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>teacher2:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>teacher2:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>teacher2:8031</value>
</property>

注意:yarn-site的修改需要在集群的每一台机器上执行

启动hadoop (hdfs-yarn) yarn-session.sh -h
image.png
/export/servers/flink/bin/yarn-session.sh -n 2 -tm 800 -s 1 -d

申请 2 个CPU、1600M内存:
bin/yarn-session.sh -n 2 -tm 800 -s 1 -d

  • -n 表示申请 2 个容器,这里指的就是多少个taskmanager
  • -s 表示每个TaskManager的slots数量
  • -tm 表示每个TaskManager的内存大小
  • -d 表示以后台程序方式运行

解释:
上面的命令的意思是,同时向Yarn申请 3 个container(即便只申请了两个,因为ApplicationMaster和Job Manager有一个额外的容器。一旦将Flink部署到YARN群集中,它就会显示Job Manager的连接详细信息)

2 个 Container 启动 TaskManager -n 2,每个 TaskManager 拥有 1 个 Task Slot -s 1,并且向每个 TaskManager
的 Container 申请 800M 的内存,以及一个ApplicationMaster—Job Manager。

如果不想让Flink YARN客户端始终运行,那么也可以启动分离的 YARN会话。该参数被称为-d或—detached。在这
种情况下,Flink YARN客户端只会将Flink提交给集群,然后关闭它自己

yarn-session.sh(开辟资源) + flink run(提交任务)

  • 使用Flink中的yarn-session(yarn客户端),会启动两个必要服务JobManager和TaskManager
  • 客户端通过flink run提交作业
  • yarn-session会一直启动,不停地接收客户端提交的作业
  • 这种方式创建的Flink集群会独占资源。
  • 如果有大量的小作业/任务比较小,或者工作时间短,适合使用这种方式,减少资源创建的时间.

(2)直接在YARN上提交运行Flink作业(Run a Flink job on YARN)

image.png

  • bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 /export/servers/flink/examples/batch/WordCount.jar
    • -m jobmanager的地址
    • -yn 表示TaskManager的个数

./flink run -m yarn-cluster

  • 停止yarn-cluster:
    • yarn application -kill application_1527077715040_0003
    • rm -rf /tmp/.yarn-properties-root