2013-10-04 2 views
2

저는 python mrjob을 사용하여 mapreduce 프로그램을 배우려고합니다.파이썬에서 mapreduce를 사용하지 못했습니다.

dumping stdin to local file /tmp/pyes_mrjob.testuser.20131004.103251.998597/STDIN 
Making directory hdfs:///user/testuser/tmp/mrjob/pyes_mrjob.user.20131004.103251.998597/files/ on HDFS 
> /usr/lib/hadoop-mapreduce/bin/hadoop fs -mkdir hdfs:///user/testuser/tmp/mrjob/pyes_mrjob.testuser.20131004.103251.998597/files/ 
Traceback (most recent call last): 
    File "pyes_mrjob.py", line 34, in <module> 
    MRWordFrequencyCount.run() 
    File "/usr/local/lib/python2.7/dist-packages/mrjob/job.py", line 500, in run 
    mr_job.execute() 
    File "/usr/local/lib/python2.7/dist-packages/mrjob/job.py", line 518, in execute 
    super(MRJob, self).execute() 
    File "/usr/local/lib/python2.7/dist-packages/mrjob/launch.py", line 146, in execute 
    self.run_job() 
    File "/usr/local/lib/python2.7/dist-packages/mrjob/launch.py", line 207, in run_job 
    runner.run() 
    File "/usr/local/lib/python2.7/dist-packages/mrjob/runner.py", line 458, in run 
    self._run() 
    File "/usr/local/lib/python2.7/dist-packages/mrjob/hadoop.py", line 236, in _run 
    self._upload_local_files_to_hdfs() 
    File "/usr/local/lib/python2.7/dist-packages/mrjob/hadoop.py", line 263, in _upload_local_files_to_hdfs 
    self._mkdir_on_hdfs(self._upload_mgr.prefix) 
    File "/usr/local/lib/python2.7/dist-packages/mrjob/hadoop.py", line 271, in _mkdir_on_hdfs 
    self.invoke_hadoop(['fs', '-mkdir', path]) 
    File "/usr/local/lib/python2.7/dist-packages/mrjob/fs/hadoop.py", line 81, in invoke_hadoop 
    proc = Popen(args, stdout=PIPE, stderr=PIPE) 
    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 2] No such file or directory 

내가 명령을 실행 수동으로 미세 그곳에서 일하는하지만 난 내 프로그램을 실행하려고 할 때 그 작동하지 :

역 추적 : 나는 다음과 같은 오류를 얻고있다. 학습을 시작한 이래로 누군가 내가 선택할 수있는 라이브러리를 제안 할 수 있습니다. 일부 블로그에 따르면 somelibraries는 좋은 문서를 가지고 있으며 일부 라이브러리는 더 나은 성능을 가지고 있습니다 ... 나는 더 오래된 것으로 보이는 게시물 아래로왔다. http://blog.cloudera.com/blog/2013/01/a-guide-to-python-frameworks-for-hadoop/

그러나 많은 라이브러리가 최근 업데이트를 받았다. 그래서 어떤 사람들은 저와 함께 시작할 수있는 라이브러리를 제안 할 수 있습니다 ..

+0

이 오류가 발생하는 게시 코드/명령이 유용합니다. – kgu87

+0

mrjob 문서 예제를 사용하고 있습니다. – user2695817

답변

1

HADOOP_HOME을 "/ usr/lib/hadoop-mapreduce"로 설정 한 것 같습니다. 그러나 이것은 잘못되어 "/ usr/lib/hadoop"으로 설정되어야합니다. 당신은 하둡 - streaming.jar을 찾을 수 없습니다 없다는 오류가 발생하는 경우 다음과 같이

또한,이 병에 '은/usr/lib 디렉토리/하둡 "의 심볼릭 링크를 만듭니다

sudo ln -s /usr/lib/hadoop-mapreduce/hadoop-streaming.jar /usr/lib/hadoop 
5

를 내가 이 문제는 mrjob이 "hadoop fs -mkdir"을 호출하는 방법으로 인해 발생합니다. 대상 디렉토리의 부모 디렉토리가 존재하지 않으면 -mkdir이 실패합니다. 즉, "hadoop fs -mkdir -p [path]"를 사용해야한다는 의미입니다.

self.invoke_hadoop(['fs', '-mkdir', path]) 

: 궁극적으로, 당신이 수동으로 mrjob 라이브러리를 수정해야합니다 (광산은 라인 (271)에 /usr/lib/python2.6/site-packages/mrjob)/hadoop.py이다 mrjob의 경로은 설치]를 ~

self.invoke_hadoop(['fs', '-mkdir', '-p', path]) 

행운을 빌어 요!

+0

https://github.com/Yelp/mrjob/issues/850 – dre

+0

언제이 문제가 해결 되나요? 2014 년 11 월에이 문제가 계속 발생합니다. – nottinhill