【发布时间】:2018-08-04 02:08:44
【问题描述】:
我正在运行一个有 150 名工作人员的 Google Dataflow 作业。我正在阅读来自 Google PubSub 的输入。经过几次充实后,我将结果写入 Google BigQuery。
对于少数记录,我在 Google 数据流中看到以下错误
(787b51f314078308): Exception: java.lang.OutOfMemoryError: Java heap space
java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)
java.nio.ByteBuffer.allocate(ByteBuffer.java:335)
...
...
...
com.google.cloud.dataflow.sdk.util.SimpleDoFnRunner.invokeProcessElement(SimpleDoFnRunner.java:49)
com.google.cloud.dataflow.sdk.util.DoFnRunnerBase.processElement(DoFnRunnerBase.java:139)
com.google.cloud.dataflow.sdk.runners.worker.SimpleParDoFn.processElement(SimpleParDoFn.java:188)
com.google.cloud.dataflow.sdk.runners.worker.ForwardingParDoFn.processElement(ForwardingParDoFn.java:42)
com.google.cloud.dataflow.sdk.runners.worker.DataflowWorkerLoggingParDoFn.processElement(DataflowWorkerLoggingParDoFn.java:47)
Stack trace truncated. Please see Cloud Logging for the entire trace.
我使用 150 名工作人员每秒处理约 75K 条消息。每条消息的大小约为 1.5KB。我应该进一步增加工人数量吗?或者我应该增加每个工人的记忆?如何增加每个worker的内存?
【问题讨论】:
标签: google-cloud-platform google-cloud-dataflow apache-beam