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

在跨多个作业拆分Flink工作负载时,如何避免冗余IO和反序列化

唐运诚
2023-03-14

为了使Flink工作负载的部署和管理更容易,我们希望运行多个较小的作业,而不是一个完成所有工作的大型作业。我们面临的问题是,这些较小的作业中的每一个都必须读取和反序列化来自Kafka的相同输入数据。

我们已经进行了性能测试,结果表明,运行多个作业(每个作业都读取输入数据)比处理单个作业相同的数据需要更多的资源和更长的时间。

有没有一种方法可以读取一次输入数据,然后运行多个作业来只执行处理步骤,或者至少减少与运行多个作业相关的开销?

共有1个答案

李星辰
2023-03-14

我认为你必须为此付出一些代价,但是通过一些小心,你应该能够将成本降至最低。

一些想法:

(1)使用具有良好性能的序列化程序,例如,原型。请看这篇博客文章末尾的图表。

(2) 对内容进行结构化,以便您可以利用reinterpretAsKeyedStream在重新生成以前设置了密钥的数据流时避免不必要的密钥。

(3)您可能还会发现使用Sink API传播水印很有趣,因为它与此主题相关。

 类似资料:
  • 问题内容: 我希望我的Jenkins多分支管道工作避免触发自身。作业之所以提交,是因为它将递增版本文件并将其检入源代码管理,这将导致无限循环。 在常规工作中,我可以按照以下说明操作来避免这种循环(尽管这不是最干净的方法)。 这些说明不适用于多分支管道(没有“忽略某些用户的提交”选项)。Jenkins多分支管道中是否有任何方法可以防止自我触发的提交? 问题答案: 如果使用GIT,一种解决方法: 更改

  • 我们正在将旧的java/Spring应用程序移动到AWS中,因此它位于AWS应用型负载均衡后面。Tomcat直接在端口8080上的负载均衡器后面运行,我们在负载均衡器和tomcat之间使用HTTP。 问题是在这种情况下,Spring Security模块无法识别连接是否安全。 我可以通过配置连接来解决此问题: 它适用于单个主机名。但是,我需要它来跨多个主机名工作。 我已尝试跳过代理并添加: 但这似

  • 我有以下课程: 该类包含两个可选值,我想提供所有可能的构造函数排列。第一个版本不初始化任何内容,第二个版本只初始化第一个值,第三个版本只初始化第二个值。 最后一个构造函数是第二个和第三个构造函数的组合。但这是不可能写下来的,因为代码失败了。 是否可以在没有任何代码冗余的情况下(也不调用相同的setter方法)编写最后一个构造函数?

  • 我如何避免在这里过度使用试捕?我如何简化裁员

  • Hadoop:(ver-1.2.1),(1+8节点集群) 我的用例是,我试图获得执行特定pig脚本所花费的时间,以及从mapreduce的角度来看,这些时间是如何花费的。我需要多次运行pig脚本(比如说100),以获得平均时间。我启用了,这使我在每个udf函数上花费时间作为mapreduce计数器。我还对每个作业报告的其他延迟、内存度量(cpu时间、堆使用率)感兴趣。我可以从jobtracker

  • 我的目标是使用Kafka作为源设置一个高吞吐量集群 我在主服务器和辅助服务器上设置了一个2节点集群,配置如下。 flink-conf.yaml大师 Worker flink-conf.yaml 主节点上的文件如下所示: 两个节点上的 flink 设置位于具有相同名称的文件夹中。我通过运行 这将启动Worker节点上的任务管理器。 我的输入源是Kafka。以下是片段。 这是我的水槽功能 这是我的po