Предупреждение приводит к ошибке при чтении из корзины AED S3 - PullRequest
0 голосов
/ 06 апреля 2020

Я делаю простое внутреннее соединение двух таблиц, но получаю предупреждение, показанное ниже. В других сообщениях я видел, что можно игнорировать предупреждение, но мои работы заканчиваются неудачей и не прогрессируют. Таблицы довольно большие (12 миллиардов строк), но я добавляю только три столбца из одной таблицы в другую. Когда уменьшите набор данных до нескольких миллионов строк и запустите скрипт в блокноте Amazon Sagemaker Jupyter. это работает отлично. Но когда я запускаю его в кластере EMR для всего набора данных, происходит сбой. Я даже запустил указанный c snappy раздел, на котором он, похоже, не работал, и он работал в sagemaker. Задание не имеет проблем при чтении из одной из таблиц, оно, как представляется, создает проблему

INFO FileScanRDD: чтение Путь к файлу: s3a: // путь / EES_FD_UVA_HIST / date = 2019 -10-14 / part-00056-ddb83da5-2e1b-499d-a52a-cad16e21bd2 c -c000.snappy.parquet, диапазон: 0-102777097, значения разделов: [18183] 20/04/06 15:51:58 ПРЕДУПРЕЖДЕНИЕ S3AbortableInputStream: не все байты были прочитаны из S3ObjectInputStream, прерывая HTTP-соединение. Это, вероятно, ошибка и может привести к неоптимальному поведению. Запросите только те байты, которые вам нужны, через ранжированный GET или истощите входной поток после использования. 20/04/06 15:51:58 ПРЕДУПРЕЖДЕНИЕ S3AbortableInputStream: не все байты были прочитаны из S3ObjectInputStream, прерывая HTTP-соединение. Это, вероятно, ошибка и может привести к неоптимальному поведению. Запросите только те байты, которые вам нужны, через ранжированный GET или истощите входной поток после использования. 20/04/06 15:52:03 INFO CoarseGrainedExecutorBackend: драйвер отправил команду на отключение 20/04/06 15:52:03 INFO MemoryStore: очистка MemoryStore 20/04/06 15:52:03 INFO BlockManager: BlockManager остановлен 20/04 / 06 15:52:03 ИНФОРМАЦИЯ ShutdownHookManager: Хук выключения называется

Это мой код:

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
uvalim=spark.read.parquet("s3://path/UVA_HIST_WITH_LIMITS")
uvaorg=spark.read.parquet("s3a://path/EES_FD_UVA_HIST")
config=uvalim.select('SEQ_ID','TOOL_ID', 'DATE' ,'UL','LL')
uva=uvaorg.select('SEQ_ID', 'TOOL_ID', 'TIME_STAMP', 'RUN_ID', 'TARGET', 'LOWER_CRITICAL', 'UPPER_CRITICAL', 'RESULT', 'STATUS')

uva_config=uva.join(config, on=['SEQ_ID','TOOL_ID'], how='inner')

uva_config.write.mode("overwrite").parquet("s3a://path/Uvaconfig.parquet")

Есть ли способ отладки этого?

Обновление: по предложению Эмерсона:

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

Job Stage Job Executions

Это вывод stderr:

SLF4J: путь к классу содержит несколько привязок SLF4J. SLF4J: Обнаружена привязка в [jar: file: / mnt / yarn / usercache / hadoop / filecache / 301 / __ spark_libs__1712836156286367723.zip/slf4j-log4j12-1.7.16.jar!/org/slf4j/impl/StaticLoggerBinder4JF): Найдена привязка в [jar: file: /usr/lib/hadoop/lib/slf4j-log4j12-1.7.10.jar! /Org/slf4j/impl/StaticLoggerBinder.class] SLF4J: см. http://www.slf4j.org/codes.html#multiple_bindings для объяснения. SLF4J: фактическое связывание имеет тип [org.slf4j.impl.Log4jLoggerFactory] 20/04/07 05:04:13 INFO CoarseGrainedExecutorBackend: запущен демон с именем процесса: 5653@ip-10-210-13-51 20/04/07 05:04:13 INFO SignalUtils : Зарегистрированный обработчик сигнала для TERM 20/04/07 05:04:13 INFO SignalUtils: зарегистрированный обработчик сигнала для HUP 20/04/07 05:04:13 INFO SignalUtils: зарегистрированный обработчик сигнала для INT 20/04/07 05:04 : 15 INFO SecurityManager: Изменение acls представления для: пряжа, имел oop 20/04/07 05:04:15 INFO SecurityManager: Изменение acls изменения для: пряжа, имел oop 20/04/07 05:04:15 INFO SecurityManager: изменение просмотра групп acls на: 20/04/07 05:04:15 INFO SecurityManager: изменение изменения групп acls на: 20/04/07 05:04:15 INFO SecurityManager: SecurityManager: аутентификация отключена; пользовательский интерфейс отключен; пользователи с разрешениями на просмотр: Set (пряжа, имел oop); группы с разрешениями на просмотр: Set (); пользователи с правами на изменение: Set (пряжа, имел oop); группы с разрешениями на изменение: Set () 20/04/07 05:04:15 ИНФОРМАЦИЯ TransportClientFactory: успешно создано соединение с ip-10-210-13-51.ec2.internal / 10.210.13.51: 35863 через 168 мс (0 мс провел в начальной загрузке) 20/04/07 05:04:16 INFO SecurityManager: изменение acls представления на: yarn, had oop 20/04/07 05:04:16 INFO SecurityManager: изменение acls изменения на: yarn, had oop 20/04/07 05:04:16 ИНФОРМАЦИЯ SecurityManager: изменение вида групп acls на: 20/04/07 05:04:16 INFO SecurityManager: изменение изменения групп acls на: 20/04/07 05:04:16 INFO SecurityManager: SecurityManager: аутентификация отключена; пользовательский интерфейс отключен; пользователи с разрешениями на просмотр: Set (пряжа, имел oop); группы с разрешениями на просмотр: Set (); пользователи с правами на изменение: Set (пряжа, имел oop); группы с разрешениями на изменение: Set () 20/04/07 05:04:16 INFO TransportClientFactory: успешно создано соединение с ip-10-210-13-51.ec2.internal / 10.210.13.51: 35863 через 20 мс (0 мс провел в начальной загрузке) 20/04/07 05:04:16 ИНФОРМАЦИЯ DiskBlockManager: создан локальный каталог по адресу / mnt1 / yarn / usercache / hadoop / appcache / application_1569338404918_1241 / blockmgr-2adfe133-fd28-4f25-95a4-2ac1348c625e 20/04/ 05:04:16 INFO DiskBlockManager: создан локальный каталог по адресу / mnt / yarn / usercache / hadoop / appcache / application_1569338404918_1241 / blockmgr-3620ceea-8eee-42c5-af2f-6975c894b643 20/04/07 05:04:17 Память в хранилище памяти: запустился с емкостью 3,8 ГБ 04/07 05:04:17 INFO Исполнитель: запуск идентификатора исполнителя 1 на хосте ip-10-210-13-51.ec2.internal 20/04/07 05:04:18 INFO Utils: успешно запущенная служба 'org. apache .spar k.network.netty.NettyBlockTransferService 'на порту 34073. 20/04/07 05:04:18 INFO NettyBlockTransferService: сервер создан на ip-10-210-13-51.ec2.internal: 34073 20/04/07 05: 04:18 INFO BlockManager: использование org. apache .spark.storage.RandomBlockReplicationPolicy для политики репликации блоков 20/04/07 05:04:18 INFO BlockManagerMaster: регистрация BlockManager BlockManagerId (1, ip-10-210-13-51) .ec2.internal, 34073, нет) 20.04.07 05:04:18 INFO BlockManagerMaster: зарегистрированный BlockManager BlockManagerId (1, ip-10-210-13-51.ec2.internal, 34073, отсутствует) 20/04/ 07 05:04:18 INFO BlockManager: внешний сервисный порт shuffle = 7337 20/04/07 05:04:18 INFO BlockManager: регистрация исполнителя с локальным внешним сервисом случайного воспроизведения. 20/04/07 05:04:18 INFO TransportClientFactory: успешно создано соединение с ip-10-210-13-51.ec2.internal / 10.210.13.51: 7337 через 19 мс (0 мс проведено в начальной загрузке) 20/04 / 07 05:04:18 INFO BlockManager: инициализированный BlockManager: BlockManagerId (1, ip-10-210-13-51.ec2.internal, 34073, None) 20/04/07 05:04:20 INFO CoarseGrainedExecutorBackend: получил назначенную задачу 0 20/04/07 05:04:20 INFO Исполнитель: Выполнение задачи 0,0 на этапе 0,0 (TID 0) 20/04/07 05:04:21 INFO TorrentBroadcast: Начало чтения широковещательной переменной 0 20/04/07 05:04 : 21 INFO TransportClientFactory: успешно создано соединение с ip-10-210-13-51.ec2.internal / 10.210.13.51: 38181 через 17 мс (0 мс проведено в начальной загрузке) 20/04/07 05:04:21 INFO MemoryStore : Блок broadcast_0_piece0 хранится в памяти в виде байтов (приблизительный размер 39,4 КБ, свободных 3,8 ГБ) 20/04/07 05:04:21 INFO TorrentBroadcast: чтение переменной вещания 0 заняло 504 мс 20/04/07 05:04:22 INFO MemoryStore : Блок broadcast_0 хранится в виде значений в памяти (приблизительный размер 130,2 КБ, fre e 3,8 ГБ) 20/04/07 05:04:23 ИНФОРМАЦИЯ CoarseGrainedExecutorBackend: eagerFSInit: легко инициализированная файловая система на s3: // не существует / не существует в 5155 мс 20/04/07 05:04:25 ИНФОРМАЦИЯ Исполнитель: Завершенная задача 0,0 на этапе 0,0 (TID 0). 53157 байт результата отправлено водителю 20/04/07 05:04:25 INFO CoarseGrainedExecutorBackend: Получено назначенное задание 2 20/04/07 05:04:25 INFO Исполнитель: Выполнение задания 2.0 на этапе 0.0 (TID 2) 20/04/ 07 05:04:25 INFO Исполнитель: Завершено задание 2.0 на этапе 0.0 (TID 2). 53114 байта результат отправлен водителю 20/04/07 05:04:25 INFO CoarseGrainedExecutorBackend: Получено назначенное задание 3 20/04/07 05:04:25 INFO Исполнитель: Запуск задания 3.0 на этапе 0.0 (TID 3) 20/04/ 07 05:04:25 ОШИБКА CoarseGrainedExecutorBackend: СРОК ПОЛУЧЕННОГО СИГНАЛА 20/04/07 05:04:25 ИНФОРМАЦИЯ DiskBlockManager: вызван хук отключения 20/04/07 05:04:25 ИНФОРМАЦИЯ ShutdownHookManager: Хук выключения называется

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Итак, после устранения неполадок отладки, я пришел к выводу, что это действительно проблема с памятью. Кластеру, который я использовал, не хватало памяти после загрузки данных за несколько дней. Каждый день было около 2 миллиардов строк. Поэтому я пытался анализировать свой сценарий каждый день, с которым он мог справиться. Однако при обработке некоторых дней, когда данные были немного больше (7 миллиардов строк), это выдало мне ошибку

executor.CoarseGrainedExecutorBackend: RECEIVED SIGNAL TERM

. Этот пост от Jumpman решил проблему, просто расширив значение spark.dynamicAllocation.executorIdleTimeout

Так что спасибо @Emerson и @Jumpman!

0 голосов
/ 07 апреля 2020

Можете ли вы переключиться на использование s3 вместо s3a. я считаю, S3A не рекомендуется для использования в EMR. Кроме того, вы можете запустить свою работу в режиме отладки.

sc = spark.sparkContext
sc.setLogLevel('DEBUG') 

Прочитайте приведенный ниже документ, в котором говорится о s3a https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-file-systems.html

...