1

在Gobblin 文档的https://gobblin.readthedocs.io/en/latest/case-studies/Kafka-HDFS-Ingestion/#grouping-workunits部分中,我们可以阅读有关单级打包的信息,其中包含以下描述

单级打包器使用最差拟合递减方法将工作单元分配给映射器:每个工作单元都转到当前负载最轻的映射器。这种方法很好地平衡了映射器。但是,同一主题的多个分区通常分配给不同的映射器。这可能会导致两个问题:(1)许多小的输出文件:如果一个主题的多个分区分配给不同的映射器,它们就不能共享输出文件。(2)任务开销:当一个topic的多个partition分配给不同的mapper时,会为每个partition创建一个task,可能会导致task数量多,开销大。

第二个开销似乎与我们在其他部分中可以阅读的内容相矛盾。高一点我们可以红

对于每个分区,在确定了第一个和最后一个偏移量之后,就会创建一个工作单元。

在这里https://gobblin.readthedocs.io/en/latest/Gobblin-Architecture/#gobblin-job-flow在第 3 点:

从 Source 给出的一组 WorkUnits 中,作业创建一组任务。任务是 WorkUnit 的运行时对应物,它表示工作的逻辑单元。通常,每个 WorkUnit 创建一个任务

因此,据我所知,除非将 WorkUnits 组合在一起,否则总会有与 Kafka 分区相关的任务(然后我们有许多 WorkUnits 的一项任务,因此有许多分区)

我是否理解这里有问题或单级包装中的第二次开销没有意义?

4

0 回答 0