2015-10-22 4 views
0

Так что я совершенно новый для Hadoop и командной строки, хотя я уже некоторое время программировал (как студент). Я пытаюсь запустить несколько простых программ (часть учебника) из Putty на школьной машине.Hadoop: Нет такого файла или каталога

Я получил команды Hadoop для работы до этого и запускаю другую простую программу просто отлично, но я застрял в этом. Нет, это не домашнее задание. Просто учебник, чтобы узнать команды Hadoop.

Инструкции сказать следующее:

/*

Тестирования код

Мы выполняем локальное тестирование, соответствующее типичной UNIX-стиль трубопровод, наше тестирование будет иметь вид:

кошки | карта | сортировать | уменьшить Что эмулирует тот же конвейер, который Hadoop будет выполнять при потоковой передаче, хотя и нераспространенным образом. Вы должны убедиться, что файлы mapper.py и reducer.py имеет разрешение выполнения:

CHMOD и + х mapper.py CHMOD и + х reducer.py

Попробуйте следующую команду и объясняющие результаты (hint: введите man sort в окне терминала, чтобы узнать больше о команде sort):

echo "это тест, и это должно подсчитывать количество слов" | ./mapper.py | sort -k1,1 | ./reducer.py

*/

Запуск «HDFS ДФС -ls/пользователь/$ USER дает следующий результат:

Найдено 6 пунктов drwxr-хт-х - s1353460 s1353460 0 2015- 10-20 10:51/user/s1353460/QuasiMonteCarlo_1445334654365_163883167 drwxr-xr-x - s1353460 s1353460 0 2015-10-20 10:51/user/s1353460/data -rw-r - r-- 3 s1353460 s1353460 360 2015-10-20 12:13 /user/s1353460/mapper.py -rw-r - r-- 3 s1353460 s1353460 15346 2015-10-20 11:11/user/s1353460/part-r-00000 - rw-r - r-- 2 s1353460 s1353460 728 2015-1 0-21 10:21 /user/s1353460/reducer.py drwxr-хт-х - s1353460 s1353460 0 2015-10-16 14:38/пользователь/s1353460/источник

Но работает "эхо" это тест, и это должно подсчитать количество слов "| /user/$USER/mapper.py | sort -k1,1 | /user/$USER/reducer.py»возвращает ошибки:

-bash: /user/s1353460/reducer.py: Нет такого файла или каталога -bash: /user/s1353460/mapper.py: Нет такого файла или каталог

который кажется странным, так как чуть выше были перечислены именно с в этом положении. Любая идея, что может быть здесь происходит?

ответ

0

В основном, используя эхо, вы локально тестируете свои файлы и не трогаете HDFS. HDFS - это абстракция файловой системы ... но это еще одна тема.

Если mapper.py или reducer.py не находятся в вашем текущем каталоге, вы будете иметь указанную проблему независимо от того, находятся ли они в HDFS по тому же пути.

Чтобы использовать локальные файлы python с потоковой передачей, вам необходимо использовать потоковое устройство (его местоположение зависит от вашей установки) см. this post here.

1

Но работает «эхо» это тест, и это должно подсчитайте количество слов "| /user/$USER/mapper.py | sort -k1,1 | /user/$USER/reducer.py "возвращает ошибки:

-bash: /user/s1353460/reducer.py: Нет такого файла или каталога -bash:/user/s1353460/mapper.ру: Нет такого файла или каталога

Вы создали mapper.py & reducer.py на HDFS. При выполнении этой команды, он ищет mapper.py и reducer.py в локальной файловой системе не на HDFS.

Чтобы устранить эту проблему:

  1. Обеспечить/пользователь/s1353460/существует на your local file system. если нет, то создать то же самое, а затем скопировать или создать mapper.py & reducer.py в/пользователя/s1353460/

  2. Убедитесь, что mapper.py имеет права на исполнение chmod +x /user/s1353460/mapper.py

  3. Марка обязательно reducer.py имеет разрешение на исполнение chmod +x /user/s1353460/reducer.py

  4. Пробег echo "this is a test and this should count the number of words" | /user/s1353460/mapper.py | sort -k1,1 | /user/s1353460/reducer.py Он должен работать на этот раз без ошибок.

Чтобы запустить Python MapReduce работу на кластере Hadoop:

[email protected]:/usr/local/hadoop$ bin/hadoop jar contrib/streaming/hadoop-*streaming*.jar \ 
-file /user/s1353460/mapper.py -mapper /user/s1353460/mapper.py \ 
-file /user/s1353460/reducer.py -reducer /user/s1353460/reducer.py \ 
-input <hdfs-input-path> -output <hdfs-output-path> 

предположение:Hadoop установлен в /usr/local/hadoop. Измените путь соответствующим образом.

+0

Ваш шаг 4 все еще не работает на HDFS, но все ваши другие шаги хороши. Чтобы на самом деле работать на HDFS, вы должны использовать поточную банку Hadoop с параметром - files. –

+0

Автор оригинальной проблемы пытается протестировать ее локально, и команда не работает – Vinkal

+0

Ах, мой плохой, прочитайте шаг 1 как создайте этот каталог в HDFS, потому что я столкнулся с проблемой, когда локальная папка локального пользователя не существует в HDFS и аналогичная ошибка. –

Смежные вопросы