Hadoop Mapper не работает из-за "Контейнера, убитого ApplicationMaster",

Я пытаюсь выполнить программу сокращения карты на Hadoop.

Когда я отправляю свою работу в кластер единичного узла hadoop. Работа создается, но не работает с сообщением

"Контейнер, убитый ApplicationMaster"

Используемый вход имеет размер 10 МБ.

Когда я использовал один и тот же скрипт входного файла 400 КБ, он прошел успешно. Но сбой для входного файла размером 10 МБ.

Полный журнал, который отображается в моем терминале, выглядит следующим образом.

    15/05/29 09:52:16 WARN util.NativeCodeLoader: Unable to 'load native-  hadoop library for your platform... using builtin-java classes      where applicable
Submitting job on the cluster...
15/05/29 09:52:17 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
15/05/29 09:52:18 INFO input.FileInputFormat: Total input paths to process : 1
15/05/29 09:52:18 INFO mapreduce.JobSubmitter: number of splits:1
15/05/29 09:52:19 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1432910768528_0001
15/05/29 09:52:19 INFO impl.YarnClientImpl: Submitted application application_1432910768528_0001
15/05/29 09:52:19 INFO mapreduce.Job: The url to track the job: http://localhost:8088/proxy/application_1432910768528_0001/
15/05/29 09:52:19 INFO mapreduce.Job: Running job: job_1432910768528_0001
15/05/29 09:52:29 INFO mapreduce.Job: Job job_1432910768528_0001 running in uber mode : false
15/05/29 09:52:29 INFO mapreduce.Job:  map 0% reduce 0%
15/05/29 09:52:41 INFO mapreduce.Job:  map 100% reduce 0%
15/05/29 10:03:01 INFO mapreduce.Job:  map 0% reduce 0%
15/05/29 10:03:01 INFO mapreduce.Job: Task Id : attempt_1432910768528_0001_m_000000_0, Status : FAILED
AttemptID:attempt_1432910768528_0001_m_000000_0 Timed out after 600 secs
Container killed by the ApplicationMaster.
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143

Мой картер здесь запускает другую программу, которая будет обрабатывать мой входной файл здесь. Программа, которая получает триггер от картографа, обычно потребляет много памяти.

Поэтому, пожалуйста, помогите мне в этом отношении.

Ответ 1

Включите ниже свойства в yarn-site.xml и перезапустите VM,

<property>
   <name>yarn.nodemanager.vmem-check-enabled</name>
   <value>false</value>
   <description>Whether virtual memory limits will be enforced for containers</description>
</property>

<property>
   <name>yarn.nodemanager.vmem-pmem-ratio</name>
   <value>4</value>
   <description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>

Ответ 2

Контейнер представляет собой процесс JVM с пряжей. В Mapreduce основная задача приложения, задачи сопоставления и редуктора - это все контейнеры, которые выполняются внутри структуры пряжи.

Вы можете исправить эту проблему либо увеличьте количество редукторов (скажем, mapreduce.job.reduces=10), либо увеличив размер кучи уменьшения (mapreduce.reduce.java.opts=-Xmx2014m)

Если вы хотите иметь фиксированное количество редукторов во время выполнения, вы можете сделать это, передав команду Map/Reduce в командной строке. Используя -D mapreduce.job.reduces=10 с нужным номером, будет появляться много редукторов во время выполнения.

В коде вы можете настроить переменную JobConf для установки количества карт и редукторов. JobConf переменная JobConf является заданием.

Configuration conf = new Configuration();
Job job = new Job(conf);
job.setNumReduceTasks(10); // 10 reducers

Вы также можете разделить файл на меньший размер для этой конкретной работы, чтобы избежать проблемы с памятью.

Если у вас все еще проблема, проверьте журнал пряжи и опубликуйте журнал.