Версия Hadoop: 2.10.2 Версия JDK: 1.8.0_291
Я пытаюсь запустить map_reduce с помощью Python. Я настроил Hadoop на новом hduser_.
После запуска этой команды в терминале:
hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.10.2.jar \ -ввод заказов.txt\ -выход ccp-выход \ -файл /tmp/cross/pairs/mapper.py \ -маппер mapper.py \ -файл /tmp/cross/pairs/reducer.py \ -редуктор редуктор.py У меня есть исключение: Запишите, что все начинается нормально:

После этого я получаю эти исключения. Журнал исключений:
23/10/18 10:41:22 INFO mapreduce.Job: Идентификатор задачи: попытка_1697637865786_0004_m_000000_0, Статус: FAILED Ошибка: java.lang.RuntimeException: ошибка в настройке объекта в org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:113) в org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:79) в org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:137) в org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:456) в org.apache.hadoop.mapred.MapTask.run(MapTask.java:344) в org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:177) в java.security.AccessController.doPrivileged (собственный метод) в javax.security.auth.Subject.doAs(Subject.java:422) в org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1938) в org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:171) Вызвано: java.lang.reflect.IndictionTargetException. в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:498) в org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:110) ... еще 9 Вызвано: java.lang.RuntimeException: ошибка в настройке объекта. в org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:113) в org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:79) в org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:137) в org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java:38) ... еще 14 Вызвано: java.lang.reflect.IndictionTargetException. в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:498) в org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:110) ... еще 17 Вызвано: java.lang.RuntimeException: исключение конфигурации. в org.apache.hadoop.streaming.PipeMapRed.configure(PipeMapRed.java:221) в org.apache.hadoop.streaming.PipeMapper.configure(PipeMapper.java:66) ... еще 22 Вызвано: java.io.IOException: невозможно запустить программу «/home/hduser_/hdfs/hadoop-tmp/nm-local-dir/usercache/hduser_/appcache/application_1697637865786_0004/container_1697637865786_0004_01_000002/./mapper.py»: ошибка =2 , Данный файл или каталог отсутствует в java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) в org.apache.hadoop.streaming.PipeMapRed.configure(PipeMapRed.java:208) ... еще 23 Вызвано: java.io.IOException: error=2, такого файла или каталога нет. в java.lang.UNIXProcess.forkAndExec (собственный метод) в java.lang.UNIXProcess.(UNIXProcess.java:247) в java.lang.ProcessImpl.start(ProcessImpl.java:134) в java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) ... еще 24 и полученный журнал:
23.10.18 10:41:40 INFO mapreduce.Job: Счетчики: 14 Счетчики заданий Неудачные задачи карты=7 Убитых задач на карте=1 Убито сократить задачи = 1 Запущенных задач карты=8 Другие задачи локальной карты=6 Задачи локальной карты данных = 2 Общее время пребывания всех карт в занятых слотах (мс)=25675 Общее время, потраченное всеми сокращениями в занятых слотах (мс)=0 Общее время, затраченное на все задачи карты (мс)=25675 Общее количество vcore-миллисекунд, затраченное всеми задачами карты = 25675. Общее количество мегабайт-миллисекунд, затраченное на все задачи карты = 26291200. Платформа Map-Reduce Затраченное время процессора (мс) = 0 Снимок физической памяти (байты) = 0 Снимок виртуальной памяти (байты) = 0 23.10.18 10:41:40 ОШИБКА потоковой передачи.StreamJob: задание не выполнено! Команда потоковой передачи не выполнена! Интересно то, что и Mapper, и Reducer на самом деле хранятся в appcahe в каталогах с номерами 10, 11 и т. д.
сопоставитель Python:
#!/usr/bin/python3 """mapper.py""" импортировать систему для строки в sys.stdin: элементы = line.strip().split() если len(предметы) >= 2: для меня в предметах: для j в пунктах: если я != j: print(f"{i} {j}\t1") reducer.py:
#!/usr/bin/python3 """reducer.py""" импортировать систему (lastKey, полная_сумма) = (Нет, 0) список_ключей = установить() для строки в sys.stdin: (ключ, значение) = line.strip().split("\t") если ключ LastKey и LastKey !=: print(lastKey + '\t' + str(full_sum)) (lastKey, full_sum) = (ключ, int(значение)) еще: (lastKey, полная_сумма) = (ключ, полная_сумма + int(значение)) если последний ключ: print(lastKey + '\t' + str(full_sum)) core-site.xml:
fs.defaultFS hdfs://localhost:9000 hadoop.tmp.dir /home/hduser_/hdfs/hadoop-tmp