【问题标题】:Dataflow reading using PubSubIO is really slow使用 PubSubIO 读取数据流真的很慢
【发布时间】:2017-08-19 13:35:27
【问题描述】:

我在使用从 PubSub 读取并写入 BigQuery 的 Dataflow 管道时遇到了一些问题。

我不得不耗尽它来执行一些更复杂的更新。当我重新运行管道时,它开始以正常速率读取来自 PubSub 的信息,但几分钟后它停止了,现在它不再从 PubSub 读取消息了!数据水印几乎延迟了一周并且没有进展。根据 Stackdriver,订阅中有超过 30 万条消息需要读取。

它在更新之前运行正常,现在即使我将管道降级到以前的版本(更新之前运行的那个),我仍然无法让它工作。

我尝试了几种配置:

1) 我们使用 Dataflow 自动缩放,我尝试使用更强大的 worker (n1-standard-64) 启动管道,并将其限制为 10 个 worker,但它不会提高性能,也不会自动缩放(它只保留初始工人)。

2) 我尝试通过 diskSizeGb (2048) 和 diskType (pd-ssd) 提供更多磁盘,但仍然没有改善。

3) 检查了 PubSub 配额和拉/推率,但这绝对是正常的。

管道没有显示错误或警告,也不会继续。

与其他管道相比,我检查了实例资源和 CPU、RAM、磁盘读/写速率都还可以。唯一稍微高一点的是网络速率:大约 400k 字节/秒(2000 个数据包/秒)传出和 300k 字节/秒传入(1800 个数据包/秒)。

你会建议我做什么?

【问题讨论】:

    标签: google-bigquery google-cloud-platform google-cloud-dataflow google-cloud-pubsub apache-beam


    【解决方案1】:

    Dataflow SDK 2.x for Java 和 Dataflow SDK for Python 基于 Apache Beam。确保您在更新时遵循documentation 作为参考。配额可能是运行缓慢的管道和缺乏输出的问题,但您提到这些都很好。

    看来有必要看看这份工作。我建议在 PIT here 上打开一个问题,我们会看看。请务必提供您的项目 ID、工作 ID 和所有必要的详细信息。

    【讨论】:

    • 嗨 Shivam,我们尝试了几项更改,发现代码中有一个错误导致管道中的 DoFn 永远休眠。但是,我们仍然认为 PubSubIO 行为存在一些问题,但我们无法解决,因为我们的首要任务是让管道再次工作。在此之前,我们遇到过与错误无关的类似问题,这些问题是我们通过从另一个订阅中读取(并向其重新发送消息)解决的。目前,我无法向您提供更多详细信息,但我们正在监控管道,看看它是否会再次发生。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2016-07-01
    • 2021-04-11
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2016-07-03
    相关资源
    最近更新 更多