当前位置: 首页 > news >正文

【原理与应用】3-flink安装与部署

3.1flink集群快速启动

stanalone模式是指在裸机上运行flink,通过自身的资源调度器来运行,一般这种方式不推荐,flink集群一般与其它集群,像spark,Hadoop等共存,所以在底层需要有一套资源调度管理系统,不然容易造成资源竞争或者资源浪费。

1)先下载flink的安装文件。

wget https://archive.apache.org/dist/flink/flink-1.13.0/flink-1.13.0-bin-scala_2.12.tgz

2)解压并修改配置文件

tar -zxvf flink-1.13.0-bin-scala_2.12.tgz

cd flink-1.13.0-bin-scala_2.12.tgz/conf

vim flink-conf.yaml

修改这个参数为本机主机名:jobmanager.rpc.address: hadoop200

3)分发配置文件

修改/conf/slaves文件

hadoop200

handoop201 //如果有的话分发到其他机器上

分发给其它的机器,xsync flink-1.13.0

3)启动

进入到bin目录

./start-cluster.sh

然后查看启动的进程

root@VM-4-15-ubuntu:~/flink-1.13.0# jps
419956 StandaloneSessionClusterEntrypoint
424243 Jps
420223 TaskManagerRunner

在配置文件conf/slaves中,如果配置了多个机器,那么多个机器上就会有TaskManagerRunner进程。我们可以通过localhost:8081web页面来对flink进行管理。

通过web界面我们可以发现,机器中有一个TaskManager,有一个TaskSlots,先不用管他的意思,只是知道有一个TaskManager和一个Slots。

4)提交任务

先通过nc监听7777端口,然后执行下面的命令

./flink run -c flink.StreamWordCount -p 1 gjxy-1.0-SNAPSHOT.jar --host localhost --port 7777

Job has been submitted with JobID 579a07caf488766e6ef29956e56b5d2d

通过nc输入数字,然后在TaskManager中发现有输出。

关于上面中提到的各种概念,将在下一章中进行说明。

2.2flink部署模式

flink为不同场景下提供了不同的部署模式,主要有一下三种:

  • 会话模式
  • 单作业模式
  • 应用模式

主要区别在于:集群的声明周期以及资源的分配方式;以及应用的main方法到底在哪里执行——客户端还是JobManager。

2.1.1会话模式

会话模式其实最符合常规思维。我们需要先启动一个集群,保持一个会话,在这个会话中通过客户端提交作业,如图 3-10 所示。集群启动时所有资源就都已经确定,所以所有提交的作业会竞争集群中的资源。

2.1.2单作业模式

会话模式因为资源共享会导致很多问题,所以为了更好地隔离资源,我们可以考虑为每个提交的作业启动一个集群,这就是所谓的单作业(Per-Job)模式。

2.1.3应用模式

前面提到的两种模式下,应用代码都是在客户端上执行,然后由客户端提交给 JobManager的。但是这种方式客户端需要占用大量网络带宽,去下载依赖和把二进制数据发送给JobManager;加上很多情况下我们提交作业用的是同一个客户端,就会加重客户端所在节点的资源消耗。 所以解决办法就是,我们不要客户端了,直接把应用提交到 JobManger 上运行。而这也就代表着,我们需要为每一个提交的应用单独启动一个 JobManager,也就是创建一个集群。这个 JobManager 只为执行这一个应用而存在,执行结束之后 JobManager 也就关闭了,这就是所谓的应用模式。

2.3 Standalone模式(不常用)

独立模式(Standalone)是部署 Flink 最基本也是最简单的方式:所需要的所有 Flink 组件,都只是操作系统上运行的一个 JVM 进程。 独立模式是独立运行的,不依赖任何外部的资源管理平台;当然独立也是有代价的:如果资源不足,或者出现故障,没有自动扩展或重分配资源的保证,必须手动处理。所以独立模式一般只用在开发测试或作业非常少的场景下。另外,我们也可以将独立模式的集群放在容器中运行。 Flink 提供了独立模式的容器化部署方式,可以在 Docker 或者 Kubernetes 上进行部署。

2.3.1会话模式部署

可以发现,独立模式的特点是不依赖外部资源管理平台,而会话模式的特点是先启动集群、后提交作业。所以,我们在第 2.1 节用的就是独立模式(Standalone)的会话模式部署。

2.3.2单作业模式部署

在 3.2.2 节中我们提到, Flink 本身无法直接以单作业方式启动集群,一般需要借助一些资源管理平台。所以 Flink 的独立(Standalone)集群并不支持单作业模式部署。

2.3.3应用模式部署

应用模式下不会提前创建集群,所以不能调用 start-cluster.sh 脚本。我们可以使用同样在bin 目录下的 standalone-job.sh 来创建一个 JobManager。

2.3.4高可用

2.4Yarn模式

独立(Standalone)模式由 Flink 自身提供资源,无需其他框架,这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。但我们知道, Flink 是大数据计算框架,不是资源调度框架,这并不是它的强项;所以还是应该让专业的框架做专业的事,和其他资源调度框架集成更靠谱。而在目前大数据生态中,国内应用最为广泛的资源管理平台就是 YARN 了。所以接下来我们就将学习,在强大的 YARN 平台上 Flink 是如何集成部署的。

整体来说, YARN 上部署的过程是:客户端把 Flink 应用提交给 Yarn 的 ResourceManager,Yarn 的 ResourceManager 会向 Yarn 的 NodeManager 申请容器。在这些容器上, Flink 会部署JobManager 和 TaskManager 的实例,从而启动集群。 Flink 会根据运行在 JobManger 上的作业所需要的 Slot 数量动态分配 TaskManager 资源。

以Yarn模式部署Flink时,要求Flink是有Hadoop支持的版本,Hadoop环境需要保证版本在2.2以上,并且集群中安装有HDFS服务。

Flink提供了两种在Yarn上运行的模式,分别为Session-Cluster和Per-Job-Cluster模式。

2.4.1环境准备

在Flink1.8.0之前的版本,需要hadoop支持版本的flink,例如:flink-1.7.2-bin-hadoop28-scala_2.12.tgz ;Flink1.8.0之后,需要手动下载jar包上传至flink的lib目录下,例如:flink-shaded-hadoop-2-uber-2.4.1-10.0.jar;Flink1.11.0之后,可以直接通过配置环境变量完成与YARN集群的对接;

2.4.2 会话模式

Session-Cluster模式需要先启动集群,然后再提交作业,接着会向yarn申请一块空间后,资源保持永远不变。所有作业共享Dispacher和ResourceManager。

在yarn中初始化一个Flink集群,开辟指定的资源,以后提交任务都向这里提交。这个Flink集群会常驻在yarn集群中,除非手工停止。

2.4.3单作业模式

一个Job会对应一个集群,每提交一个作业会根据自身的情况,都会单独想yarn申请资源,直到作者执行完成,一个作作业的失败与否并不会影响下一个作业的正常提交和运行。独享Dispacher和ResourceManager,按需接受资源申请。

每次提交都会创建一个新的Flink集群,任务之间互相独立,互不影响,方便管理。任务执行完成之后创建的集群也会消失。

2.4.4应用模式

2.4.5高可用

YARN 模式的高可用和独立模式(Standalone)的高可用原理不一样。
Standalone 模式中, 同时启动多个 JobManager, 一个为“领导者”(leader),其他为“后备”(standby) , 当 leader 挂了, 其他的才会有一个成为 leader。
而 YARN 的高可用是只启动一个 Jobmanager, 当这个 Jobmanager 挂了之后, YARN 会再次启动一个, 所以其实是利用的 YARN 的重试次数来实现的高可用。

Session Cluster

1)启动Hadoop集群

2)启动yarn-session

./yarn-session.sh -n 2 -s 2 -jm 1024 -nm test -d

其中:

​ -n(–container):TaskManager的数量

​ -s(–slots):每个TaskManager的slot数量,默认一个slot一个core,默认每个TaskManager的slot的个数为1,有时可以多一些TaskManager,做冗余。

​ -jm:JobManager的内存(单位MB)

​ -tm:每个TaskManager的内存(单位MB)

​ -nm:yarn上的appName(现在的yarn上的ui的名字)

​ -d:后台执行

3)执行任务

./flink run -c com.hanxf.wc.StreamWordCount FlinkTutorial-1.0-jar.jar --host localhost --port 7777

4)去yarn查看任务

5)取消yarn-session

yarn application --kill appcalition_34327498324_838473847
Per Job Cluster

1)启动Hadoop集群

2)不启动yarn-session,直接执行job

./flink run -m yarn-cluster -c com.hanxf.wc.StreamWordCount FlinkTutorial-xxx.jar --host localhost -port 7777

Kubernetes部署

容器化部署目前在大公司中是常用的部署方式,在容器中部署有两种常见的方式:一种是通过k8s进行调度,另一种是将yarn部署在容器中,通过yarn进行资源调度。通过k8s进行调度比较复杂,需要了解k8s的相关知识,后面有时间在学习k8s时进行补充。第二种方式就是将任务提交到yarn,只是yarn部署的地方在容器中罢了,所以以这种模式进行部署的时候,可以直接将其当做yarn模式来进行操作。

flink1.14.0已经移除对Mesos的支持。

Per Job Cluster

2.5K8S模式

容器化部署是如今业界流行的一项技术,基于 Docker 镜像运行能够让用户更加方便地对应用进行管理和运维。容器管理工具中最为流行的就是 Kubernetes(k8s),而 Flink 也在最近的版本中支持了 k8s 部署模式。基本原理与 YARN 是类似的,具体配置可以参见官网说明,这里我们就不做过多讲解了。

http://www.dtcms.com/a/406228.html

相关文章:

  • 网站经营性备案难不难良品铺子网络营销策划书
  • 永磁同步电机驱动控制系统设计(论文+仿真)
  • Cherry Studio+Ollama+大模型+向量模型,实现RAG私有知识库。智能体实现EXCEL转化为一个报表图表
  • Ansible Playbook 入门指南:从基础到实战
  • 什么是提示词追问?
  • 【MD编辑器Typora】Typora最新 V1.12.1版:轻量级 Markdown 编辑器详细图文下载安装使用指南 【办公学习神器之MD文本编辑器】
  • 内外外贸购物网站建设seo基础优化包括哪些内容
  • 冰雪守护者:输电线路图像识别覆冰监测系统为电网保驾护航
  • MCU的闪存(FLASH)存储器的接口寄存器
  • 软件毕设代做网站阿里云建设网站的流程
  • 第12篇|[特殊字符] Freqtrade 交易所接入全解:API、WebSocket、限频配置详解
  • k8s etcd 运行错误 failed to find plugin “flannel“ in path [/usr/lib/cni]
  • 【LeetCode - 每日1题】计算三角形最小路径和
  • 信息安全工程师考点-安全体系结构
  • 小说网站制作开源山东网站开发
  • 医院网站建设的目的大学跳蚤市场网站建设
  • Python SQLite模块:轻量级数据库的实战指南
  • 学习HAL库STM32F103C8T6(SPI、门禁密码实验)
  • 2025年DevOps平台演进方向:智能化、平台工程与价值流管理
  • 数据采集(爬虫)
  • 学习Java第二十二天——苍穹外卖Day10-all
  • C语言底层学习(3.指针、函数与数组)(超详细)
  • 基于XTDIC-SPARK三维高速测量系统的电子产品跌落测试研究
  • 前端终极布局方案Grid
  • 微服务与面向服务编程(SOA)入门指南:从架构演进到 Spring Cloud 实践(初学者友好版)
  • 微服务配置中心高可用设计:从踩坑到落地的实战指南(二)
  • 【信号处理】检波算法
  • 【Web前端|第三篇】JavaScript事件
  • 【数据结构】二叉树全面详解
  • 信号处理与系统设计,第二节课笔记