Запуск сценария R с использованием потоковой передачи hadoop Сбой задания: PipeMapRed.waitOutputThreads(): сбой подпроцесса с кодом 1
У меня есть сценарий R, который прекрасно работает в R Colsole, но когда я запускаю потоковую передачу Hadoop, происходит сбой с приведенной ниже ошибкой в фазе карты. Найдите журнал попыток задач
Команда Hadoop Streaming у меня есть:
/home/Bibhu/hadoop-0.20.2/bin/hadoop jar \
/home/Bibhu/hadoop-0.20.2/contrib/streaming/*.jar \
-input hdfs://localhost:54310/user/Bibhu/BookTE1.csv \
-output outsid -mapper `pwd`/code1.sh
логи stderr
Loading required package: class
Error in read.table(file = file, header = header, sep = sep, quote = quote, :
no lines available in input
Calls: read.csv -> read.table
Execution halted
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1
at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:362)
at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:572)
at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:136)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57)
at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
at org.apache.hadoop.mapred.Child.main(Child.java:170)
журналы системного журнала
2013-07-03 19:32:36,080 INFO org.apache.hadoop.metrics.jvm.JvmMetrics: Initializing JVM Metrics with processName=MAP, sessionId=
2013-07-03 19:32:36,654 INFO org.apache.hadoop.mapred.MapTask: numReduceTasks: 1
2013-07-03 19:32:36,675 INFO org.apache.hadoop.mapred.MapTask: io.sort.mb = 100
2013-07-03 19:32:36,835 INFO org.apache.hadoop.mapred.MapTask: data buffer = 79691776/99614720
2013-07-03 19:32:36,835 INFO org.apache.hadoop.mapred.MapTask: record buffer = 262144/327680
2013-07-03 19:32:36,899 INFO org.apache.hadoop.streaming.PipeMapRed: PipeMapRed exec [/home/Bibhu/Downloads/SentimentAnalysis/Sid/smallFile/code1.sh]
2013-07-03 19:32:37,256 INFO org.apache.hadoop.streaming.PipeMapRed: Records R/W=0/1
2013-07-03 19:32:38,509 INFO org.apache.hadoop.streaming.PipeMapRed: MRErrorThread done
2013-07-03 19:32:38,509 INFO org.apache.hadoop.streaming.PipeMapRed: PipeMapRed failed!
2013-07-03 19:32:38,557 WARN org.apache.hadoop.mapred.TaskTracker: Error running child
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1
at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:362)
at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:572)
at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:136)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57)
at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
at org.apache.hadoop.mapred.Child.main(Child.java:170)
2013-07-03 19:32:38,631 INFO org.apache.hadoop.mapred.TaskRunner: Runnning cleanup for the task
3 ответа
Вам нужно найти журналы от ваших картографов и редукторов, так как это место, где работа не выполняется (как указано в java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1
). Это говорит о том, что ваш R-скрипт потерпел крах.
Если вы используете дистрибутив Hortonworks Hadoop, проще всего открыть свою историю вакансий. Это должно быть в http://127.0.0.1:19888/jobhistory
, Должна быть возможность найти журнал в файловой системе также с помощью командной строки, но я пока не нашел где.
- открыто
http://127.0.0.1:19888/jobhistory
в вашем веб-браузере - Нажмите на идентификатор задания с ошибкой
- Нажмите на число, указывающее количество неудачных заданий
- Нажмите на ссылку попытки
- Нажмите на ссылку журналы
Вы должны увидеть страницу, которая выглядит примерно так
Log Type: stderr
Log Length: 418
Traceback (most recent call last):
File "/hadoop/yarn/local/usercache/root/appcache/application_1404203309115_0003/container_1404203309115_0003_01_000002/./mapper.py", line 45, in <module>
mapper()
File "/hadoop/yarn/local/usercache/root/appcache/application_1404203309115_0003/container_1404203309115_0003_01_000002/./mapper.py", line 37, in mapper
for record in reader:
_csv.Error: newline inside string
Это ошибка из моего скрипта Python, ошибки из R выглядят немного иначе.
источник: http://hortonworks.com/community/forums/topic/map-reduce-job-log-files/
- напишите hadoopStreamming jar с полной версией вроде
hadoop-streaming-1.0.4.jar
- указать отдельный путь к файлу для картографа и редуктора с параметром -file
- скажите hadoop, который является вашим кодом маппера и редуктора с опцией -mapper & -reducer
более подробную информацию см. в разделе Запуск WordCount в Hadoop с использованием сценария R
Я получил эту же ошибку сегодня вечером, также разрабатывая задания Map Reduce Streaming с R
,
Я работал над кластером из 10 узлов, каждый с 12 ядрами, и попытался предоставить во время отправки:
-D mapred.map.tasks=200\
-D mapred.reduce.tasks=200
Работа успешно завершена, хотя, когда я изменил их на
-D mapred.map.tasks=10\
-D mapred.reduce.tasks=10
Это было таинственное исправление, и, возможно, сегодня вечером возникнет больше контекста. Но если кто-то из читателей может объяснить, пожалуйста, сделайте!