Flink】flink中的jobManager,taskManager,slot这些概念该怎么理解?

2020-07-21 08:51发布

5条回答
十一郎
2楼 · 2020-08-10 09:50

jobmanager:主节点,类似于spark中的master

taskManager:从节点,类似于spark中的worker

slot:插槽,类似于spark中executor中的线程,只不过flink中的slot是物理存在的,可以手动配置,每个slot执行一个任务,是静态概念,用来隔绝内存。

爱梦 - 拿来吧你
3楼 · 2021-08-24 11:32

Apache Flink 是一个开源的分布式,高性能,高可用,准确的流处理框架。支持实时流处理和批处理。

flink特性:

支持批处理和数据流程序处理

优雅流畅的支持java和scala api

同时支持高吞吐量和低延迟

支持事件处理和无序处理通过SataStream API,基于DataFlow数据流模型頭條萊垍

在不同的时间语义(时间时间,处理时间)下支持灵活的窗口(时间,技术,会话,自定义触发器)

仅处理一次的容错担保

自动反压机制

图处理(批) 机器学习(批) 复杂事件处理(流)

在dataSet(批处理)API中内置支持迭代程序(BSP)

高效的自定义内存管理,和健壮的切换能力在in-memory和out-of-core中

兼容hadoop的mapreduce和storm

集成YARN,HDFS,Hbase 和其它hadoop生态系统的组件

flink的应用场景:

优化电子商务的实时搜索结果:阿里巴巴的所有基础设施团队使用flink实时更新产品细节和库存信息,为用户提供更高的关联性。

针对数据分析团队提供实时流处理服务:king通过flink-powered数据分析平台提供实时数据分析,从游戏数据中大幅缩短了观察时间

网络/传感器检测和错误检测:Bouygues电信公司,是法国最大的电信供应商之一,使用flin监控其有线和无线网络,实现快速故障响应。

商业智能分析ETL:Zalando使用flink转换数据以便于加载到数据仓库,将复杂的转换操作转化为相对简单的并确保分析终端用户可以更快的访问数据。

基于上面的案例分析,Flink非常适合于:

多种数据源(有时不可靠):当数据是由数以百万计的不同用户或设备产生的,它是安全的假设数据会按照事件产生的顺序到达,和在上游数据失败的情况下,一些事件可能会比他们晚几个小时,迟到的数据也需要计算,这样的结果是准确的。

应用程序状态管理:当程序变得更加的复杂,比简单的过滤或者增强的数据结构,这个时候管理这些应用的状态将会变得比较难(例如:计数器,过去数据的窗口,状态机,内置数据库)。flink提供了工具,这些状态是有效的,容错的,和可控的,所以你不需要自己构建这些功能。

数据的快速处理:有一个焦点在实时或近实时用例场景中,从数据生成的那个时刻,数据就应该是可达的。在必要的时候,flink完全有能力满足这些延迟。

海量数据处理:这些程序需要分布在很多节点运行来支持所需的规模。flink可以在大型的集群中无缝运行,就像是在一个小集群一样。


天天
4楼 · 2021-08-24 19:40

JobManager:负责接收Flink Client提交的Job,并将Job分发到TaskManager执行,一个JobManager包含一个或多个TaskManager。

TaskManager:负责执行Client提交的Job。每个TaskManager可以有一个或多个slot,但slot的个数不能多于cpu-cores。

slot:slot是Flink任务的最小执行单位,并行度上限不能大于slot的数量。

橱窗的光
5楼 · 2021-08-25 10:12

Flink 整个系统主要由两个组件组成,分别为 JobManager 和 TaskManager,Flink 架构也遵循 Master - Slave 架构设计原则,JobManager 为 Master 节点,TaskManager 为 Worker (Slave)节点。

所有组件之间的通信都是借助于 Akka Framework,包括任务的状态以及 Checkpoint 触发等信息。

Flink中slot数量代表了所有最高能支持的subtask数量。也就是整个任务的最高并发度,但是并不代表一个线程的概念,内部也是可以启动很多线程的。


汽水味的小盆友
6楼 · 2021-08-25 10:59

数量设置

slot数量:slot的数量一般小于等于TM可用的cpu-core的数量,默认是1,也可以自定义。

并行度数量:代表算子实际运行的并行度,一般会在代码运行环境中指定,默认是4。

TaskManager:在Yarn集群中Job分离模式下,TM的数量=slot数量/并行度(向上取整)。

Flink on Yarn的两种方式:https://blog.csdn.net/m0_49834705/article/details/114333656

举个例子:

        如果算子并行度为30,每个TM的slot数量设置为4,那么TM数量=30/4(向上取整)= 8 个,显然这种情况会有2个slot被浪费了,所以可以将并行度设置为32。

slot和TM的数量不都是越多越好,TM过多会增加TM之间数据交换的开销,过少如果集中访问state会导致磁盘开销过大。


参数设置

slot设置:默认 taskmanager.numberOfTaskSlots=1;

parallelism:

在以shell的方式提交flink job的时候,可以使用-p指定程序的并行度;

./bin/flink run -p 10 ../word-count.jar

在flink job程序内设置并行度(算子不单独指定并行度,则以此为准)

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

env.setParallelism(10);

算子并行度

data.keyBy(new xxxKey())

    .flatMap(new XxxFlatMapFunction()).setParallelism(5)

    .map(new XxxMapFunction).setParallelism(5)

    .addSink(new XxxSink()).setParallelism(1)

并行度设置优先级:算子设置并行度 > env 设置并行度 > 配置文件默认并行度



相关问题推荐

  • 回答 2

    1、Window Assinger是干啥的当你决定stream是否keyby之后,window是没有构建的,你还需要指定一个window Assinger用于定义元素如何分配到窗口中。2、window Assinger如何指定?Keyedstream:window(WindowAssigner)non-keyed streams :windowAll(WindowAssig...

  • 回答 2

    Event Time:是事件创建的时间。它通常由事件中的时间戳描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink 通过时间戳分配器访问事件时间戳。Ingestion Time:是数据进入Flink 的时间。Processing Time:是每一个执行基于时间操作的算子...

  • 回答 2

    Event Time:是事件创建的时间。它通常由事件中的时间戳描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink 通过时间戳分配器访问事件时间戳。Ingestion Time:是数据进入Flink 的时间。Processing Time:是每一个执行基于时间操作的算子...

  • 回答 1

    批处理是流处理的一种非常特殊的情况。在流处理中,我们为数据定义滑动窗口或滚动窗口,并且在每次窗口滑动或滚动时生成结果。批处理则不同,我们定义一个全局窗口,所有的记录都属于同一个窗口。...

  • 回答 1

    配置文件(flink-conf.yaml)要启动HA集群,请将以下配置键添加到 conf/flink-conf.yaml:高可用性模式(必需):在 conf/flink-conf.yaml 中,必须将高可用性模式设置为zookeeper,以打开高可用模式。或者将此选项设置为工厂类的 FQN,Flink 通过创建 HighAva...

  • 回答 4

    1.Zookeeper加强集群稳定性Zookeeper通过一种和文件系统很像的层级命名空间来让分布式进程互相协同工作。这些命名空间由一系列数据寄存器组成,我们也叫这些数据寄存器为znodes。这些znodes就有点像是文件系统中的文件和文件夹。和文件系统不一样的是,文件系...

  • 回答 1

    根据现实的数据产生方式和数据产生是否含有边界(具有起始点和终止点)角度,将数据分为两种类型的数据集----一种是有界数据集,另外一种是无界数据集

  • 回答 1

    目前,还是选择saprkflink还有成长的空间

  • 回答 3
    已采纳

     Flink为流处理和批处理应用公用一个通用的引擎。1、数据量&吞吐量&延迟性Flink 的流处理引擎只需要很少配置就能实现高吞吐率和低延迟。2、支持 Event Time 和乱序事件Flink 支持了流处理和 Event Time 语义的窗口机制。Event time 使得计算乱序到达的事件或...

没有解决我的问题,去提问