2013-12-15 5 views
1

Я пытаюсь запустить скрипт python с помощью MRJob в кластере, в котором у меня нет прав администратора, и я получил ошибку, вставленную ниже. Я думаю, что дело в том, что задание пытается записать промежуточные файлы в файл default/tmp .... dir, и поскольку это защищенный каталог, к которому у меня нет прав на запись, задание получает ошибку и выходы. Я хотел бы знать, как я могу изменить это расположение каталога вывода tmp в каком-то месте в примере моей локальной файловой системы: /home/myusername/some_path_in_my_local_filesystem_on_the_cluster, в основном я хотел бы знать, какие дополнительные параметры мне нужно будет передать, чтобы изменить промежуточное местоположение вывода из/tmp/... в какое-то местное место, где у меня есть разрешение на запись.Изменение промежуточного местоположения вывода Mapreduce с помощью MRJob

Я призываю мой сценарий, как:

python myscript.py input.txt -r hadoop > output.txt 

Погрешность:

no configs found; falling back on auto-configuration 
    no configs found; falling back on auto-configuration 
    creating tmp directory /tmp/13435.1.all.q/mr_word_freq_count.myusername.20131215.004905.274232 
    writing wrapper script to /tmp/13435.1.all.q/mr_word_freq_count.myusername.20131215.004905.274232/setup-wrapper.sh 
    STDERR: mkdir: org.apache.hadoop.security.AccessControlException: Permission denied: user=myusername, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x 
    Traceback (most recent call last): 
     File "/home/myusername/privatemodules/python/examples/mr_word_freq_count.py", line 37, in <module> 
     MRWordFreqCount.run() 
     File "/home/myusername/.local/lib/python2.7/site-packages/mrjob/job.py", line 500, in run 
     mr_job.execute() 
     File "/home/myusername/.local/lib/python2.7/site-packages/mrjob/job.py", line 518, in execute 
     super(MRJob, self).execute() 
     File "/home/myusername/.local/lib/python2.7/site-packages/mrjob/launch.py", line 146, in execute 
     self.run_job() 
     File "/home/myusername/.local/lib/python2.7/site-packages/mrjob/launch.py", line 207, in run_job 
     runner.run() 
     File "/home/myusername/.local/lib/python2.7/site-packages/mrjob/runner.py", line 458, in run 
     self._run() 
     File "/home/myusername/.local/lib/python2.7/site-packages/mrjob/hadoop.py", line 236, in _run 
     self._upload_local_files_to_hdfs() 
     File "/home/myusername/.local/lib/python2.7/site-packages/mrjob/hadoop.py", line 263, in _upload_local_files_to_hdfs 
     self._mkdir_on_hdfs(self._upload_mgr.prefix) 
+0

Are вы уверены, что правильно используете работу hadoop, потому что afaik, это не то, как вы ссылаетесь на работу потокового хаоса. – aa8y

ответ

0

Используете mrjob как "локальный" работы, или пытается запустить его на кластере Hadoop?

Если вы на самом деле пытаетесь использовать его на Hadoop, вы можете контролировать "нуля" HDFS место (где mrjob будет хранить промежуточные файлы), используя --Base-TMP-Dir флаг:

python mr.py -r hadoop -o hdfs:///user/you/output_dir --base-tmp-dir hdfs:///user/you/tmp hdfs:///user/you/data.txt