一、Flink.Yarn模式部署

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

~~~ 方式一:yarn session启动
~~~ 方式二:per job方式启动

|NO.Z.00014|——————————|^^  部署 ^^|—_flink

二、YARN Session方式:Flink.yarn环境部署

### --- 配置环境变量修改/etc/profile

[root@hadoop01 ~]# vim /etc/profile

#FLINK
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`
~~~     # 使环境变量生效

[root@hadoop01 ~]# source /etc/profile
### --- 配置文件 yarn-site.xml

~~~ # yarn-site的修改需要在集群的每一台机器上执行
[root@hadoop01 ~]# vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

<!-- Flink.yarn模式 -->
<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>hadoop01:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop01:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop01:8031</value>
</property>
~~~     # 发送到其它节点

[root@hadoop01 ~]# rsync-script $HADOOP_HOME/etc/hadoop/yarn-site.xml
### --- 启动hdfs、yarn服务

[root@hadoop01 ~]# start-dfs.sh
[root@hadoop01 ~]# start-yarn.sh

三、session yarn模式Flink测试

### --- 启动yarn session

~~~ # 启动yarn session
[root@hadoop01 ~]# cd /opt/yanqi/servers/flink-1.11.1/bin/
[root@hadoop01 bin]# ./yarn-session.sh -s 1 -jm 1024 -tm 1024m
~~~ 查看启动的job
[] - Submitting application master application_1635420648486_0001
[] - Submitted application application_1635420648486_0001
[] - Waiting for the cluster to be allocated
[] - Deploying cluster, current state ACCEPTED
[] - YARN application has been deployed successfully.
[] - Found Web Interface hadoop01:35662 of application 'application_1635420648486_0001'.
### --- 查看yarn-UI启动的session:http://hadoop01:8088/cluster
### --- 进入ApplicationMaster

|NO.Z.00014|——————————|^^  部署 ^^|—_客户端_02

|NO.Z.00014|——————————|^^  部署 ^^|—_flink_03

### --- 启动一个job

~~~ # 启动nc写入数据流
[root@hadoop01 ~]# nc -lp 7777
yarn session
yarn session集群模式
### --- 启动应用jobs
### --- 通过web-UI查看启动的Applications及jobs

[root@hadoop01 ~]# cd /opt/yanqi/servers/flink-1.11.1/bin/
[root@hadoop01 bin]# ./flink run -c WordCountScalaStream \
-yid application_1635420648486_0001 /root/myjars/FirstFlink-1.0-SNAPSHOT.jar

|NO.Z.00014|——————————|^^  部署 ^^|—_flink_04

|NO.Z.00014|——————————|^^  部署 ^^|—_flink_05

|NO.Z.00014|——————————|^^  部署 ^^|—_flink_06


四、启动参数说明

### ---  配置文件地址: 
### --- yarn-session.sh启动参数说明

[root@hadoop01 ~]# /export/servers/flink/bin/yarn-session.sh -n 2 -tm 800 -s 1 -d
~~~     # 启动示例:申请2个CPU、1600M内存:
~~~ -n 表示申请2个容器,这里指的就是多少个taskmanager
~~~ -s 表示每个TaskManager的slots数量
~~~ -tm 表示每个TaskManager的内存大小
~~~ -d 表示以后台程序方式运行

[root@hadoop01 ~]# bin/yarn-session.sh -n 2 -tm 800 -s 1 -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集群会独占资源。
~~~ - 如果有大量的小作业/任务比较小,或者工作时间短,适合使用这种方式,减少资源创建的时间.











Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart

                                                                                                                                                   ——W.S.Landor