详解 Flink 的常见部署方式

一、常见部署模式分类

1. 按是否依赖外部资源调度

1.1 Standalone 模式

独立模式 (Standalone) 是独立运行的,不依赖任何外部的资源管理平台,只需要运行所有 Flink 组件服务

1.2 Yarn 模式

Yarn 模式是指客户端把 Flink 应用提交给 Yarn 的 ResourceManager, Yarn 的 ResourceManager 会在 Yarn 的 NodeManager 上创建容器。在这些容器上,Flink 会部署 JobManager 和 TaskManager 的实例,从而启动集群。Flink 会根据运行在 JobManger 上的作业所需要的 Slot 数量动态分配 TaskManager 资源

2. 按集群的生命周期和执行位置

2.1 会话模式
  • 会话模式 (Session Mode) 是指先启动一个集群,保持一个会话并且确定所有的资源,然后向集群提交作业,所有提交的作业会竞争集群中的资源,从而会出现资源不足作业执行失败的情况
  • 会话模式比较适合于单个规模小、执行时间短的大量作业
2.2 单作业模式
  • 单作业模式 (Per-Job Mode) 是指为每一个提交的作业启动一个集群,由客户端运行应用程序,然后启动集群,作业被提交给 JobManager,进而分发给 TaskManager 执行。作业作业完成后,集群就会关闭,所有资源也会释放。
  • 单作业模式在生产环境运行更加稳定,所以是实际应用的首选模式
  • 单作业模式一般需要借助一些资源管理框架来启动集群,比如 YARN、Kubernetes
2.3 应用模式
  • 应用模式 (Application Mode) 是指为每一个提交的应用单独启动一个 JobManager,也就是创建一个集群。这个 JobManager 只为执行这一个应用而存在,执行结束之后 JobManager 也就关闭了。这一模式下没有客户端的存在
  • 应用模式与单作业模式,都是提交作业之后才创建集群;单作业模式是通过客户端来提交作业的,客户端解析出的每一个作业对应一个集群;而应用模式下,是直接由 JobManager 执行应用程序的,并且即使应用包含了多个作业,也只创建一个集群

二、常见部署模式组合

  • Standalone + 会话模式
  • Standalone + 应用模式
  • Yarn + 会话模式
  • Yarn + 单作业模式
  • Yarn + 应用模式

三、独立模式安装

1. 单节点安装

  • flink 下载地址:https://flink.apache.org/downloads/

  • 下载 flink 安装包:flink-1.10.1-bin-scala_2.12.tgz

  • 将安装包上传到虚拟机节点并解压缩

    tar -zxvf flink-1.10.1-bin-scala_2.12.tgz -C /opt/module
    cd /opt/module
    mv flink-1.10.1 flink
    
  • 进入 flink 安装目录,执行启动命令,并查看进程

    cd /opt/module/flink
    bin/start-cluster.shjps
    
  • 访问 http://hadoop102:8081 进入 flink 集群和任务监控管理 Web 页面

  • 关闭 flink:bin/stop-cluster.sh

2. 集群安装

2.1 集群规划
节点服务器hadoop102hadoop103hadoop104
角色JobManagerTaskManagerTaskManager
2.2 步骤
  • 下载 flink 安装包:flink-1.10.1-bin-scala_2.12.tgz

  • 将安装包上传到 hadoop102 并解压缩

    tar -zxvf flink-1.10.1-bin-scala_2.12.tgz -C /opt/module
    cd /opt/module
    mv flink-1.10.1 flink
    
  • 进入 flink 安装目录下的 conf 目录,修改配置文件 flink-conf.yaml

    cd /opt/module/flink/conf
    vim flink-conf.yaml
    
    #修改 jobmanager 内部通信主机名
    jobmanager.rpc.address: hadoop102
    jobmanager.rpc.port: 6123
    
  • 修改 conf 目录下的 slaves 文件,配置 taskmanager 节点

    vim slaves #1.13版本为 workers 文件
    #添加内容
    hadoop103
    hadoop104
    
  • flink-conf.yaml 文件中常用配置项:

    #对 JobManager 进程可使用到的全部内存进行配置,包括 JVM 元空间和其他开销,默认为 1600M,可以根据集群规模进行适当调整
    jobmanager.memory.process.size: 1600#对 TaskManager 进程可使用到的全部内存进行配置,包括 JVM 元空间和其他开销,默认为 1600M,可以根据集群规模进行适当调整
    taskmanager.memory.process.size: 1600#对每个 TaskManager 能够分配的 TaskSlot 数量进行配置,默认为 1,可根据 TaskManager 所在的机器能够提供给 Flink 的 CPU 数量决定。Slot 就是 TaskManager 中具体运行一个任务所分配的计算资源
    taskmanager.numberOfTaskSlots: 1#Flink 任务执行的默认并行度,优先级低于代码中进行的并行度配置和任务提交时使用参数指定的并行度数量
    parallelism.default: 1
    
  • 分发 flink 安装目录到 hadoop103 和 hadoop104

  • 在 hadoop102 上启动 flink 集群

    cd /opt/module/flink
    bin/start-cluster.shjps
    
  • 访问 http://hadoop102:8081 查看 flink 监控页面

3. 提交任务

3.1 会话模式提交
  • 启动 Flink 集群服务

  • 在 hadoop102 中启动 netcat 网络端口

    nc -lk 7777
    
  • Web 页面提交

    • 将编码好的 Flink maven 工程打成 jar 包
    • 访问 http://hadoop102:8081 进入 flink 监控页面,选择左侧的 Submit New Job 选项菜单
    • 点击 +Add New 按钮,然后选择 jar 包进行上传
    • 点击页面上上传好的 jar 包项,配置填写主程序类全类名、启动参数项、并行度等;点击 submit 提交任务
    • 在页面左侧的 overviewjobs 等菜单选项下查看任务运行情况
    • 一个 job 所占据的 TaskSlots 数等于该 job 中最大的并行度
  • 命令行提交

    #提交任务:bin/flink run -m [jobmanager主机和端口] -c [主程序类全类名] -p [并行度] [jar包的绝对路径] [--param1 value1 --param2 value2 ...]
    cd flink
    bin/flink run -m hadoop102:8081 -c com.app.wc.StreamWordCount2 -p 3 /project/FlinkTutorial/target/FlinkTutorial-1.0-SNAPSHOT.jar --host localhost --port 7777#查看job:-a 可以查看已经取消的job
    bin/flink list [-a]#取消job
    bin/flink cancel [jobId]
    
3.2 应用模式提交
  • 不能使用 start-cluster.sh 命令启动集群

  • 将编码好的 Flink maven 工程打成 jar 包,并将 jar 包上传到 flink 安装目录下的 lib 目录

  • 启动 JobManager

    cd /opt/module/flink
    bin/standalone-job.sh start --job-classname com.app.wc.StreamWordCount2
    
  • 启动 TaskManager

    cd /opt/module/flink
    bin/taskmanager.sh start
    
  • 访问 http://hadoop102:8081 查看 flink 监控页面的作业执行

  • 关闭

    cd /opt/module/flink
    bin/standalone-job.sh stop
    bin/taskmanager.sh stop
    

4. 高可用集群安装

4.1 集群规划
节点服务器hadoop102hadoop103hadoop104
角色JobManagerJobManager / TaskManagerTaskManager
4.2 步骤
  • 在 hadoop102 上进入 flink 目录下的 conf 目录,修改 flink-conf.yaml 文件

    cd /opt/module/flink/conf
    vim flink-conf.yaml
    
    #添加内容
    high-availability: zookeeper
    high-availability.storageDir: hdfs://hadoop102:9820/flink/standalone/ha
    high-availability.zookeeper.quorum: hadoop102:2181,hadoop103:2181,hadoop104:2181
    high-availability.zookeeper.path.root: /flink-standalone
    high-availability.cluster-id: /cluster_atguigu
    
  • 修改 masters 文件

    vim masters
    #添加
    hadoop102:8081
    hadoop103:8081
    
  • 分发配置到其他节点

  • 启动

    #保证hadoop环境变量配置生效
    #启动 hadoop 集群和 Zookeeper 集群
    #启动 flink 集群
    cd /opt/module/flink
    bin/start-cluster.sh
    
  • 访问:http://hadoop102:8081http://hadoop103:8081

四、Yarn 模式安装

1. 安装步骤

  • 下载安装包:

    • flink 1.8 版本之前可以直接下载基于 hadoop 版本编译的安装包
    • flink 1.8 及之后的版本除了下载基本的安装包之外,还需要下载 Hadoop 相关版本的组件,如 flink-shaded-hadoop-2-uber-2.7.5-10.0.jar,并将该组件上传至 Flink 的 lib 目录下
    • flink 1.11 版本之后,不再提供 flink-shaded-hadoop-* 的 jar 包,而是通过配置环境变量完成与 Yarn 集群的对接
  • 将安装包上传到虚拟机并解压缩

    tar -zxvf flink-1.10.1-bin-scala_2.12.tgz -C /opt/module
    cd /opt/module
    mv flink-1.10.1 flink
    
  • 进入 conf 目录,修改 flink-conf.yaml 文件

    cd /opt/module/flink/conf
    vim flink-conf.yaml
    
    #修改
    jobmanager.memory.process.size: 1600m
    taskmanager.memory.process.size: 1728m
    taskmanager.numberOfTaskSlots: 8
    parallelism.default: 1
    
  • 确保正确安装 Hadoop 集群和配置 Hadoop 环境变量

    sudo vim /etc/profile.d/my_env.shexport HADOOP_HOME=/opt/module/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
    export HADOOP_CLASSPATH=`hadoop classpath`
    

2. 提交任务

2.1 会话模式提交
  • 启动 Hadoop 集群

  • 执行脚本命令向 Yarn 集群申请资源,开启一个 Yarn 会话,启动 Flink 集群

    cd /opt/module/flink
    bin/yarn-session.sh -nm test#-n 参数:指定 TaskManager 数量
    #-s 参数:指定 slot 数量
    #-d:分离模式,如果你不想让 Flink YARN 客户端一直前台运行,可以使用这个参数,即使关掉当前对话窗口,YARN session 也可以后台运行。
    #-jm(--jobManagerMemory):配置 JobManager 所需内存,默认单位 MB。
    #-nm(--name):配置在 YARN UI 界面上显示的任务名。
    #-qu(--queue):指定 YARN 队列名。
    #-tm(--taskManager):配置每个 TaskManager 所使用内存
    
  • 提交作业

    • Web UI 提交,同独立模式

    • 命令行提交:

      #1.将打包好的任务运行 JAR 包上传至集群
      #2.执行命令
      cd /opt/module/flink
      bin/flink run -c com.app.wc.StreamWordCount2 FlinkTutorial-1.0-SNAPSHOT.jar
      
  • 访问 yarn Web UI 界面或 flink Web UI 界面查看作业执行情况

2.2 单作业模式提交
  • 启动 Hadoop 集群

  • 直接向 Yarn 提交一个单独的作业,从而启动一个 Flink 集群

    cd /opt/module/flink
    #命令一:
    bin/flink run -d -t yarn-per-job -c com.app.wc.StreamWordCount2 FlinkTutorial-1.0-SNAPSHOT.jar#命令二:
    bin/flink run -m yarn-cluster -c com.app.wc.StreamWordCount2 FlinkTutorial-1.0-SNAPSHOT.jar
    
  • 访问 yarn Web UI 界面或 flink Web UI 界面查看作业执行情况

  • 取消作业:

    cd /opt/module/flink
    bin/flink list -t yarn-per-job -Dyarn.application.id=application_XXXX_YY
    bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_XXXX_YY <jobId>
    
2.3 应用模式提交
  • 启动 Hadoop 集群

  • 执行命令提交作业

    #上传 jar 包到集群
    cd /opt/module/flink
    bin/flink run-application -t yarn-application -c com.app.wc.StreamWordCount2 FlinkTutorial-1.0-SNAPSHOT.jar#上传 jar 包到 hdfs
    bin/flink run-application -t yarn-application 
    -Dyarn.provided.lib.dirs="hdfs://myhdfs/my-remote-flink-dist-dir"
    hdfs://myhdfs/jars/my-application.jar
    
  • 查看或取消作业

    /opt/module/flink
    bin/flink list -t yarn-application -Dyarn.application.id=application_XXXX_YY
    bin/flink cancel -t yarn-application -Dyarn.application.id=application_XXXX_YY <jobId>
    

3. 高可用配置

YARN 的高可用是只启动一个 Jobmanager, 当这个 Jobmanager 挂了之后, YARN 会再次启动一个, 本质是利用的 YARN 的重试次数来实现的高可用

  • 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>
    
  • 分发配置到其他节点

  • flink-conf.yaml 中配置

    yarn.application-attempts: 3  #要小于 yarn 的重试次数
    high-availability: zookeeper
    high-availability.storageDir: hdfs://hadoop102:9820/flink/yarn/ha
    high-availability.zookeeper.quorum: hadoop102:2181,hadoop103:2181,hadoop104:2181
    high-availability.zookeeper.path.root: /flink-yarn
    
  • 启动 yarn-session,杀死 JobManager, 查看复活情况

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

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

相关文章

Ansys Mechanical|使用Trace Mapping建立PCB板的有限元模型

Trace Mapping需要使用ECAD的方法 传统方法 vs ECAD方法 传统方法既繁琐又费时。以下是一些数据&#xff1a; 导出电路板布局的step文件大约需要30分钟。 导入Ansys SpaceClaim中大约需要10分钟。 进行布尔运算和共享拓扑操作大约需要24小时甚至更久。 而ECAD方法更加快速且…

剧本新纪元:探索短剧系统的魔力

在现代社会&#xff0c;随着科技的迅猛进步和生活节奏的不断加快&#xff0c;传统的长篇电视剧和电影已不能完全满足所有人的需求。短剧&#xff0c;由于其简短、快速、直接的特性&#xff0c;正在逐步成为一种文化新趋势。短剧系统正是这一趋势的典型代表&#xff0c;它以独特…

自己用pip下载好模块啦,但是在pycharm里面不显示?

问题&#xff1a; 今天在cmd里面用pip命令安装第三方模块&#xff0c;最后用pip list 命令发现已经成功安装&#xff0c;但是在pycharm里面用该模块的时候&#xff0c;还是爆红&#xff0c;显示没有该库 。 解决方法&#xff1a; 第一种&#xff08;项目刚创建&#xff09;&am…

项目问题24/5/29需求:用一路IO口捕获外界方波PWM频率,将捕获值实时传入,使得正弦波频率和外界方波频率一致

问题 STM32F103控制下,定时器3的捕获PWM模式下的中断里的全局变量psc 20,中断触发后&#xff0c;主函数while循环里TIM1_PWM_Init(1451,psc)函数初始化正弦波&#xff0c;用了中断传过来的全局变量psc后&#xff0c;为什么PWM频率不是PWM 72000000.0 / ((145 * (psc11))24.8…

常用的bit位操作

#ifndef BIT_IS_1 #define BIT_IS_1(value,bitpos) (((value)&(1<<(bitpos)))>>(bitpos)) //判断某1位是1还是0 #endif #ifndef GET_BIT #define GET_BIT(value,bitpos) ((value)&(1<<(bitpos))) //读取指定位置bit位的值 #endif #ifndef REV_BIT…

如何学习软件测试,并成功找到工作

在IT行业日益繁荣的今天&#xff0c;软件测试作为确保软件质量的关键环节&#xff0c;越来越受到企业的重视。对于初入职场的小白来说&#xff0c;掌握软件测试技能不仅能够帮助他们快速适应工作&#xff0c;还能为未来的职业发展奠定坚实的基础。本文将为职场小白推荐学习软件…

PHP数组排序方法及应用场景分析

在PHP编程中&#xff0c;数组是一种非常常见的数据结构&#xff0c;而对数组进行排序是经常需要处理的任务之一。PHP提供了多种方法来对数组进行排序&#xff0c;包括按值排序、按键排序、自定义排序等。本文将从多个角度对PHP数组排序方法进行详细介绍&#xff0c;并探讨不同排…

NVIDIA DeepStream SDK 说明及链接

NVIDIA DeepStream SDK DeepStream 的多平台支持为您提供了一种更快、更简单的方式来开发视觉AI应用程序和服务。您甚至可以在本地、边缘和云中部署它们&#xff0c;只需单击一个按钮。 开始 在Launchpad上试用 什么是 NVIDIA DeepStream&#xff1f; NVIDIA 的 DeepStream …

公交车载视频监控系统解决方案

公交车载视频监控系统基于iVMS-7200移动视频监控管理平台&#xff0c;通过3G/4G网络接入车载前端&#xff0c;实现实时监控、录像回放、GIS地图定位、轨迹回放、设备状态查询、紧急报警等功能。 车载前端包含车载硬盘录像机(简称车载DVR或MDVR)、车载专用摄像机、车载LCD显示屏…

50.Python-web框架-Django中引入静态的bootstrap样式

目录 Bootstrap 官网 特性 下载 在线样例 Bootstrap 入门 Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 在django中使用bootstrap 新建static\bootstrap5目录&#xff0c;解压后的Bootstrap文件&#xff0c;拷贝项目里就好。 在template文件里引用css文…

SQL-窗口函数合集

目录 1.窗口函数简介2.窗口的定义3.相关题目示例3.1 PERCENT_RANK()2346 以百分比计算排名 3.2 FIRST_VALUE()/LAST_VALUE()/NTH_VALUE()2388 将表中的空值更改为前一个值 1.窗口函数简介 MySQL 开窗函数&#xff08;Window Functions&#xff09;是 MySQL 8.0 版本引入的一个…

k8s metrics-server服务监控pod 的 cpu、内存

项目场景&#xff1a; 需要开启指标服务&#xff0c;依据pod 的 cpu、内存使用率进行自动的扩容或缩容 pod 的数量 解决方案&#xff1a; 下载 metrics-server 组件配置文件&#xff1a; wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/…

植物大战僵尸杂交版 MacBook 苹果电脑下载安装详细教程

最近老是看到别人玩植物大战僵尸杂交版&#xff0c;可是找了一圈发现都是PC版本的&#xff0c;原来游戏作者只做了一个PC版本&#xff0c;还好最终没有放弃终于在 Mac 上安装上了植物大战僵尸杂交版 版本是 2.0.88 真的蛮好玩的就是关卡有亿点点难&#xff0c;我最爱玩无尽模式…

一站式解决ComfyUI安装、调试和界面操作,附安装包 C001

点击打开以上网页&#xff0c;页面往下拉&#xff0c;找到“Direct link to download”&#xff0c;点击即可下载官方安装包。 下载完成后&#xff0c;将安装包移动到你想要安装的地方&#xff0c;解压&#xff08;推荐使用7-Zip&#xff09;&#xff0c;然后点击“run_nvidia_…

C++中的观察者模式

目录 观察者模式&#xff08;Observer Pattern&#xff09; 实际应用 股票价格监控系统 发布-订阅系统 总结 观察者模式&#xff08;Observer Pattern&#xff09; 观察者模式是一种行为型设计模式&#xff0c;它定义了对象间的一对多依赖关系。当一个对象的状态发生改变…

无需插件脚本,IDEA配置多服务一键启动

分享本教程的初衷是本人在本地调试时业务场景中需要调用多个服务&#xff0c;并且每次为了找到需要启动的服务花了很多不必要的时间&#xff0c;我相信很多同为开发的小伙伴也有和我一样的困扰。但是学会这招后多个服务需要同时启动时仅需一键即可搞定。接下来让我们一步步设置…

C++方法封装成dll及C#调用示例

1,编译生成dll时可能出现错误&#xff0c;解决办法&#xff1a;pch.h文件头部&#xff0c;添加声明 #define _CRT_SECURE_NO_WARNINGS 2, c头文件声明 extern "C" __declspec(dllexport) char* getvalue(const char * param1, const char * param2); 3, c方法实现…

【PasteSpider】的集群组件【PasteCluster】(让你的项目快速支持集群模式)的思路及实现(含源码)

PasteSpider是什么? 一款使用.net编写的开源的Linux容器部署助手&#xff0c;支持一键发布&#xff0c;平滑升级&#xff0c;自动伸缩&#xff0c;Key-Value配置&#xff0c;项目网关&#xff0c;环境隔离&#xff0c;运行报表&#xff0c;差量升级&#xff0c;私有仓库&…

vue在hash路由模式下实现点击定位滑动

背景&#xff1a;一般是使用锚点来实现dom的定位&#xff0c;但在hash模式下&#xff0c;这种方式不行&#xff0c;会刷新路由&#xff0c;没法实现dom定位的效果。 其实scrollIntoView就可以解决这个问题&#xff0c;scrollIntoView可以将调用它的元素滚动到浏览器窗口的可见…

物联网网关和飞鸟物联平台如何助力其实现智能化升级,提升生产效率-天拓四方

随着工业4.0时代的到来&#xff0c;物联网技术逐渐成为推动工业转型升级的关键力量。物联网网关作为连接工业设备与网络的核心枢纽&#xff0c;在工业自动化、数据收集与分析等方面发挥着越来越重要的作用。本案例将围绕一家知名制造企业&#xff0c;展示物联网网关和飞鸟物联平…