基于Yarn搭建Flink

news2024/11/17 21:42:00

基于Yarn搭建Flink

1. 概述

1.1 Yarn 简介

Apache Hadoop YARN是一个资源提供程序,受到许多数据处理框架的欢迎。Flink服务被提交给 YARN 的 ResourceManager,后者再由 YARN NodeManager 管理的机器上生成容器。Flink 将其 JobManager 和 TaskManager 实例部署到此类容器中。

在这里插入图片描述

Flink 可以根据在 JobManager 上运行的作业所需的处理槽数量动态分配和取消分配任务管理器资源。

1.2 Flink的重要角色

  • JobManager:类似spark中master,负责资源申请,任务分发,任务调度执行,checkpoint的协调执行;可以搭建HA,双master。

  • TaskManager:类似spark中的worker,负责任务的执行,基于dataflow(spark中DAG)划分出的task;与jobmanager保持心跳,汇报任务状态。

在这里插入图片描述

2. Yarn环境准备

本环境基于Hadoop-3.1.4搭建,可以参考《Hadoop3.1.4分布式搭建》

  • 通过运行 yarn top 来确保您的 YARN 集群已准备好接受 Flink 应用程序。它应该不显示任何错误消息。

    yarn top
    

在这里插入图片描述

  • 从下载页面下载最近的 Flink 发行版并解压缩。

    wget https://archive.apache.org/dist/flink/flink-1.15.4/flink-1.15.4-bin-scala_2.12.tgz
    
  • 重要事项 请确保设置了HADOOP_CLASSPATH环境变量(可以通过运行 echo $HADOOP_CLASSPATH 进行检查)。如果没有,请配置使用。

    for i in {133..135} 151 157;
    do
    	echo -e "\n********************************** Config ubuntu@10.10.10.$i **********************************\n"
    	scp ~/Downloads/flink-1.15.4-bin-scala_2.12.tgz ubuntu@10.10.10.$i:~/;
    	ssh ubuntu@10.10.10.$i 'sudo mkdir -p /opt/software/; \
    	#sudo rm -f /etc/profile.d/Z99-wntime-env-config.sh; \
    	sudo touch /etc/profile.d/Z99-wntime-env-config.sh; \
    	sudo tar -zxf ~/flink-1.15.4-bin-scala_2.12.tgz -C /opt/software/;';
    	# config env
    	rm -rf /tmp/"10.10.10.$i"/;
    	mkdir -p /tmp/"10.10.10.$i"/;
    	scp ubuntu@10.10.10.$i:/etc/profile.d/Z99-wntime-env-config.sh /tmp/"10.10.10.$i"/Z99-wntime-env-config.sh;
    	sudo cat>>/tmp/"10.10.10.$i"/Z99-wntime-env-config.sh<<EOF
    # HADOOP_CLASSPATH
    export HADOOP_CLASSPATH=\`hadoop classpath\`
    export FLINK_HOME=/opt/software/flink-1.15.4
    export PATH=\$PATH:\$FLINK_HOME/bin  
    
    EOF
    	cat /tmp/10.10.10.$i/Z99-wntime-env-config.sh;
    	scp /tmp/10.10.10.$i/Z99-wntime-env-config.sh ubuntu@10.10.10.$i:~/Z99-wntime-env-config.sh;
    	ssh ubuntu@10.10.10.$i 'sudo mv ~/Z99-wntime-env-config.sh /etc/profile.d/Z99-wntime-env-config.sh; \
    	sudo chmod +x /etc/profile.d/Z99-wntime-env-config.sh; \
    	source /etc/profile; \
    	echo $HADOOP_CLASSPATH;'	
    done;
    
    

    配置conf及权限

    for i in {133..135} 151 157;
    do
    	echo -e "\n********************************** Config ubuntu@10.10.10.$i **********************************\n"
    	ssh ubuntu@10.10.10.$i 'sudo chown -R ubuntu:ubuntu /opt/software/; \
    	source /etc/profile; \
    	flink -v;';
    done;
    
    
    for i in {133..135} 151 157;
    do
    	echo -e "\n********************************** Config ubuntu@10.10.10.$i **********************************\n"
    	# 指定jobmanager,yarn模式会被覆盖不起作用;
    	ssh ubuntu@10.10.10.$i "sed -i 's/jobmanager.rpc.address: localhost/jobmanager.rpc.address: k8s-m134/g' /opt/software/flink-1.15.4/conf/flink-conf.yaml";
    	ssh ubuntu@10.10.10.$i "sed -i 's/host: localhost/host: 0.0.0.0/g' /opt/software/flink-1.15.4/conf/flink-conf.yaml";
    	ssh ubuntu@10.10.10.$i "sed -i 's/address: localhost/address: 0.0.0.0/g' /opt/software/flink-1.15.4/conf/flink-conf.yaml";
    	# yarn模式仍旧起作用;
    	ssh ubuntu@10.10.10.$i "sed -i 's/#web.submit.enable: false/web.submit.enable: true/g' /opt/software/flink-1.15.4/conf/flink-conf.yaml";
    	ssh ubuntu@10.10.10.$i "sed -i 's/#web.cancel.enable: false/web.cancel.enable: true/g' /opt/software/flink-1.15.4/conf/flink-conf.yaml";
    	ssh ubuntu@10.10.10.$i "sed -i 's/# io.tmp.dirs: \/tmp/io.tmp.dirs: \/opt\/software\/flink-1.15.4\/data/g' /opt/software/flink-1.15.4/conf/flink-conf.yaml";
        ssh ubuntu@10.10.10.$i "sed -i 's/#rest.port: 8081/#rest.port: 8081\nrest.flamegraph.enabled: true/g' /opt/software/flink-1.15.4/conf/flink-conf.yaml";
        # classloader.check-leaked-classloader
        ssh ubuntu@10.10.10.$i "sed -i 's/# classloader.resolve-order: child-first/# classloader.resolve-order: child-first\nclassloader.check-leaked-classloader: false/g' /opt/software/flink-1.15.4/conf/flink-conf.yaml";
    done;
    
    

3. FLINK 在 YARN 上支持的部署模式

对于生产使用,官方建议在 Application Mode下部署Flink应用程序,因为它可以在应用程序之间提供更好的隔离。

3.1 Session Mode

此部署模式,共享jobmanager和taskmanager,所有的job都在一个runtime中运行。

在这里插入图片描述

  • 优点:
    • 启动集群只有jobmanager,提交job才去yarn申请资源启动taskmanager,任务完成自动释放taskmanager,资源伸缩性好。
    • 资源利用率高。
  • 缺点:
    • 资源隔离性差

开启flink yarn-session集群

使用bin/yarn-session.sh --help 查看可用参数

在这里插入图片描述

会话模式有两种操作模式:

  • attached mode(默认):yarn-session.sh 客户端将 Flink 集群提交到 YARN,但客户端继续运行,跟踪集群的状态。如果群集失败,客户端将显示错误。如果客户端被终止,它也会向群集发出关闭信号。

  • detached mode(-d 或 --detached):yarn-session.sh 客户端将 Flink 集群提交到 YARN,然后客户端返回。需要再次调用客户端或 YARN 工具来停止 Flink 集群。

# 启动 
./bin/yarn-session.sh -d
# 会话模式将在 /tmp/中创建一个隐藏的 YARN 属性文件/tmp/.yarn-properties-<username>,提交作业时,命令行界面将选取该文件以进行群集发现。

# 输出
2023-05-30 13:33:24,304 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - Found Web Inter
JobManager Web Interface: http://k8s-m135:38027
2023-05-30 13:33:24,541 INFO  org.apache.flink.yarn.cli.FlinkYarnSessionCli                [] - The Flink YARN
$ echo "stop" | ./bin/yarn-session.sh -id application_1685349449822_0003
If this should not be possible, then you can also kill Flink via YARN's web interface or via:
$ yarn application -kill application_1685349449822_0003
Note that killing Flink might not clean up all job artifacts and temporary files.

此时 Flink JobManager 运行在 k8s-m135节点,WebUI访问地址 http://k8s-m135:38027

在这里插入图片描述

也可以通过Yarn WebUI访问

在这里插入图片描述
在这里插入图片描述

提交任务

  • 方式一,指定flink集群,application_1685349449822_0006是flink集群yarn app-id
./bin/flink run -t yarn-session -c org.apache.flink.streaming.examples.windowing.TopSpeedWindowing -Dyarn.application.id=application_1685349449822_0007 ./examples/streaming/TopSpeedWindowing.jar

注意:

若未指定 -c fullclassname时,报以下错误:

在这里插入图片描述

若未指定 -Dyarn.application.id时,可能报与上面同样错误,或No ExecutorFactory found to execute the application

测试最终需要同时指定 -c 及 -Dyarn.application.id,任务才能正常启动

在这里插入图片描述

/tmp/.yarn-properties-ubuntu已发现,但不知什么原因未生效。

  • 方式二,在flink web界面上传jar包提交

停止flink yarn-session集群

  • 进入客户端交互界面
./bin/yarn-session.sh -id application_1685349449822_0003
优雅地停止任务
echo "stop" | ./bin/yarn-session.sh -id application_1685349449822_0003
  • 强制杀掉任务
yarn application -kill application_1685349449822_0003

NOTE: 启动集群只有jobmanager,提交job才去yarn申请资源启动taskmanager,任务完成自动释放taskmanager

3.2 Per-Job Mode (deprecated)

独享jobmanager和taskmanager,为每一个job独胆启动一个runtime

在这里插入图片描述

  • 优点:
    • 资源充分隔离
  • 劣势:
    • 资源相对比较浪费

Per job Cluster模式将在YARN上启动Flink集群,然后在本地运行提供的应用程序jar,最后将JobGraph提交给YARN上的JobManager。如果传递–separated参数,那么一旦提交被接受,客户端就会停止。

一旦作业停止,YARN集群将停止。

./bin/flink run -t yarn-per-job -d ./examples/streaming/TopSpeedWindowing.jar

若提示以下错误,需要在conf/flink-conf.yml配置classloader.check-leaked-classloader: false

在这里插入图片描述

配置后无报错

在这里插入图片描述

一旦部署了“Per-Job Cluster”,就可以与它交互以执行、取消或获取保存点等操作。

# List running job on the cluster
./bin/flink list -t yarn-per-job -Dyarn.application.id=application_XXXX_YY
# Cancel running job
./bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_XXXX_YY <jobId>

3.3 Application Mode

application的main()运行在jobmanager上,而不是在客户端。每一个application对应一个runtime,application中可以含有多个job。

在这里插入图片描述

  • 优点:
    • job graph在flink集群内部生成,可以减轻客户端压力
    • application实现了更合理的资源隔离策略
  • 缺点:
    • 新功能,尚未经过生产大规模验证

开启flink yarn-application集群

./bin/flink run-application -t yarn-application ./examples/streaming/TopSpeedWindowing.jar

# List running job on the cluster
./bin/flink list -t yarn-application -Dyarn.application.id=application_XXXX_YY

停止flink yarn-application集群

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

注意:

当同时运行多个任务时,会出现有的任务一直处于ACCEPTED

在这里插入图片描述

解决这个问题,只需要更改Hadoop的配置文件:…/etc/hadoop/capacity-scheduler.xml

选项:yarn.scheduler.capacity.maximum-am-resource-percent从0.1改成更大,最大为1;

意思是集群中可用于运行应用程序主机的最大资源百分比 - 控制并发活动应用程序的数量。每个队列的限制与其队列容量和用户限制成正比。官方文档默认是每个队列最大使用10%的资源,即0.1

yarn.scheduler.capacity.maximum-am-resource-percent

for i in {133..135} 151 157;
do
	echo -e "\n********************************** Config ubuntu@10.10.10.$i **********************************\n"
	ssh ubuntu@10.10.10.$i 'cat /opt/software/hadoop-3.1.4/etc/hadoop/capacity-scheduler.xml|grep "percent";';
	# 这个配置文件中只有这个是percent,所以直接修改了
	ssh ubuntu@10.10.10.$i "sed -i 's/<value>0.1<\/value>/<value>0.5<\/value>/' /opt/software/hadoop-3.1.4/etc/hadoop/capacity-scheduler.xml;";
done;

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

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

相关文章

Apache DolphinScheduler——开源大数据调度器神器(国人之光)

本文已参与「新人创作礼」活动&#xff0c;一起开启掘金创作之路。 1. 简 介 Apache DolphinScheduler(海豚调度),国人之光&#xff0c;是许多国人雷锋开源在Apache的顶级项目&#xff0c;主要功能就是负责任务的调度处理。 1.1 概 念 Apache DolphinScheduler是一个分布式去…

CentOS6 通过shell脚本的离线安装MySQL5.7.40(rpm)

说明: 在项目的实施过程中,多次遇到安装MySQL的工作,尤其在内网环境下,无法使用在线yum源,只能使用源码或采用rpm离线安装的方式进行安装,在安装过程中会遇到各种各样的问题,小编特地就rpm离线安装方式进行了整理及验证,并通过shell脚本的方式实现一键安装。使用此脚本…

软件性能测试有哪些方法?性能测试报告怎么编写?

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。在软件的质量保证中起着重要的作用&#xff0c;它包括的测试方法丰富多样。 一、常用的软件性能测试方法包括以下几种&#xff1a; 1、负载测试&#xff1a;模拟真实用户场…

连续十年亏损,哔哩哔哩估值遭质疑

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 财务业绩 2023年3月2日&#xff0c;哔哩哔哩&#xff08;BILI&#xff09;公布了其2022年第四季度和2022财年全年的财务业绩&#xff0c;财报显示哔哩哔哩的用户数量和收入均实现了稳步增长。2022年第四季度的总收入达到了…

【MySQL】单表获取库存数

系列文章 C#底层库–MySQLBuilder脚本构建类&#xff08;select、insert、update、in、带条件的SQL自动生成&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129179216 C#底层库–MySQL数据库操作辅助类&#xff08;推荐阅读&#xff0…

港联证券今日投资前瞻:人工智能再迎催化 关注房地产板块超跌机会

昨日&#xff0c;A股午后探底回升&#xff0c;沪指尾盘翻红&#xff0c;深成指、创业板指走高。截至收盘&#xff0c;沪指微涨0.09%报3224.21点&#xff0c;深成指涨0.44%报10869.55点&#xff0c;创业板指涨0.67%报2218.6点&#xff0c;科创50指数涨1.56%&#xff1b;两市合计…

高质量椭圆检测库

目录 前言 效果展示 检测库 简介 安装库 用法 测试 论文算法步骤简读 1. lsd 检测 2. lsd group 3. 生成初始 ellipse 4. 聚类 前言 椭圆检测是工业中比较常用的一种检测需求。目前常用的基于传统图像处理的椭圆检测方法是霍夫变换&#xff0c;但是霍变换的检测率…

【基于前后端分离的博客系统】Servlet版本

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一. 项目简介 1. 项目背景 2. 项目用到的技…

玩转ChatGPT:Transformer分类模型

一、写在前面 之前&#xff0c;我们介绍了Sklearn包以及Boost辈的各种分类模型&#xff0c;这些模型都很经典了&#xff0c;实际上也很强大&#xff0c;比如说Xgboost。 然而&#xff0c;近期随着ChatGPT的大火&#xff0c;其底层框架Transformer也逐渐火了&#xff0c;现在大…

分析和解决java.lang.OutOfMemoryError: Java heap space问题

这里写目录标题 问题场景问题分析与解决1.优化项目代码2.提升Java heap size3.JVM参数配置配置参考堆区参数配置说明非堆区参数配置说明 问题场景 最近客户反馈在生产环境导入操作时遇到任务一直执行中&#xff0c;并且入库的数据量一直不改变。通过日志查询&#xff0c;终于定…

UE4蓝图学习篇(九)-- 人物重定向

在平常的游戏制作或者项目练习过程中&#xff0c;我们想使用其他比较好看的模型&#xff0c;但是却想使用小白人的动画&#xff0c;这个时候要怎么去处理呢&#xff1f; 这个时候就需要使用到重定向功能&#xff0c;让两者使用同一套骨骼&#xff0c;把小白人动画重定向到我们…

IMX6ULL裸机篇之I2C相关寄存器与AP3216C传感器

一. I2C实验 I2C时钟选择与传输速率 1. IMX6ULL的 I2C频率标准模式 100kbit/S&#xff0c;快速模式为 400Kbit/S 2. 时钟源选择 perclk_clk_rootipg_clk_root66MHz&#xff08;由之前的时钟实验章节可以知道是 66MHz&#xff09;。 二. I2C 寄存器配置 I2Cx_IFDR寄存器&…

常见的内存泄漏场景

console导致 console导致的内存泄漏 因为打印后的对象需要支持在控制台上查看&#xff0c;所以传递给console.log方法的对象是不能被垃圾回收的。我们需要避免在生产环境用console打印对象。 定时器 在组件初始化的时候设置了setInterval&#xff0c;那么在组件销毁之前记得…

张驰课堂:深入了解六西格玛绿带培训课程大纲的应用价值!

六西格玛绿带培训课程大纲的内容通常包括以下几个方面&#xff1a; 六西格玛介绍&#xff1a;介绍六西格玛的历史、目标和应用领域&#xff0c;以及其在质量管理中的作用。 统计学基础&#xff1a;介绍基本的统计概念和方法&#xff0c;包括描述统计、概率分布、抽样和检验等…

SpringBoot定义优雅全局统一Restful API 响应框架五

闲话不多说&#xff0c;继续优化 全局统一Restful API 响应框架 做到项目通用 接口可扩展。 如果没有看前面几篇文章请先看前面几篇 SpringBoot定义优雅全局统一Restful API 响应框架 SpringBoot定义优雅全局统一Restful API 响应框架二 SpringBoot定义优雅全局统一Restful…

开发微信小程序,常用的开发组件有哪些?

随着微信小程序开发的持续升温&#xff0c;小程序开发也变得越来越流行&#xff0c;因为小程序不仅能帮助企业解决推广的问题&#xff0c;还能为企业带来可观的收益。但是很多企业并不知道如何开发微信小程序&#xff0c;而市面上的开发组件又有很多种&#xff0c;不知道怎么选…

restful相关知识

一. 接口编程简介 1 背景 ​ 随着互联网的发展, 尤其是移动互联为代表的Web3.0时代. 客户端层出不穷, 以APP、微信、PC浏览器为代表, 服务端业务逻辑是基本一致的. ​ 那么有没有一种方式可以做到”一次编写,随时接入”呢? 目前比较流行的方案就是"接口编程" 2 …

DevOps - (3)使用SOPS 和Terraform来加密/解密敏感信息文件

一&#xff1a;背景 每个人都想将自己的敏感数据以加密格式存储在一个安全的地方。例如我们的数据库的账号密码&#xff0c;不能以纯文本的方式来记录。让我们利用Mozilla SOPS以一种安全的方式实现它。SOPS支持将文件加密为二进制文件&#xff0c;除此之外&#xff0c;它还具…

尘埃粒子计数器 审计追踪 权限管理 洁净室等级确认干货分享

尘埃粒子计数器实用干货汇总 随着我国医药行业的不断发展&#xff0c;越来越多的医药企业需要应用洁净技术以达到控制实验室安全卫生的目的。在医药、电子、机械微生物等行业中&#xff0c;需要严格把关空间的洁净度以符合相关的标准和产品的质量。其中包括对各种洁净等级的工作…

Qt 助手简介

在探讨Qt帮助框架之前&#xff0c;我们先了解一下Qt帮助文档&#xff0c;可以让大家更好的理解。 当你使用Qt时&#xff0c;你可能会发现Qt帮助文档是一个非常有用的资源。Qt帮助文档提供了关于Qt框架和其各种组件的详细信息&#xff0c;包括类和函数的文档、示例代码和教程等…