一、环境

系统版本   centos7.6

docker版本   Docker version 20.10.10


准备文件:

hadoop-3.3.1.tar.gz   #hadoop安装包

hadoopfiles.tar.gz     #hadoop内部各种配置文件

jdk1.8.0_201.tar.gz    #安装java环境

flink-1.13.6-bin-scala_2.12.tgz  #flink安装包

scala-2.12.12.tgz  #对应的Scala安装包

CentOS7-Base.repo   #换源

第二十五节  Docker 部署 Flink on Yarn_hadoop

二、安装docker

安装需要的依赖包
yum -y install wget jq psmisc vim net-tools nfs-utils telnet yum-utils 
yum -y install device-mapper-persistent-data lvm2 git network-scripts tar curl
yum install -y conntrack scoat ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

# 关闭交换分区
sed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a && sysctl -w vm.swappiness=0
 
cat /etc/fstab
# /dev/mapper/centos-swap swap                    swap    defaults        0 0
# 

## 关闭 SeLinux
# setenforce 0
# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
# 修改内核参数

yum -y install bridge-utils
modprobe br_netfilter
vim /etc/sysctl.conf
-----
net.ipv4.ip_forward = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.bridge.bridge-nf-call-arptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
-----
sysctl -p 

cat <<EOF >> /etc/security/limits.conf
* hard nofile 655360
* soft nofile 655360
* hard nproc 655360
* soft nproc 655360
* soft core 655360
* hard core 655360
root hard nofile 655360
root soft nofile 655360

EOF

### 开启ipvs 转发
modprobe br_netfilter 

cat > /etc/sysconfig/modules/ipvs.modules << EOF 

#!/bin/bash 
modprobe -- ip_vs 
modprobe -- ip_vs_rr 
modprobe -- ip_vs_wrr 
modprobe -- ip_vs_sh 
modprobe -- nf_conntrack
EOF 

chmod 755 /etc/sysconfig/modules/ipvs.modules 

bash /etc/sysconfig/modules/ipvs.modules 

lsmod | grep -e ip_vs -e nf_conntrack
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
1) RPM 包安装方法:
提供的官方网址
官方文档:https://docs.docker.com

# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker软件包源
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

## 查看所有的可用版本
yum list docker-ce --showduplicates | sort -r

# 安装Docker CE  
yum install -y docker-ce 

## 安装所需要的指定版本
yum install docker-ce-20.10.24-3.el7 docker-ce-cli-20.10.24-3.el7 docker-ce-rootless-extras-20.10.24-3.el7 
   
## 阿里云镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://dfmo7maf.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "2048m"
},
"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

## 添加镜像加速
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

# 启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.

三、封装镜像

拉取镜像
docker pull centos:7 
给容器搭桥
docker network create --driver bridge flink-br
启动容器
docker run -d --name centos7 --privileged=true centos:7 /usr/sbin/init
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

第二十五节  Docker 部署 Flink on Yarn_flink_02

第二十五节  Docker 部署 Flink on Yarn_flink_03

容器换源装包

拷贝源文件到容器内
docker cp CentOS7-Base.repo centos7:/root

进容器
docker exec -it centos7 /bin/bash
--------------
更换centos7的源
cd /etc/yum.repos.d
mkdir yumbak
把里面的repo进行备份 
mv CentOS-* yumbak/
移动源文件到/etc/yum.repos.d下
mv /root/CentOS7-Base.repo .
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

第二十五节  Docker 部署 Flink on Yarn_hadoop_04

cd /root
yum clean all
更新软件源目录
yum makecache fast
  • 1.
  • 2.
  • 3.
  • 4.

第二十五节  Docker 部署 Flink on Yarn_hadoop_05

装包
yum install -y lrzsz git psmisc telnet subversion gpm vim net-tools curl htop openssh-server openssh-clients sudo sshd iproute
  • 1.
  • 2.

第二十五节  Docker 部署 Flink on Yarn_hadoop_06

容器开启sshd服务

# 开启sshd服务
sudo systemctl daemon-reload
sudo systemctl start sshd
ss -tan


vim /etc/ssh/sshd_config
:set nu
#找到permitrootlogin yes,取消注释 保存退出
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

第二十五节  Docker 部署 Flink on Yarn_hadoop_07

:set nu显示行号
第38行  开启permitrootlogin yes
  • 1.
  • 2.

第二十五节  Docker 部署 Flink on Yarn_docker_08

echo 123456 | passwd --stdin root

退出镜像
exit
  • 1.
  • 2.
  • 3.
  • 4.

第二十五节  Docker 部署 Flink on Yarn_flink_09

制作centos7-sshd镜像

制作centos7-sshd:v1镜像
docker commit   9fc072bcb480  centos7-sshd:v1

查看制作的centos7-sshd:v1
docker ps -a
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

第二十五节  Docker 部署 Flink on Yarn_docker_10

制作centos7-hadoop镜像

tar -zxvf hadoopfiles.tar.g
cd hadoopfiles
mv *   /root/bigdata
cd ..
  • 1.
  • 2.
  • 3.
  • 4.

第二十五节  Docker 部署 Flink on Yarn_hadoop_11

##使用dockerfile构建镜像
vim dockerfile-hadoop-v1
----------------------------------
FROM centos7-sshd:v1
MAINTAINER liyingchun
RUN yum install lrzsz git subversion gpm unzip zip net-tools wget vim curl epel-release -y && \
    yum install -y gcc gcc-c++ make gd-devel libxml2-devel \
    libcurl-devel libjpeg-devel libpng-devel openssl-devel \
    libmcrypt-devel libxslt-devel libtidy-devel autoconf \
    iproute net-tools telnet wget curl && \
    yum clean all && \
    rm -rf /var/cache/yum/*
RUN mkdir -p /opt/bigdata
# 安装jdk
ADD jdk1.8.0_201.tar.gz /opt/bigdata
RUN mv /opt/bigdata/jdk1.8.0_201 /opt/bigdata/jdk
ENV JAVA_HOME /opt/bigdata/jdk
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
## 安装hadoop
ADD hadoop-3.3.1.tar.gz /opt/bigdata/
RUN mv /opt/bigdata/hadoop-3.3.1 /opt/bigdata/hadoop
ENV HADOOP_HOME /opt/bigdata/hadoop
ENV HADOOP_MAPRED_HOME /opt/bigdata/hadoop
ENV PATH $PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# 配置 Hadoop
COPY core-site.xml /opt/bigdata/hadoop/etc/hadoop/
COPY hdfs-site.xml /opt/bigdata/hadoop/etc/hadoop/
COPY mapred-site.xml /opt/bigdata/hadoop/etc/hadoop/
COPY yarn-site.xml /opt/bigdata/hadoop/etc/hadoop/
COPY hadoop-env.sh /opt/bigdata/hadoop/etc/hadoop/
COPY yarn-env.sh /opt/bigdata/hadoop/etc/hadoop/
COPY mapred-env.sh /opt/bigdata/hadoop/etc/hadoop/
WORKDIR /opt/bigdata/hadoop
--------------------------------
----------格式化-------
yum install dos2unix
dos2unix  dockerfile-hadoop-v1
----------------------------------
运行dockerfile文件
docker build -t hadoop:v1  -f  dockerfile-hadoop-v1 .  #注意有个点,表示本地文件运行
编译时间长,需耐心等等
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.

第二十五节  Docker 部署 Flink on Yarn_hadoop_12

第二十五节  Docker 部署 Flink on Yarn_hadoop_13

启动刚制作的hadoop镜像

运行hadoop:v1镜像
docker run -tid --name hadoop-test hadoop:v1  /bin/bash

查看容器ID
docker ps -a

拷贝flink和scala包到hadoop容器
docker cp flink-1.13.6-bin-scala_2.12.tgz c2600a397dcd:/root
docker cp scala-2.12.12.tgz c2600a397dcd:/root

进入容器
docker exec -it  c2600a397dcd  /bin/bash
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

第二十五节  Docker 部署 Flink on Yarn_hadoop_14

# 解压
cd /root
ll
tar -zxvf flink-1.13.6-bin-scala_2.12.tgz
tar -zxvf scala-2.12.12.tgz

mv scala-2.12.12  /opt/bigdata/
mv flink-1.13.6 /opt/bigdata/
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

第二十五节  Docker 部署 Flink on Yarn_hadoop_15

改文件名字
cd /opt/bigdata/
mv flink-1.13.6 flink
mv scala-2.12.12 scala
  • 1.
  • 2.
  • 3.
  • 4.

第二十五节  Docker 部署 Flink on Yarn_flink_16

修改环境变量配置文件
vim /etc/profile
----------------------
##jdk
export JAVA_HOME=/opt/bigdata/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

##hadoop
export HADOOP_HOME=/opt/bigdata/hadoop
PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=/opt/bigdata/hadoop/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`

##scala
export SCALA_HOME=/opt/bigdata/scala
PATH=$PATH:$HOME/bin:$SCALA_HOME/bin:$SCALA_HOMT/sbin

##flink
export FLINK_HOME=/opt/bigdata/flink
PATH=$PATH:$HOME/bin:$FLINK_HOME/bin:$FLINK_HOME/sbin
---------------------------------
----------格式化-------
yum install dos2unix
dos2unix  /etc/profile
--------------------------------------------------
source /etc/profile
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.

第二十五节  Docker 部署 Flink on Yarn_hadoop_17

测试jdk环境、hadoop环境
java -version
hadoop version

如果测试没反应,可以重启下容器
docker restart c2600a397dcd
再进容器内部测试
docker exec -it  c2600a397dcd  /bin/bash
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

第二十五节  Docker 部署 Flink on Yarn_flink_18

更改flink-conf配置文件
cd /opt/bigdata/flink/conf
:set nu显示行号
vim +192 flink-conf.yaml
# 添加
classloader.check-leaked-classloader: false
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

第二十五节  Docker 部署 Flink on Yarn_flink_19

vim works
## 填入所有容器节点 
--------
flink01
flink02
flink03
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

第二十五节  Docker 部署 Flink on Yarn_hadoop_20

提交镜像docker commit 112ee903305d centos7-software:v2   ###112ee903305d是运行的容器id
  • 1.

推送镜像到阿里云仓库

推送
$ docker login --username=lycshnr2022 registry.cn-hangzhou.aliyuncs.com
$ docker tag 843203aa5a4c registry.cn-hangzhou.aliyuncs.com/liyingchun-images/hadoop-test:v1
$ docker push registry.cn-hangzhou.aliyuncs.com/liyingchun-images/hadoop-test:v1

拉取
$ docker pull registry.cn-hangzhou.aliyuncs.com/liyingchun-images/hadoop-test:v1

登出仓库
docker logout registry.cn-hangzhou.aliyuncs.com
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

第二十五节  Docker 部署 Flink on Yarn_hadoop_21

至此,咱们的hadoop-flink镜像就制作完毕,下一步就是免密登录,配置hadoop各核心文件参数


四、flink集群实验

使用镜像开辟三个容器
## flink01 容器
docker run -itd --network flink-br --hostname flink01 --name flink01 -p 50070:50070 -p 8088:8088 -p 9000:9000 -p 16010:16010 -p 2181:2181 -p 8020:8020 -p 8080:8080 -p 9020:9020 -p 1022:22 -p 10000:10000 -p 10002:10002 -p 8381:8381 --privileged=true centos7-software:v2 /usr/sbin/init

## flink02 容器
docker run -itd --network flink-br --hostname flink02 --name flink02 -p 10020:10020 -p 19888:19888 -p 2022:22 --privileged=true centos7-software:v2 /usr/sbin/init

## flink03 容器
docker run -itd --network flink-br --hostname flink03 --name flink03 -p 3022:22 --privileged=true centos7-software:v2 /usr/sbin/init
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

第二十五节  Docker 部署 Flink on Yarn_docker_22

进3台容器,单独开会话窗口,方便操作
docker exec -it flink01 /bin/bash
docker exec -it flink02 /bin/bash
docker exec -it flink03 /bin/bash

查看容器IP
ifconfig
flink01   172.18.0.2
flink02   172.18.0.3
flink03   172.18.0.4
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

第二十五节  Docker 部署 Flink on Yarn_flink_23

第二十五节  Docker 部署 Flink on Yarn_hadoop_24

第二十五节  Docker 部署 Flink on Yarn_docker_25

配置免密登录

分别在3台容器上各自修改主机名
hostname flink01
bash

hostname flink02
bash

hostname flink03
bash

变更hosts文件映射
vim /etc/hosts
172.18.0.2  flink01
172.18.0.3  flink02 
172.18.0.4  flink03
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

使用脚本进行免密登录设置

在容器外包,将脚本文件拷贝到容器内
pwd
/root/bigdata
docker cp  fgssh 62b6ada4ef16:/root
给脚本加权限
chmod +x fgssh
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

第二十五节  Docker 部署 Flink on Yarn_hadoop_26

执行免密脚本
./fgssh -user root -hosts "flink01 flink02 flink03" -advanced -exverify -confirm

输入一次yes
看到enter  就是回车
看到password就是输密码
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

第二十五节  Docker 部署 Flink on Yarn_docker_27

测试ssh功能是否正常
在flink03上随便建一个文件
scp同步到flink02、flink01上
然后cat同步的文件
  • 1.
  • 2.
  • 3.
  • 4.

第二十五节  Docker 部署 Flink on Yarn_hadoop_28

第二十五节  Docker 部署 Flink on Yarn_hadoop_29

第二十五节  Docker 部署 Flink on Yarn_hadoop_30

测试环境变量

分别在3台机器上测试
java -version
hadoop version
  • 1.
  • 2.
  • 3.

第二十五节  Docker 部署 Flink on Yarn_docker_31

第二十五节  Docker 部署 Flink on Yarn_hadoop_32

第二十五节  Docker 部署 Flink on Yarn_hadoop_33

再次查看hadoop配置文件

###每个机器节点都需要核实
cd /opt/bigdata/hadoop/etc/hadoop

#节点
vim workers

#环境
vim hadoop-env.sh

#核心配置
vim core-site.xml
vim hdfs-site.xml
vim mapred-site.xml
vim yarn-site.xml
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

集群进行初始化操作

# 初始化
cd /opt/bigdata/hadoop
执行
bin/hdfs  namenode -format
  • 1.
  • 2.
  • 3.
  • 4.

第二十五节  Docker 部署 Flink on Yarn_flink_34

启动集群组件服务

flink01 容器:
cd /opt/bigdata/hadoop/sbin
./hadoop-daemon.sh start namenode
./hadoop-daemon.sh start datanode
./hadoop-daemon.sh start secondarynamenode
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

第二十五节  Docker 部署 Flink on Yarn_flink_35

进入flink02 容器:
cd /opt/bigdata/hadoop/sbin
./hadoop-daemon.sh start datanode
  • 1.
  • 2.
  • 3.

第二十五节  Docker 部署 Flink on Yarn_flink_36

进入flink03 容器:
cd /opt/bigdata/hadoop/sbin
./hadoop-daemon.sh start datanode
  • 1.
  • 2.
  • 3.

第二十五节  Docker 部署 Flink on Yarn_flink_37

浏览器输入
192.168.80.28:50070   ##hdfs管理
  • 1.
  • 2.

第二十五节  Docker 部署 Flink on Yarn_docker_38

进入flink01启动yarn:
cd /opt/bigdata/hadoop/sbin 
./yarn-daemon.sh start resourcemanager
./yarn-daemon.sh start nodemanager
  • 1.
  • 2.
  • 3.
  • 4.

第二十五节  Docker 部署 Flink on Yarn_hadoop_39

进入flink02容器启动yarn:
cd /opt/bigdata/hadoop/sbin 
./yarn-daemon.sh start nodemanager
./mr-jobhistory-daemon.sh start historyserver
  • 1.
  • 2.
  • 3.
  • 4.

第二十五节  Docker 部署 Flink on Yarn_hadoop_40

进入flink03 容器启动yarn:
cd /opt/bigdata/hadoop/sbin 
./yarn-daemon.sh start nodemanager
  • 1.
  • 2.
  • 3.

第二十五节  Docker 部署 Flink on Yarn_docker_41

打开yarn的web 
http://192.168.80.28:8088
  • 1.
  • 2.

第二十五节  Docker 部署 Flink on Yarn_flink_42

测试flink on yarn

Flink or yarn-session模式

Flink on Yarn-Session 模式指的是在 Yarn 集群中以会话模式运行 Apache Flink 应用程序。在 Session模式下,用户可以创建和维护一个长时间运行的Flink会话,并在该会话中提交多个应用程序,在不同的时间异步地运行它们。这种模式能够充分利用集群资源并提高运行效率。

第二十五节  Docker 部署 Flink on Yarn_docker_43

在Session模式下,Flink集群作为长期存在的会话运行,可以被用于提交多个Flink应用程序。

这些应用程序可以共享相同的Flink集群和资源,从而减少了资源占用和管理的负担。

用户可以通过Yarn的管理界面或命令行向Flink集群发送应用程序提交请求。

在接收到提交请求后,Flink会话会根据应用程序的需求分配资源,并启动相应的Flink作业。

在Session模式下,Flink集群和应用程序都可以在同一个Yarn应用程序中运行。对于每个应用程序,Yarn将为该应用程序创建一个不同的容器,容器中会运行一个 Flink TaskManager进程和一个Flink JobManager进程。多个容器中的Flink TaskManager会连接到同一个Flink JobManager,通过该JobManager协调和管理整个Flink集群。

在Flink Session模式中,用户可以通过Web UI或命令行界面来查看每个Flink作业的执行情况、资源使用情况以及日志信息等。同时,Flink支持动态调整任务的资源配置,例如增加某个任务的任务槽数量或内存占用等。

【总结】Flink Session模式是一种长时间运行的Flink集群,可以用于提交多个Flink应用程序,并共享相同的资源和集群。它可以提高资源利用率和运行效率。

复制flink01会话,登录flink01容器
docker exec -it flink01 /bin/bash
cd /opt/bigdata/flink/

1. session 模式测试:
打开一个yarn的session
在提交Job前必须要开始yarn-session

执行命令
bin/yarn-session.sh -n 2 -tm 800 -s 1 -d
-n 表示申请2个容器,这⾥指的就是多少个taskmanager
-s 表示每个TaskManager的slots数量
-jm 表示每个JobManager的内存大小 单位:MB
-tm 表示每个TaskManager的内存⼤小 单位:MB
-d 表示以后台程序⽅式运行
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

第二十五节  Docker 部署 Flink on Yarn_docker_44

第二十五节  Docker 部署 Flink on Yarn_flink_45

第二十五节  Docker 部署 Flink on Yarn_hadoop_46

第二十五节  Docker 部署 Flink on Yarn_docker_47

Flink on yarn-Per job模式

Flink on Yarn–Per Job 模式指的是通过向 Yarn 集群提交独立的 Flink 作业来运行 Apache Flink 应用程序。在 Per Job 模式下,每次提交作业时,Flink 会启动一个新的 Flink 集群来运行该作业,作业完成后该集群也会被关闭。这种模式适用于需要独立资源且彼此不相关的场景。

第二十五节  Docker 部署 Flink on Yarn_flink_48

在 Per Job 模式下,用户需要为每个应用程序创建单独的 Yarn 应用程序并调整相应的参数和配置。每个应用程序都会启动一个新的、独立的 Flink 集群,该集群只为当前作业提供资源。

在 Per Job 模式下,Flink 应用程序可以使用 Yarn 集群中的所有可用资源,从而可以充分利用集群资源,并在有限的时间内完成计算任务。

Yarn 的 ResourceManager 会为每个 Flink 作业分配所需的资源,启动相应的容器并进行初始化。

Flink 集群将由一个 JobManager 和多个 TaskManager 组成,它们负责管理和执行传入的作业。

在 Flink Per Job 模式下,用户可以通过 Web UI 或命令行界面来查看每个 Flink 作业的执行情况、资源使用情况以及日志信息等。同时,用户也可以在提交作业之前配置 Flink 集群的参数和资源限制,例如任务槽数量、内存占用等。

【总结】Flink on Yarn–Per Job 模式适用于需要独立资源且彼此不相关的场景。它通过向 Yarn 集群提交独立的 Flink 作业来运行应用程序,并为每个作业启动一个新的 Flink 集群,从而充分利用集群资源,提高了应用程序的计算效率。

运行一个yarn-per-job作业
cd /opt/bigdata/flink
bin/flink run -t yarn-per-job -yjm 1024 -ytm 1024 /opt/bigdata/flink/examples/batch/WordCount.jar
  • 1.
  • 2.
  • 3.

第二十五节  Docker 部署 Flink on Yarn_docker_49

第二十五节  Docker 部署 Flink on Yarn_flink_50


集群模式

第二十五节  Docker 部署 Flink on Yarn_flink_51

第二十五节  Docker 部署 Flink on Yarn_docker_52

cd /opt/bigdata/flink/conf
vim  flink-conf.yaml
-------------------
jobmanager.rpc.address: flink01


vim workers
----------------
flink01
flink02
flink03

vim masters
------------
flink01
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

第二十五节  Docker 部署 Flink on Yarn_hadoop_53

第二十五节  Docker 部署 Flink on Yarn_hadoop_54

第二十五节  Docker 部署 Flink on Yarn_hadoop_55

分发
scp flink-conf.yaml workers masters flink02:/opt/bigdata/flink/conf
scp flink-conf.yaml workers masters flink03:/opt/bigdata/flink/conf
  • 1.
  • 2.
  • 3.

第二十五节  Docker 部署 Flink on Yarn_docker_56

启动集群

cd /opt/bigdata/flink
# 执行启动命令
bin/start-cluster.sh

jps查看启动进程
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

第二十五节  Docker 部署 Flink on Yarn_flink_57

第二十五节  Docker 部署 Flink on Yarn_flink_58

第二十五节  Docker 部署 Flink on Yarn_hadoop_59