当前位置:首页 > 内存 > 正文

flink各个内存参数之间的关系

  • 内存
  • 2024-08-17 08:53:25
  • 3290

一、flink并行度Flink作为分布式运行时框架,其计算资源可以不断扩展。
不同类型的任务可以控制所需的计算资源。纵观flink执行模型
并行是一个非常重要的概念,通过设置并行度,可以分配合理的计算资源,
实现合理的资源分配。
Flink的整个架构简单来说就是中央控制(jobManager)+多点分布式执行(taskManager)
灵活的资源分配主要来自于TaskManager的有效管理和配置。
启动flink之前,必须在基础配置文件中指定两个参数。
OfTaskSlots和t。
首先你需要了解槽的概念。对于taskManager来说,它实际上是一个JVM程序。
这个JVM可以同时运行多个任务,每个任务都需要使用本地硬件资源。
Slots属于jvm管理的一系列资源卡槽位。每个槽只能执行一个任务。
每个slot分配固定的内存资源,但不隔离CPU。JVM管理一个槽池,用于执行相应的任务。OfTaskSlots=10,理论上可以同时运行10个子任务。
因此,对于具有5个节点且numberOfTaskSlots=6的集群,有30个可用槽。
为了某项特定的工作,他会贪婪地使用所有电子游戏吗?
使用多少个槽位由t决定。如果是5,那么对于一项工作,他最多可以同时使用5个槽位。
具有多个工作站的集群需要此配置。
那么,给定一个由streamapi编写的Flink程序,任务是否映射到执行槽?
Flink有一些经典的图,stream_graph->job_graph->execution_graph->与stream-api对应的物理执行图。
Execution_graph基本上定义了如何分配执行。
我们知道一个stream-api主要由Source、Operation和Sink组成。那么我们就可以从源头入手,看看并行控制。
源有并行源和非并行源。我们主要看并行性对于像Kafka这样生成消费者模型的数据源来说,能够并行地消费资源是非常重要的。
所以可以看到kafka,FlinkKafkaConsumerBaseextendsRichParallelSourceFunction,可以充分利用并行性,吞吐量提升很多。
对应具体的物理执行,是多个资源任务的执行。它们属于一个头骨群,同时消耗不同的分部。
对于parallelSource,默认使用处理器核心进行并行。我们可以通过api进行配置。
Other是可以并行设置的操作,如果没有设置,则使用其他设置级别,例如。env,和t中的配置
例如1().map2().grouby(key).sink()
对于这样的程序,默认情况下,source与map1、map2具有相同的并行性,并且在输出upstream可以直接一对一转发。
在flink优化中,这些一对一算子甚至可以合二为一,避免转发、线程切换和网络通信。
对于诸如groupby之类的运算符,它们属于不同的类别。上游输出必须拆分到不同的下游节点,并且不能链接。
因为操作可以设置自己的并行,如果与上游不兼容。上游生产必须需要某种分区策略来重新平衡数据。Kafka有很多策略来处理这个细节。
这部分将在单独的章节中进行解释。
对于sink来说,可以理解为具体的操作,目前没有特殊的处理逻辑。
二、Flink基础入门(含案例)


大数据技术框架的演进将我们带入了Flink的世界。Flink是一个分布式、高性能的流批处理框架,通过检查点、状态、定时、窗口等基础技术,已经成为处理实时和持久数据的强大工具。流处理处理无限的实时数据流,而批处理则针对需要持久性的有限数据集。


Flink架构巧妙地分为两部分:JobManager和TaskManager。JobManager负责调度资源,TaskManager执行实际工作。Flink提供了丰富的编程模型,可以适应不同场景的需求。在集群部署方面,本地模式比较简单,但很少使用,建议使用单机模式或通过YARN进行扩展。您需要确保安装了JDK1.8或更高版本,并且安装了Flink1.7.2或更高版本。。


Flink之旅的起点是Scala-shell,它附带了分别对应于批处理和流处理的benv和senv预设。单节点集群通过`bin/`命令启动,验证过程可以通过访问`flinkwebui`(https://node1:8081)来访问。实际演示:通过``统计单词数(输入jar路径,/output)。如果操作失败,请不要忘记删除临时文件夹(rm-rf/tmp/.yarn-properties)。-根)。要停止集群,请使用“bin/”。


配置步骤需要修改`conf/`,调整`conf/master`和`conf/slave`配置,并设置Hadoop配置。,并分发flink目录。HA集群中引入Zookeeper来提高容错能力,使用HDFS来存储和组织ZK集群​​。例如,启用HA模式、high-availability:zookeeper,并设置`eDir`和ZK集群地址。JobManager的元数据和主节点配置也必须调整,并且“”必须跨节点同步更新。


在企业生产环境中,我们推荐使用`flinkonyarn`来预留资源,利用YARN提高资源利用率。提交WordCount作业以在YARN集群上运行Flink作业的命令是“flinkrun/export/servers/flink/examples/batch/”,您可以通过“yarnapplication-killappid”轻松终止会话。


会话模式有利有弊。优点是集群环境是预先设置好的,不需要为每个作业创建新的环境,适合大规模作业。尽管有大量的小任务,但它的缺点是即使没有任务也会继续占用资源。学习这些选项,如“-d,--detached”将帮助您更好地管理资源。


提交YARN作业(例如“bin/flinkrun-myarn-cluster-yn2-yjm1024-ytm1024/export/servers/flink/examples/batch/”)时,参数include的意思很明确。`yjm`和`ytm`定义工作内存,`ys`指定TaskManager中的槽数,`yn`指定TaskManager的数量。


一般来说,入门Flink需要灵活运用编程模型、选择数据分布策略、微调任务调度和资源管理,具体实例如下:用Scala编写的WordCount示例。事实上,创建Flink项目、配置log4j、编写并运行WordCount代码以确保YARN集群上的高效运行是Flink入门的必备步骤。