【问题标题】:Cloud Dataflow - Increase JVM Xmx ValueCloud Dataflow - 增加 JVM Xmx 价值
【发布时间】:2015-08-28 01:00:20
【问题描述】:

我们正在尝试在云中运行 Google Cloud Dataflow 作业,但我们不断收到“java.lang.OutOfMemoryError: Java heap space”。

我们正在尝试处理 Big Query 表中的 6.1 亿条记录,并将处理后的记录写入 12 个不同的输出(主输出 + 11 个辅助输出)。

我们已尝试将实例数量增加到 64 个 n1-standard-4 实例,但问题仍然存在。

VM 上的 Xmx 值似乎设置为 ~4GB(-Xmx3951927296),即使实例具有 15GB 内存。有什么方法可以增加 Xmx 值吗?

作业 ID 是 - 2015-06-11_21_32_32-16904087942426468793

【问题讨论】:

  • Xms 只是 最小 堆空间 - Xmx 值是多少?
  • 抱歉我提到了 Xmx 值。
  • 你用什么方法得到 Xmx 值?

标签: java google-cloud-platform google-cloud-dataflow


【解决方案1】:

您不能直接设置堆大小。然而,Dataflow 会根据机器类型调整堆大小。您可以通过设置标志“--machineType”来选择具有更多内存的机器。堆大小应随机器类型的总内存线性增加。

数据流故意限制堆大小以避免对洗牌器产生负面影响。

您的代码是否显式地从内存中的多条记录中累积值?您是否认为 4GB 不足以容纳任何给定的记录?

Dataflow 的内存要求应随单个记录的大小以及代码在内存中缓冲的数据量而增加。数据流的内存需求不应随着记录数的增加而增加。

【讨论】:

  • 我们的记录真的很小。我可以轻松地在较小的数据集上本地运行该作业,并且输出较少。在云中运行大型数据集时,它只会导致内存不足异常。
  • 谷歌云数据流中有没有办法定义或传递JVM参数?
猜你喜欢
  • 1970-01-01
  • 2020-04-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多