热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

flink的yarn模式部署

1、yarncluster模式部署介绍mr和spark都可以基于yarn模式部署,flink也不例外,生产中很多也基于yarn模式部署。flink的

1、yarn cluster 模式部署介绍

mr和spark都可以基于yarn模式部署,flink也不例外,生产中很多也基于yarn模式部署。

flink的yarn模式部署也分为两种方式,一种是yarn-session,一种是yarn-per-job。大致如下图:

 


2、flink session HA模式

需要先启动集群,然后在提交作业,接着会向yarn申请一块资源空间后,资源永远保持不变。如果资源满了,下一个作业就无法提交,只能等到yarn中的其中一个作业执行完成后,释放了资源,那下一个作业才会正常提交。

适合场景:

当作业很少并且都较小,能快速执行完成时,可以使用。否则一般不会使用该模式。

这种模式,不需要做任何配置,直接将任务提价到yarn集群上面去,我们需要提前启动hdfs以及yarn集群即可。

 

两个进程:

运行yarn-session的主机上会运行FlinkYarnSessionCli和YarnSessionClusterEntrypoint两个进程。

在yarn-session提交的主机上必然运行FlinkYarnSessionCli,这个进场代表本节点可以命令方式提交job,而且可以不用指定-m参数。

YarnSessionClusterEntrypoint进场代表yarn-session集群入口,实际就是jobmanager节点,也是yarn的ApplicationMaster节点。

这两个进程可能会出现在同一节点上,也可能在不同的节点上。

 

1、配置

[root@hadoop01 flink-1.9.1]# vi ./conf/flink-conf.yaml

追加如下内容:
# flink yarn HA settings
high-availability: zookeeper
high-availability.zookeeper.quorum: hadoop01:2181,hadoop02:2181,hadoop03:2181
high-availability.zookeeper.path.root: /flink_yarn
high-availability.cluster-id: /cluster_flink_yarn
high-availability.storageDir: hdfs://hadoop01:9000/flink_yarn/recovery

hadoop02 和 hadoop03分别做如上的配置。

 

2、启动flink session

先确保zookeeper、hdfs、yarn是启动okay。

[root@hadoop01 flink-1.9.1]# yarn-session.sh -n 3 -jm 1024 -tm 1024
...................................
2020-04-14 11:52:59,248 INFO org.apache.flink.shaded.curator.org.apache.curator.framework.state.ConnectionStateManager - State change: CONNECTED
2020-04-14 11:52:59,753 INFO org.apache.flink.runtime.rest.RestClient - Rest client endpoint started.
Flink JobManager is now running on hadoop02:41674 with leader id 04caacdd-23c6-4e79-acd5-6db3b1014be0.
JobManager Web Interface: http://hadoop02:8081 ##代表jobmanager启动到hadoop02

 

报错:

Diagnostics: Container [pid=9528,containerID=container_1586835850522_0001_03_000001] is running beyond virtual memory limits. Current usage: 316.1 MB of 1 GB physical memory used; 2.3 GB of 2.1 GB virtual memory used. Killing container.

解决方法:
在hadoop01、hadoop02、hadoop03中的yarn-site.xml中配置如下:

yarn.nodemanager.vmem-check-enabledfalse

 

3、环境检测

根据启动的信息可知,flink启动到咯hadoop02,则使用jps测试一下:

jps检测进程:

[root@hadoop02 flink-1.9.1]# jps
8992 DataNode
9985 YarnSessionClusterEntrypoint

 

web页面查看:http://hadoop02:8081

 

 

查看yarn的web控制台:http://hadoop01:8088

 

4、提交作业测试:

提交作业和standalone一样正常提交即可。

[root@hadoop02 flink-1.9.1]# flink run /usr/local/flink-1.9.1/examples/batch/WordCount.jar --input /home/words --output /home/out/fl01
Starting execution of program
Program execution finished
Job with JobID c3fd22587744bc54a6d69af6573a3183 has finished.
Job Runtime: 20642 ms

5、HA切换检测

杀死YarnSessionClusterEntrypoint服务,,看看还能不能在集群中找到该服务。

[root@hadoop02 flink-1.9.1]# jps
8992 DataNode
9985 YarnSessionClusterEntrypoint
8901 QuorumPeerMain
9096 SecondaryNameNode
9720 NodeManager
11210 Jps
#杀死进程造成异常退出
[root@hadoop02 flink-1.9.1]# kill -9 9985

当是HA时,,则一个挂掉后,则JM将会失败转移到另外的服务器上。如下是转移到hadoop01上。

[root@hadoop01 flink-1.9.1]# jps
9408 NameNode
12017 YarnSessionClusterEntrypoint

再次测试job:
[root@hadoop02 flink-1.9.1]# flink run /usr/local/flink-1.9.1/examples/batch/WordCount.jar --input /home/words --output /home/out/fl03
Starting execution of program
Program execution finished
Job with JobID 779689f706af7a9cb05e771a80e89128 has finished.
Job Runtime: 11462 ms


yarn session提交的作业,,在yarn的web平台中看不到。可以通过flink --list来查看。

 

6、如何停止运行的程序 通过cancel命令进行停止:

flink cancel -s hdfs:///flink/savepoints /savepoints-* -yid application_1586836326559_0002

或者通过 flink list 获得 jobId

flink list
flink cancel -s hdfs:///flink/savepoints/savepoint-* jobId

其中-s为可选操作

 

7、关闭jobmanager

直接将yarn-session停止掉:

yarn application -kill applicationId

 


3、flink-per-job模式

yarn session需要先启动一个集群,然后在提交作业。
但是Flink-per-job直接提交作业即可,不需要额外的去启动一个flink-session集群。直接提交作业,即可完成Flink作业。

适合场景:

作业多、且每个作业运行时长不定。生产推荐使用该模式运行作业。

1、直接使用flink run运行即可

[root@hadoop01 flink-1.9.1]# flink run -m yarn-cluster /usr/local/flink-1.9.1/examples/batch/WordCount.jar --input /home/words --output /home/out/fl05

 

查看yarn的web平台:


推荐阅读
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 构建高可用性Spark分布式集群:大数据环境下的最佳实践
    在构建高可用性的Spark分布式集群过程中,确保所有节点之间的无密码登录是至关重要的一步。通过在每个节点上生成SSH密钥对(使用 `ssh-keygen -t rsa` 命令并保持默认设置),可以实现这一目标。此外,还需将生成的公钥分发到所有节点的 `~/.ssh/authorized_keys` 文件中,以确保节点间的无缝通信。为了进一步提升集群的稳定性和性能,建议采用负载均衡和故障恢复机制,并定期进行系统监控和维护。 ... [详细]
  • 在Linux系统中,原本已安装了多个版本的Python 2,并且还安装了Anaconda,其中包含了Python 3。本文详细介绍了如何通过配置环境变量,使系统默认使用指定版本的Python,以便在不同版本之间轻松切换。此外,文章还提供了具体的实践步骤和注意事项,帮助用户高效地管理和使用不同版本的Python环境。 ... [详细]
  • 在本地环境中部署了两个不同版本的 Flink 集群,分别为 1.9.1 和 1.9.2。近期在尝试启动 1.9.1 版本的 Flink 任务时,遇到了 TaskExecutor 启动失败的问题。尽管 TaskManager 日志显示正常,但任务仍无法成功启动。经过详细分析,发现该问题是由 Kafka 版本不兼容引起的。通过调整 Kafka 客户端配置并升级相关依赖,最终成功解决了这一故障。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • Zookeeper作为Apache Hadoop生态系统中的一个重要组件,主要致力于解决分布式应用中的常见数据管理难题。它提供了统一的命名服务、状态同步服务以及集群管理功能,有效提升了分布式系统的可靠性和可维护性。此外,Zookeeper还支持配置管理和临时节点管理,进一步增强了其在复杂分布式环境中的应用价值。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 在第二课中,我们将深入探讨Scala的面向对象编程核心概念及其在Spark源码中的应用。首先,通过详细的实战案例,全面解析Scala中的类和对象。作为一门纯面向对象的语言,Scala的类设计和对象使用是理解其面向对象特性的关键。此外,我们还将介绍如何通过阅读Spark源码来进一步巩固对这些概念的理解。这不仅有助于提升编程技能,还能为后续的高级应用开发打下坚实的基础。 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 在使用sbt构建项目时,遇到了“对象apache不是org软件包的成员”的错误。本文详细分析了该问题的原因,并提供了有效的解决方案,包括检查依赖配置、清理缓存和更新sbt插件等步骤,帮助开发者快速解决问题。 ... [详细]
author-avatar
rert
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有