2015-04-10 2 views
1

Я работаю в крупной корпоративной организации, где у нас есть кластер Hadoop. Я получил администратор для установки virtualenv на всех рабочих узлах Hadoop, чтобы я мог отправить mrjob s со стандартными зависимостями Python, которые могут не существовать на рабочих узлах. Согласно документации here, это как мой mrjob.conf файл выглядит следующим образом:mrjob virtualenv errore в кластере Hadoop

runners: 
    hadoop: 
    setup: 
    - virtualenv venv 
    - . venv/bin/activate 
    - pip install nltk 

У меня есть простая работа, которая использует nltk пакет. Я могу проверить, что этот скрипт установки работает на рабочих узлах (я могу поместить простые команды, например, записать некоторые данные в файл в /tmp, и он работает). Однако я получаю следующую ошибку:

New python executable in venv/bin/python 
Installing setuptools............done. 
Installing pip... 
    Error [Errno 13] Permission denied while executing command /storage5/hadoop/map...env/bin/easy_install /usr/share/python-virtualenv/pip-1.1.tar.gz 
...Installing pip...done. 
Traceback (most recent call last): 
    File "/usr/bin/virtualenv", line 3, in <module> 
    virtualenv.main() 
    File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 938, in main 
    never_download=options.never_download) 
    File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 1054, in create_environment 
    install_pip(py_executable, search_dirs=search_dirs, never_download=never_download) 
    File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 643, in install_pip 
    filter_stdout=_filter_setup) 
    File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 976, in call_subprocess 
    cwd=cwd, env=env) 
    File "/usr/lib/python2.7/subprocess.py", line 679, in __init__ 
    errread, errwrite) 
    File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child 
    raise child_exception 
OSError: [Errno 13] Permission denied 
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:34) 
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:417) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:332) 
    at org.apache.hadoop.mapred.Child$4.run(Child.java:268) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:396) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1438) 
    at org.apache.hadoop.mapred.Child.main(Child.java:262) 

Что может быть причиной этой ошибки?

Спасибо.

ответ

0

Благодарим за идею развертывания пакетов в кластере.

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

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