当前位置: 首页 > 知识库问答 >
问题:

Apache Flink中的任务分配

鞠嘉誉
2023-03-14

考虑一个带有一些节点的Flink集群,其中每个节点都有一个多核处理器。如果我们根据核的数量和相等的内存共享来配置插槽的数量,那么Apache Flink如何在节点和空闲插槽之间分配任务呢?他们是否受到公平对待?
当我们根据节点上可用的核数配置任务插槽时,是否有任何方法使/配置Flink以平等对待插槽
 · · · 例如,假设我们对数据进行相等的分区,并在分区上运行相同的任务。Flink使用来自某些节点的所有插槽,同时某些节点完全空闲。具有较少CPU核数的节点比具有较多CPU核数的节点输出结果的速度要快得多。除此之外,这个加速比与每个节点中使用的核数不成正比。换句话说,如果在一个节点中一个核被占用,而在另一个节点中两个核被占用,在公平地将每个核视为一个时隙时,每个时隙应该在几乎相等的时间量内输出相同任务的结果,而不管它们属于哪个节点。但是,这里的情况并非如此。
 · · · 在这种假设下,我会说节点没有得到平等的对待。这反过来会产生一个与可用节点数不成比例的结果。我们不能说增加时隙的数量就一定会减少时间开销。

共有1个答案

倪棋
2023-03-14

非常旧的线程,但有一个较新的线程来回答当前版本的这个问题。

在Flink1.5中,我们增加了资源弹性。这意味着Flink现在能够在像Yarn或Mesos这样的集群管理框架上分配新的容器。由于这些更改(也适用于独立模式),Flink不再考虑固定的任务管理器集,因为如果需要,它将启动新的容器(在独立模式下不起作用)。因此,系统很难决定是否将属于单个作业的插槽分配给多个TM。当你考虑到像你这样的一些工作可能会从这样的策略中受益,而其他的工作则会从同地办公中受益时,情况就会变得更加困难。如果您想要将wrt调度到多个作业,那么情况就会变得更加复杂,而系统并不完全了解这些作业,因为它们是按顺序提交的。因此,Flink目前假设插槽请求可以由任何TaskManager完成。

 类似资料:
  • 如何在ApacheFlink中为会话窗口分配id? 最后,我希望在会话窗口打开时,使用会话窗口id逐个充实事件(我不希望等到窗口关闭后再发出充实事件)。 我尝试使用AggregateFunction来实现这一点,但是我认为merge()并没有像我所期望的那样工作。它似乎是用于合并窗口而不是窗格(触发触发)。在我的管道中似乎从未调用过它。因此,触发器之间似乎没有共享状态! 会话窗口ID将是落入窗口的

  • 我想把多个分级任务作为一个来运行。所以不是 这行不通

  • 假设我正在从S3文件夹中读取100个文件。每个文件的大小为10 MB。当我执行<code>df=spark.read时。parquet(s3路径),文件(或更确切地说分区)如何在任务之间分布?E、 g.在这种情况下,<code>df</code>将有100个分区,如果spark有10个任务正在运行以将该文件夹的内容读取到数据帧中,那么这些分区是如何分配给这10个任务的?它是以循环方式进行的,还是每

  • 运行项目时要像分担技术负担那样分担管理负担。随着项目的成长,就会有更多关于管理人员和信息流程的工作。没有道理不分担这些负担,这并不一定需要一种自顶向下的阶级组织—实践中更多是同级的网络拓扑结构,而不是军队式的命令结构。 有时管理角色是正式的,有时则是自然发生的。在Subversion项目中,我们有一个补丁管理员,一个翻译管理员,文档管理员和问题管理员(尽管是非正式的)以及一个发布管理员。有时这些角

  • 安装(下载 这是Flink的默认配置。 关于这里发生了什么事,有什么建议吗?

  • 我有个任务,大概是: 我尝试了所有的方法,但仍然出现错误:/