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

为什么执行并行度=1的Flink作业不好?

锺星腾
2023-03-14

共有1个答案

黄君博
2023-03-14

用平行度=1的Flink也不错。但它违背了使用Flink的主要目的(能够缩放)。

一般来说,您不应该拥有比内核更高的并行度(物理或虚拟的并行度取决于用例),因为您希望尽可能地使内核饱和。任何超过这一点的东西都会对您的性能产生负面影响,因为它需要更多的通信开销和上下文切换。通过向外扩展,您可以从网络中的分布式计算节点添加核心,这是使用大数据技术相对于手工编写应用程序的主要好处。

正如您所说的,只有在对数据进行分区的情况下,才能使用并行性。如果你有一个需要所有数据的算法,你最终需要在一个核心上处理它。然而,通常您可以并行地进行大量预处理(过滤、转换)和部分聚合,然后在最终的核心处组合数据。例如,想象一下简单地计算所有事件。您可以对每个分区的数据进行计数,然后在最后一个步骤中简单地将部分计数相加,该步骤几乎完美地缩放。

 类似资料:
  • 我试图理解Flink中的并行是如何工作的。本文件https://ci.apache.org/projects/flink/flink-docs-release-1.9/concepts/programming-model.html似乎表明水槽的平行度等于1。在我的例子中,我正在向我的接收器中的HBase写信——这是否意味着只有一个任务(线程?)哪个将写入HBase?它是否没有为应用程序设置全局并行

  • 我正在使用一个石英工作执行特定的任务。 如果另一个Main Job实例仍在运行,我想阻止调度器启动第二个Main Job实例...

  • 问题内容: 我正在我的VirtualBoxed Ubuntu 11.4上测试此Go代码 Ubuntu可以访问我所有的4个内核。我通过同时运行几个可执行文件和系统监视器来检查这一点。但是,当我尝试运行此代码时,它仅使用一个内核,并且没有从并行处理中获得任何收益。 我做错了什么? 问题答案: 您可能需要查看Go FAQ 的Concurrency部分,特别是以下两个问题,并确定哪个(如果不是两个)适用于

  • 我正在使用Quartz调度器,但我不知道如何并行运行作业。配置文件中有什么东西可以允许我这样做吗?

  • 我使用了以下格式的输入数据: 我已经使用以下代码段使用多线程将RDD保存为文本文件: 在本例中,我遇到了以下例外情况

  • 我正在亚马逊的EMR集群上同时运行3个Spark流进程。问题是这三个Spark流作业中的一个基于进行处理: 有没有办法在不更改代码的情况下解决这个问题?