Выход из OutOfMemoryException при экспорте больших таблиц в облачное хранилище Google - PullRequest
0 голосов
/ 05 июня 2019

Я экспортирую таблицу из Cloud Bigtable в Cloud Storage, перейдя по этой ссылке https://cloud.google.com/bigtable/docs/exporting-sequence-files#exporting_sequence_files_2

Размер таблицы Bigtable составляет ~ 300 ГБ, и конвейер потока данных приводит к этой ошибке

An OutOfMemoryException occurred. Consider specifying higher memory instances in PipelineOptions.
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3236)
at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118)...

и ошибка предлагает увеличить память типа экземпляра, используемого для задания потока данных.Я также получил предупреждение о том, что

Worker machine type has insufficient disk (25 GB) to support this type of Dataflow job. Please increase the disk size given by the diskSizeGb/disk_size_gb execution parameter.

Я перепроверил команду для запуска конвейера здесь (https://github.com/googleapis/cloud-bigtable-client/tree/master/bigtable-dataflow-parent/bigtable-beam-import) и попытался найти любой параметр командной строки, который помогает мне установить пользовательский тип экземпляраили размер PD для экземпляра, но не удалось его найти.

По умолчанию тип экземпляра - n1-standard-1, а размер PD - 25 ГБ.

Есть ли какой-либо параметр для передачи во время работысоздание, которое поможет мне избежать этой ошибки? Если да, то что это?

1 Ответ

3 голосов
/ 05 июня 2019

Я нашел параметры для выбора размера PD и типа экземпляра. Это

--diskSizeGb=[Disk_size_in_GBs] --workerMachineType=[GCP_VM_machine_type]

Для моего случая я использовал

--diskSizeGb=100 --workerMachineType=n1-highmem-4

Эти параметры являются частью класса PipelineOptions для определения параметров времени выполнения. Вы можете указать больше параметров здесь https://beam.apache.org/releases/javadoc/2.3.0/org/apache/beam/runners/dataflow/options/DataflowPipelineWorkerPoolOptions.html

Но так как я установил для параметра --maxNumWorkers значение 30, я столкнулся с некоторыми проблемами с квотами, которые не позволят выполнить автоматическое масштабирование вашей работы и будут замедлены, но без ошибок.

...