#google-cloud-data-fusion #cdap
#google-cloud-data-fusion #cdap
Вопрос:
Я обрабатываю файл с помощью конвейера Google Data Fusion, но по ходу конвейера я получаю предупреждения и ошибки ниже:
25.09.2020 12:31:31 ПРЕДУПРЕЖДЕНИЕ org.apache.spark.storage.memory.MemoryStore # 66-Исполнитель запускает рабочий для задачи 6 Недостаточно места для кэширования rdd_10_6 в памяти! (пока вычислено 238,5 МБ)
25.09.2020 12:45:05 ОШИБКА org.apache.spark.scheduler.cluster.YarnClusterScheduler#70-dispatcher-event-loop-1
Потерял исполнителя 2 на cdap-soco-crea-99b67b97-fefb-11ea-8ee6-daceb18eb3cf-w-0.c.datalake-dev-rotw-36b8.internal: Контейнер, помеченный как сбойный: container_1601016787667_0001_01_000003 на хосте: cdap-soco-crea-99b67b97-fefb-11ea-8ee6-daceb18eb3cf-w-0.c.datalake-dev-rotw-36b8.internal. Статус выхода: 3. Диагностика: [2020-09-25 07:15:05.226] Исключение из запуска контейнера. Идентификатор контейнера: container_1601016787667_0001_01_000003 Код выхода: 3
Помогите, пожалуйста!
Комментарии:
1. Ваш конвейер работает в реальном времени или в пакетном режиме? У вас есть несколько соединений?
Ответ №1:
Судхир, не могли бы вы перейти к объединению данных> СИСТЕМНЫЙ АДМИНИСТРАТОР> Конфигурация> Системные вычислительные профили, затем увеличить объем памяти вашего вычислительного профиля Dataproc.
По умолчанию экземпляр Datafusion ENTERPRISE имеет 8192 МБ памяти на одного работника. Вы можете начать с удвоения этого количества и продолжать увеличивать, пока конвейер не будет запущен успешно.
Обратите внимание, что Spark выполняет преобразования на RDD в памяти. Как можно понять из сообщения об ошибке [1], одному из ваших работников не удалось кэшировать RDD в памяти из-за условий ООМ.
Необходимо кэшировать RDD в памяти, прежде чем Spark сможет раскрыть свои возможности обработки в памяти.
Надеюсь, это поможет!
[1] рабочему для задачи 6 недостаточно места для кэширования rdd_10_6 в памяти
Комментарии:
1. Привет, Абдель, спасибо за ответ. Я обрабатываю всего 500 МБ файла, а ниже приведена конфигурация вычислительного профиля, количество основных ядер: 1 Основные ядра: 1 Основная память (ГБ): 4096 Размер главного диска (ГБ): 1000 Количество рабочих: 2 рабочих ядра: 2 Рабочая память (ГБ): 8192 Размер рабочего диска(ГБ): 1000 Вы не думаете, что этого более чем достаточно для обработки файла?
Ответ №2:
Судхир,
Есть две вещи, которые вы могли бы попробовать, если это поможет решить вашу проблему.
Увеличьте память исполнителя. Шаги ниже.
- Перейдите на страницу сведений о конвейере.
- В меню Настройка выберите Ресурсы.
- Введите желаемый объем в разделе Исполнитель.
- В том же меню настройки нажмите Compute config.
- Нажмите настроить в нужном профиле вычислений.
- Убедитесь, что рабочая память кратна памяти исполнителя. Например, если память исполнителя равна 4096, рабочая память должна использовать 4, 8, 12 и т. Д. ГБ Памяти. Также соответствующим образом масштабируйте рабочие ядра. Обратите внимание, что не обязательно, чтобы рабочая память была точно кратной, но если это не так, более вероятно, что емкость кластера будет потрачена впустую.
Также попробуйте отключить автоматическое кэширование. Шаги ниже.
-
Перейдите на страницу сведений о конвейере.
-
В меню Настройки нажмите на Engine config.
-
Введите ‘spark.cdap.pipeline.autocache.enable’ в качестве ключа и ‘false’ в качестве значения.
По умолчанию конвейеры будут кэшировать промежуточные данные в конвейере, чтобы предотвратить повторное вычисление данных Spark. Для этого требуется значительный объем памяти, поэтому конвейерам, обрабатывающим большой объем данных, часто требуется отключить это.