2014-09-09 3 views
0

에 대한 옵션을 설정하려면 :, 어떻게 표준 하둡 작업으로 아주 간단한 단어 수를 실행하는 MRJob을 사용하고 tempory 출력 디렉토리

python word_count.py -r hadoop hdfs:///path-to-my-data 

는 만들 수 없다는이 인쇄 오류 임시 출력을위한 임시 디렉토리 :

STDERR: mkdir: Incomplete HDFS URI, no host: hdfs:///user/path-to-tmp-dir 
... 
... 
subprocess.CalledProcessError: Command '['/opt/mapr/hadoop/hadoop-0.20.2/bin/hadoop', 'fs', '-mkdir', 'hdfs:///user/ 

MRJob에서 기본적으로 원하는 디렉토리를 만들 수 없다고 가정합니다. 명령 줄을 통해 MRJob에 옵션을 전달할 수 있습니까? 지금까지 찾은 유일한 옵션은 base_tmp_dir입니다. 설명에서 "로컬 temp dirs를 넣는 경로"를 언급했습니다. 여기서 "로컬"은 임시 출력 디렉토리가 hdfs에 있어야하기 때문에 내가 찾고있는 디렉토리가 아닙니다. 그럼에도 불구하고, 나는 그것을 시도 (주는 의미 :

python word_count.py --base-tmp-dir=./tmp/ data.txt 

또는

python word_count.py -r hadoop --base-tmp-dir=hdfs:///some-path hdfs:///path-to-data 

을하지만, 그런 옵션이 없습니다 불평 MRJob으로 실패

word_count.py: error: no such option: --base-tmp-dir 

word_count.py 표준이가 하나는 here입니다. MRJobj에 대한 몇 가지 필수 지식이 누락되었거나 다시 스트림 스트리밍으로 돌아 가야 할 수도 있습니다.

답변

1

mrjob은 HDFS와 상호 작용할 때 hadoop 바이너리를 호출합니다. hadoop 명령은 hdfs:///some-path 같은 URI를 hdfs://your-namenode:9000/some-path 같은 전체 호스트 (뭔가를 필요로하지 않도록 네임 노드가 네트워크에있는 위치를 알 필요가있다. 명령 수치를 네임 노드가 구성 XML 파일을 읽어이다.

있다 conflicting reports on the internet에 대한 which environment variable 많이 설정,하지만 내 환경에서 mrjob와 아파치 하둡 2.4.1의 최신 버전을 실행, 나는 HADOOP_PREFIX 환경 변수를 설정했다 할 명령과 함께이을 설정할 수 있습니다.

export HADOOP_PREFIX=/path/to/your/hadoop

이것이 설정되면이 사실을 알게됩니다.

ls $HADOOP_PREFIX/etc/hadoop

을하고이 구성 XML 파일을 보여줍니다 : 올바르게 설정 s는 다음과 같이 입력합니다.

이제 명령을 실행하십시오. 그것은 작동해야합니다.