大数据-玩转数据-FLINK(Yarn模式)的安装与部署

news2024/11/25 15:24:53

一、为什么要用Flink on Yarn HA 模式

默认情况下,Flink 只有一个JobManager,这将导致单点故障,使用JobManager HA ,集群可以从单点故障中恢复,从而避免单点故障,我们可以在Standalone 或 Flink on Yarn 集群下配置Flink集群HA(高可用性)。而Flink on Yarn的高可用性其实主要是利用Yarn的任务恢复机制实现的。生产环境推荐使用Yarn。

首先,在集群运行时,可能会有很多的集群实例包括MapReduce、Spark、Flink等等,那么如果它们全基于on Yarn就可以完成资源分配,减少单个实例集群的维护,提高集群的利用率。

其次,Flink on Yarn模式安装部署要做的其实不多,正常的步骤:上传二进制包 ,解压,更改文件名称,配置环境变量。

再有,Fink on Yarn 有两种内存管理模式。

内存集中管理模式:在Yarn中初始化一个Flink集群,开辟指定的资源,之后我们提交的Flink Jon都在这个Flink yarn-session中,也就是说不管提交多少个job,这些job都会共用开始时在yarn中申请的资源。这个Flink集群会常驻在Yarn集群中,除非手动停止。

内存Job管理模式【推荐使用】:在Yarn中,每次提交job都会创建一个新的Flink集群,任务之间相互独立,互不影响并且方便管理。任务执行完成之后创建的集群也会消失。

二、Flink on Yarn HA 模式部署

2.1、基本环境搭建

2.1.1、克隆出虚拟机并创建hadoop用户

hadoop100,hadoop101,hadoop102,hadoop103,hadoop104 五台虚拟机(虚拟机配置见虚拟机环境搭建)及补充

登录root 用户,创建hadoop用户(useradd hadoop)
修改hadoop密码(passwd hadoop)
给hadoop用赋予root 权限
修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:

admin:x:500:500:admin:/home/tommy:/bin/bash

改为:

admin:x:0:500:admin:/home/tommy:/bin/bash

2.1.2、修改虚拟机 hostname

[root@hadoop100 ~]# vi /etc/hostname 

在这里插入图片描述
重启后生效

2.1.3、修改虚拟机 hosts

[root@hadoop100 ~]# vi /etc/hosts

在这里插入图片描述

2.1.4、设置虚拟机的免密登录

免密登录参考

2.1.5、关闭虚拟机防火墙

[root@hadoop100 ~]# systemctl disable firewalld
[root@hadoop100 ~]#  chkconfig iptables off

2.1.6、目录规划

规划安装目录:/home/hadoop/apps
规划数据目录:/home/hadoop/data
注:apps和data文件夹需要自己单独创建

2.1.7、安装配置JDK 1.8

https://www.oracle.com/java/technologies/downloads/#java8
下载 jdk-8u371-linux-x64.tar.gz
将安装包上传到hadoop100 /home/hadoop/apps 目录下,没有则创建它。
解压

[root@hadoop100 apps]# tar -zxvf jdk-8u371-linux-x64.tar.gz

改名

[root@hadoop100 apps]# mv jdk1.8.0_371 jdk1.8

配置JAVA_HOME

[root@hadoop100 apps]# vi /etc/profile

末尾加上

export JAVA_HOME=/home/hadoop/apps/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
[root@hadoop100 apps]# source /etc/profile
[root@hadoop100 apps]# java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

分发该目录到其它四个节点并让环境生效

[root@hadoop100 apps]# scp -r /home/hadoop/apps/ hadoop101:/home/hadoop/apps/
[root@hadoop100 apps]# scp -r /etc/profile hadoop101:/etc/
[root@hadoop101 ~]# source /etc/profile

2.2、开装hadoop集群环境

Hadoop 节点:hadoop100,hadoop101,hadoop102

2.2.1、下载Hadoop安装包

下载地址 https://hadoop.apache.org/releases.html
Binary 已编辑好 ,source 需要编辑
将 hadoop-2.10.1.tar.gz 拷贝到 app 目录下,hadoop用户

解压

[root@hadoop100 apps]# tar -zxvf hadoop-2.10.1.tar.gz

2.2.2、修改Hadoop相关配置文件

[root@hadoop100 apps]# cd hadoop-2.10.1/etc/hadoop/

配置hadoop-env.sh

[root@hadoop100 hadoop]# vi hadoop-env.sh
export JAVA_HOME=/home/hadoop/apps/jdk1.8
export HADOOP_LOG_DIR=/home/hadoop/data/hadoop_repo/logs/hadoop

配置yarn-env.sh

[root@hadoop100 hadoop]# vi yarn-env.sh
export JAVA_HOME=/home/hadoop/apps/jdk1.8
export YARN_LOG_DIR=/home/hadoop/data/hadoop_repo/logs/yarn

配置core-site.xml

[root@hadoop100 hadoop]# vi core-site.xml
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop100:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/hadoop/data/hadoop_repo</value>
        </property>
</configuration>

配置hdfs-site.xml

[root@hadoop100 hadoop]# vi hdfs-site.xml
<configuration>
     <property>
         <name>dfs.replication</name>
         <value>2</value>
          <description>HDFS 的数据块的副本存储个数, 默认是3</description>
     </property>
	 <property>
          <name>dfs.secondary.http.address</name>
          <value>hadoop100:50090</value>
          <description>secondarynamenode 运行节点的信息,和 namenode 不同节点</description>
     </property>   
</configuration>

配置 yarn-site.xml

[root@hadoop100 hadoop]# vi yarn-site.xml
<configuration>
       <property>
       <name>yarn.resourcemanager.hostname</name>
             <value>hadoop100</value>
       </property>
        
       <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
            <description>YARN 集群为 MapReduce 程序提供的 shuffle 服务</description>
       </property>
</configuration>

配置mapred-site.xml
改名

[root@hadoop100 hadoop]# mv mapred-site.xml.template mapred-site.xml
[root@hadoop100 hadoop]# vi mapred-site.xml
<configuration>
        <property>
             <name>mapreduce.framework.name</name>
             <value>yarn</value>
        </property>
</configuration>

配置slaves

[root@hadoop100 hadoop]# vi slaves 
hadoop101
hadoop102

2.2.3、分发安装目录

将hadoop100上修改的后的Hadoop安装目录复制到其它两个节点hadoop101,hadoop102

[root@hadoop100 apps]# scp -r hadoop-2.10.1 hadoop101:/home/hadoop/apps/

2.2.4、HDFS 格式化

在hadoop100 上进行格式化
在 /home/hadoop/apps/hadoop-2.10.1目录下

[root@hadoop100 hadoop-2.10.1]# bin/hdfs namenode -format

2.2.5、启动hadoop

[root@hadoop100 hadoop-2.10.1]# sbin/start-all.sh 

2.2.6、验证

[root@hadoop100 hadoop-2.10.1]# jps
7248 NameNode
7444 SecondaryNameNode
7597 ResourceManager
7869 Jps
[root@hadoop101 hadoop]# jps
7204 Jps
6667 DataNode
7080 NodeManager
[root@hadoop102 hadoop]# jps
6697 DataNode
6810 NodeManager
6942 Jps

2.2.7、 配置HADOOP_HOME环境变量

为了后面操作方便,配置hadoop100 的HADOOP_HOME
在前面JAVA_HOME基础上添加

export JAVA_HOME=/home/hadoop/apps/jdk1.8
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.10.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

2.3、开装ZooKeeper集群

在hadoop100、hadoop101 、hadoop102配置ZooKeeper集群

2.3.1、下载ZooKeeper 安装包

https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz
需要下载bin包, apache-zookeeper-3.8.1-bin.tar.gz

hadoop用户登录(已有root权限)

[root@hadoop100 apps]#  tar -zxvf apache-zookeeper-3.8.1-bin.tar.gz

2.3.2、配置zookeeper

文件更名

[root@hadoop100 apps]# mv apache-zookeeper-3.8.1-bin zookeeper-3.8.1

配置文件更名

[root@hadoop100 apps]# cd apache-zookeeper-3.8.1-bin/conf
[root@hadoop100 conf]# mv zoo_sample.cfg zoo.cfg 

配置zoo.cfg
没有data,log目录创建,注:端口后面不能有空格

dataDir=/home/hadoop/apps/zookeeper-3.8.1/data
dataLogDir=/home/hadoop/apps/zookeeper-3.8.1/log
server.1=hadoop100:2888:3888
server.2=hadoop101:2888:3888
server.3=hadoop102:2888:3888

创建myid文件,并在文件中输入数字0
进入data目录

[root@hadoop100 data]# vi myid
1

为方便管理,在hadoop100上添加zookeeper环境变量(在前面环境变量基础上)

export JAVA_HOME=/home/hadoop/apps/jdk1.8
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.10.1
export ZOOKEEPER_HOME=/home/hadoop/apps/zookeeper-3.8.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin

环境变量生效

[root@hadoop100 apps]# source /etc/profile

将配置好的安装包复制到hadoop101,hadoop102节点

[root@hadoop100 apps]# scp -r zookeeper-3.8.1/  hadoop101:/home/hadoop/apps/

修改hadoop101,hadoop102节点上的myid
分别为 2和3
将修改好的环境变量文件分发到hadoop101,hadoop102
注意:改集群环境变量为专用,如果安装有其它应用,小心环境变量被覆盖,就只能单独修改

[root@hadoop100 apps]# scp /etc/profile hadoop101:/etc/

source 让hadoop101,hadoop102上环境变量生效

2.3.3、启动ZooKeeper 集群

分别在hadoop100、hadoop101、hadoop102启动ZooKeeper

[root@hadoop100 apps]# zkServer.sh start
5040 SecondaryNameNode
6914 QuorumPeerMain
6949 Jps
4838 NameNode
5196 ResourceManager

2.3.4、验证

看到QuorumPeerMain进程表示启动成功

[root@hadoop100 conf]# zkServer.sh status

分别在三台主机上查看,发现
ZooKeeper 有一个 leader,两个 follower 节点

2.4 开装Flink on Yarn HA

YARN 模式的高可用和独立模式(Standalone)的高可用原理不一样。Standalone 模式中, 同时启动多个 JobManager, 一个为leader,其他为standby,当 leader 挂了, 其他的才会有一个成为 leader。而 YARN 的高可用是只启动一个Jobmanager,当这个 Jobmanager 挂了之后,YARN 会再次启动一个,所以其实是利用的 YARN 的重试次数来实现的高可用。
请注意,在YARN上部署时,Flink管理​​high-availability.cluster-id​​配置参数。Flink默认将其设置为YARN应用程序的ID。在YARN上部署HA集群时,你不应该覆盖这个参数。集群ID是用来区分HA后端(例如Zookeeper)的多个HA集群的。覆盖这个配置参数会导致多个YARN集群相互影响

2.4.1 、hadoop环境修改

我们先对hadoop100 中 yarn-site.xml 设置提交应用程序的最大尝试次数
在/home/hadoop/apps/hadoop-2.10.1/etc/hadoop目录下

[root@hadoop100 hadoop]# vi yarn-site.xml
<property>
	<name>yarn.resourcemanager.am.max-attempts</name>
	<value>4</value>
	<description>
		The maximum number of application master execution attempts.
	</description>
</property>

将修改后的配置文件同步到hadoop101、hadoop102

[root@hadoop100 hadoop]# scp yarn-site.xml hadoop101:/home/hadoop/apps/hadoop-2.10.1/etc/hadoop/

重启hadoop及zookeeper集群

2.4.1、下载Flink安装包

https://www.apache.org/dyn/closer.lua/flink/flink-1.17.0/flink-1.17.0-bin-scala_2.12.tgz

2.3.2、解压Flink安装包

首先在hadoop100上解压一份新的Flink安装包

[root@BIGDATA ~] tar -zxvf  flink-1.17.0-bin-scala_2.12.tgz
[root@BIGDATA ~]cd flink-1.17.0/

2.3.3、配置Flink

在前面基础上增加环境变量

[root@hadoop100 apps]# vi /etc/profile
export JAVA_HOME=/home/hadoop/apps/jdk1.8
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.10.1
export ZOOKEEPER_HOME=/home/hadoop/apps/zookeeper-3.8.1
export HADOOP_CLASSPATH=`hadoop classpath`
export FLINK_HOME=/home/hadoop/apps/flink-1.17.0export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$FLINK_HOME/bin

环境生效

[root@hadoop100 apps]# source /etc/profile

配置flink-conf.yaml

[root@hadoop100 conf]# vi flink-conf.yaml

high-availability.type: zookeeper

# JobManager元数据保留在文件系统storageDir中 指向此状态的指针存储在ZooKeeper中
high-availability.storageDir: hdfs://hadoop100:9000/flink/ha-yarn
#
# # Zookeeper集群 修改自己的集群
high-availability.zookeeper.quorum: hadoop100:2181,hadoop101:2181
#
# # 在zookeeper下的根目录
high-availability.zookeeper.path.root: /flink_yarn
#
# # zookeeper节点下的集群ID 该节点下放置了集群所需的所有协调数据 多个flink集群连接同一套zookeeper集群需要配置各自不同的集群ID,官方建议这个配置最好去掉,因为在 Yarn(以及Mesos)模式下,cluster-id 如果不配置的话,会配置成 Yarn 上的 Application ID ,从而可以保证唯一性。 (不配,如果配的话,启动两个及以上job会报错)
#high-availability.cluster-id: /default_yarn
#
# # 单个flink job重启次数 必须小于等于yarn-site.xml中Application Master配置的尝试次数
yarn.application-attempts: 4
#
#如果 ZooKeeper 在 Kerberos 的安全模式下运行
#
## default is "zookeeper". If the ZooKeeper quorum is configured
## with a different service name then it can be supplied here.
#
#zookeeper.sasl.service-name: zookeeper
#
## default is "Client". The value needs to match one of the values
## configured in "security.kerberos.login.contexts".
#zookeeper.sasl.login-context-name: Client

在前面环境变量基础上添加

export HADOOP_CLASSPATH=`hadoop classpath`
[root@hadoop100 ~]# vi /etc/profile
export HADOOP_CLASSPATH=`hadoop classpath`
export JAVA_HOME=/home/hadoop/apps/jdk1.8
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.10.1
export ZOOKEEPER_HOME=/home/hadoop/apps/zookeeper-3.8.1
export HADOOP_CLASSPATH=`hadoop classpath`
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin

2.3.4、启动Flink 集群

在hadoop100上启动Flink on yarn HA集群
在/home/hadoop/apps/flink-1.17.0目录下

[root@hadoop100 flink-1.17.0]# bin/yarn-session.sh -n 2

2.3.5、验证

https://blog.51cto.com/u_12902538/5394081
https://blog.csdn.net/wuxintdrh/article/details/106885847

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/552018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【2023 · CANN训练营第一季】初识新一代开发者套件 Atlas 200I DK A2---章节小测微认证考试

微认证考试 1、以下不属于模型适配工具内置的模型的是&#xff1f; A. 目标检测模型 B. 图像分类模型 C. 语义分割模型 D. 关键点检测模型 C 2、模型适配工具安装前需要先安装&#xff1f; A. mobaXterm B. python3.9 C. Vscode D. Anaconda D 3、在哪个目录下可查看端…

docker 部署 -v指令遇到docker: invalid reference format.

检查了半天才发现&#xff0c;换行符后面不能有空格&#xff01;有空格就报错&#xff01;

vite创建vue3项目

vite创建vue3项目 方式一&#xff08;推荐&#xff09; 脚手架快速创建&#xff0c;勾选依赖的方式 这种方式创建的项目最快捷&#xff0c;因为基本依赖都装好了 npm init vuelatest方式二 使用官方模板创建vue3项目 这种方式会基于模板创建项目&#xff0c;对于官方模板vu…

Rollup 基本概念及使用

Rollup是一款基于ESModule模块规范实现的JavaScript打包工具&#xff0c;在前端社区中赫赫有名&#xff0c;同时也在Vite的架构体系中发挥着重要作用。不仅是Vite生产环境下的打包工具&#xff0c;其插件机制也被Vite所兼容&#xff0c;可以说是Vite的构建基石。 接下来&#…

cesium entity与时间轴关联(添加运动轨迹)

1、先添加一个entity实体 用model加载一个飞机实体 let entity viewer.entities.add({position: Cesium.Cartesian3.fromDegrees(120, 21),model: {uri: "/static/Cesium_Air.glb",minimumPixelSize: 128,maximumScale: 20000,},}) viewer.trackedEntity entity;…

LIN-报文结构

文章目录 协议规范一、字节场二、报文头&#xff08;HEADER FIELDS&#xff09;同步间隔&#xff08;synchronisation break)同步场&#xff08;SYNCH FIELD&#xff09;标识符场&#xff08;IDENTIFIER FIELD&#xff09; 三、数据场&#xff08;DATE FIELDS&#xff09;四、校…

【负载均衡式在线OJ】 数据库

文章目录 41.使用Postman进行综合调试42.了解-前端预备52. 添加oj用户到MySQL53. 使用MySQL_Workbench创建表结构54. 测试录题功能55.重新设计oj_model56.编写oj_model具体代码57.MySQL综合测试58.结项与项目扩展思路 41.使用Postman进行综合调试 完善判题功能 先编译再测试 …

SpingBoot简介—helloworld

目录 一、使用idea创建第一个SpringBoot项目 二、Hello World 三、整体项目结构 一、使用idea创建第一个SpringBoot项目 在进行这一步时&#xff0c;可能会遇到问题&#xff0c;如下图所示&#xff1a; 在这里解决方法有以下四种&#xff1a; &#xff08;1&#xff09;方法1&…

国内AI大模型 VS chatgpt (20)-- H265/H264有何不同,h265有什么优势?

H265/H264有何不同&#xff0c;h265有什么优势? 文心一言&#xff1a; H.264和H.265是两种不同的视频编码标准&#xff0c;它们在压缩质量和带宽需求方面有所不同。 H.264是一种高效的视频压缩标准&#xff0c;它的编码单位是宏块&#xff08;macroblock&#xff09;&#…

XML配置方式整合SSM框架实现用户登录

文章目录 一&#xff0c;创建数据库与表&#xff08;一&#xff09;创建数据库&#xff08;二&#xff09;创建用户表&#xff08;三&#xff09;在用户表里插入记录 二&#xff0c;创建Maven项目三&#xff0c;项目添加相关依赖四&#xff0c;创建日志属性文件五&#xff0c;创…

Aspose.Tasks for Java 23crack

Aspose.Tasks for Java 23crack 新属性允许您控制“分配成本”和“剩余成本”的自动计算。 Aspose.Tasks for Java是一个项目管理API&#xff0c;可帮助您操作Microsoft project文档。开发人员可以定义项目的主要属性和默认属性以及日历信息。他们还可以指定工作日和日历例外情…

【5.21】六、自动化测试—持续集成测试

目录 6.4 持续集成测试 6.4.1 持续集成的概念 6.4.2 持续集成测试框架设计 6.4 持续集成测试 持续集成&#xff08;Continuous Integration&#xff0c;CI&#xff09;是软件开发DevOps&#xff08;DevelopmentOperations&#xff09;中的一个概念&#xff0c;它强调的是软…

【第十一届泰迪杯数据挖掘挑战赛】A 题:新冠疫情防控数据的分析 思路+代码(持续更新)

【第十一届泰迪杯数据挖掘挑战赛】A 题&#xff1a;新冠疫情防控数据的分析 思路代码&#xff08;持续更新&#xff09; 问题背景解决问题代码下载数据分析Task1Task2Task3Task4 问题背景 自 2019 年底至今&#xff0c;全国各地陆续出现不同程度的新冠病毒感染疫情&#xff0c;…

目标检测复盘 --4. Faster RCNN

Fast RCNN的性能得到了很大的提升&#xff0c;但是还是有很大一部分开销在候选框的生成模块&#xff0c;也就是SS算法&#xff0c;Faster RCNN使用一个网络专门干这个事&#xff0c;从而加快整体检测速度&#xff0c;能达到5帧每秒。所以这里的FasterRCNN也就是RPNFastRCNN RPN…

opencv_c++学习(十六)

一、线性滤波 均值滤波&#xff1a; blur(InputArray src, utputArray dst,Size ksize, Point anchor Point(-i,-1), int borderType BoRDER_DEFAULT)src:待均值滤波的图像&#xff0c;图像的数据类型必须是CV_8U、CV_16U、CV_16S、CV_32F和CV_64F这五种数据类型之一。 ds…

详解RGB和XYZ色彩空间转换之上

前言 首先需要指明本文中描述的R,G,B并非通常的sRGB中的三个分量R,G,B&#xff0c;而是波长分别为700nm&#xff0c;546.1nm&#xff0c;435.8nm的单色红光&#xff0c;单色绿光&#xff0c;单色蓝光。sRGB中的RGB中的红色、绿色、蓝色已经不是单色光了。虽然习惯上大家都叫RGB…

Java配置类整合SSM框架实现用户登录

文章目录 一&#xff0c;创建数据库与表&#xff08;一&#xff09;创建数据库&#xff08;二&#xff09;创建用户表&#xff08;三&#xff09;在用户表里插入记录 二&#xff0c;创建Maven项目三&#xff0c;添加相关依赖四&#xff0c;创建日志属性文件五&#xff0c;创建数…

自动化测试与手工测试的区别是什么?

目录 什么是自动化测试? 自动化测试与手工测试的区别 自动化测试的困境 什么是自动化测试? 自动化测试是指利用软件测试工具自动实现全部或部分测试&#xff0c;它是软件测试的一个重要组成 部分&#xff0c;能完成许多手工测试无法实现或难以实现的测试。能够正确、合理地…

DAY 62 mysql的高级语句

表连接查询 MYSQL数据库中的三种连接&#xff1a; inner join(内连接)&#xff1a;只返回两个表中联结字段相等的行&#xff08;有交集的值&#xff09;left join(左连接)&#xff1a;返回包括左表中的所有记录和右表中联结字段相等的记录right join(右连接)&#xff1a;返回…

【P28】JMeter 测试活动(Flow Control Action)

文章目录 一、测试活动&#xff08;Flow Control Action&#xff09;参数说明二、测试计划设计2.1、Pause 2.2、Break Current Loop2.3、Stop 一、测试活动&#xff08;Flow Control Action&#xff09;参数说明 控制取样器流程 选择线程组右键 >>> 添加 >>&g…