2017-01-18 7 views
1

Я получаю эту ошибку Container exited with a non-zero exit code 137 во время работы искры на пряжу. Я пробовал пару методов после прохождения, но не помог. Конфигурации искры выглядят следующим образом:EMR 5.x | Свеча на пряжу | Код выхода 137 и пустое пространство Java Ошибка

spark.driver.memory 10G 
spark.driver.maxResultSize 2G 
spark.memory.fraction 0.8 

Я использую пряжу в клиентском режиме. spark-submit --packages com.databricks:spark-redshift_2.10:0.5.0 --jars RedshiftJDBC4-1.2.1.1001.jar elevatedailyjob.py > log5.out 2>&1 &

Пример кода:

# Load the file (its a single file of 3.2GB) 

de_pulse_ip = spark.read.csv('s3://aiqdatabucket/aiq-inputfiles/de_pulse_ip/latest/de_pulse_additional.txt.gz', schema=ipAadditionalPulseSchema, sep=';', header=True) 

# write the de_pulse_ip data into parquet format 
de_pulse_ip = de_pulse_ip.select("ip_start","ip_end","country_code","region_code","city_code","ip_start_int","ip_end_int","postal_code").repartition(50) 
de_pulse_ip.write.parquet("s3://analyst-adhoc/elevate/tempData/de_pulse_ip1.parquet", mode = "overwrite") 

# read de_pulse_ip data intp dataframe from parquet files 
de_pulse_ip = spark.read.parquet("s3://analyst-adhoc/elevate/tempData/de_pulse_ip1.parquet").repartition("ip_start_int","ip_end_int") 

#join with another dataset 200 MB 
brandsurvey_feed = de_pulse_ip.join(vdna_bs_feed_ip_int, [vdna_bs_feed_ip_int.ip_int_cast > de_pulse_ip.ip_start_int,vdna_bs_feed_ip_int.ip_int_cast <= de_pulse_ip.ip_end_int], how='right') 

Примечание: входной файл представляет собой один файл GZIP. Он распакован размером 3,2 ГБ

+0

Сколько у вас исполнителей? сколько RAM вы выделили для каждого исполнителя? Каков размер распакованного входного файла? – Yaron

+0

распакованный файл - 3,2 ГБ. для выделения ОЗУ я пробовал несколько вариантов 1. Я не делал никакой памяти и просто использовал значение по умолчанию 2. Затем я использовал 6 ГБ для каждого исполнителя, но он все еще не работает. – braj259

+0

Сколько вы использовали с 6 ГБ оперативной памяти? – Yaron

ответ

4

Вот решение для вышеуказанных проблем.

код выхода 137 и куча Java-пространства Ошибка связана главным образом с памятью w.r.t исполнителями и драйвером. Вот то, что я сделал

  • увеличить памяти драйвера spark.driver.memory 16G увеличение

  • память для хранения fraction spark.storage.memoryFraction 0.8

  • увеличить исполнитель памяти spark.executor.memory 3G

Одна очень важная вещь, которую я бы как поделиться, что на самом деле оказало огромное влияние на производительность, выглядит примерно так:

Как я уже упоминал выше, у меня есть один файл (.csv и gzip 3,2 ГБ), который после распаковки становится 11,6 ГБ. Чтобы загружать файлы gzip, искра всегда запускает один исполнитель (для каждого .gzip-файла), поскольку он не может распараллеливаться (даже если вы увеличиваете разделы), поскольку файлы gzip не расщепляются. это мешает всей производительности, так как искра сначала считывает весь файл (с использованием одного исполнителя) в мастер (я запускаю искру - отправляю в режиме клиента), а затем распаковываю его, а затем переделывает (если упоминается для перераздела).

Чтобы решить эту проблему, я использовал команду s3-dist-cp и переместил файл с s3 в hdfs, а также уменьшил размер блока, чтобы увеличить параллельность. что-то вроде ниже

/usr/bin/s3-dist-cp --src=s3://aiqdatabucket/aiq-inputfiles/de_pulse_ip/latest/ --dest=/de_pulse/ --groupBy='.*(additional).*' --targetSize=64 --outputCodec=none 

хотя это занимает мало времени, чтобы переместить данные из s3 в HDFS, общую производительность процесса значительно возрастает.