WebHCat Reference MapReduceStream

WebHCat Reference MapReduceStream

Hadoop streaming MapReduce 잡을 생성하고 큐에 넣는 WebHCat 리소스예요.

출처: 문서

본문

설명(Description)

Hadoop streaming MapReduce 잡을 생성하고 큐에 넣어요.

버전: Hive 0.13.0 이상

Hive 0.13.0부터 GET version/hadoop은 MapReduce 잡에 사용된 Hadoop 버전을 표시합니다.

URL

http://www.myserver.com/templeton/v1/mapreduce/streaming

매개변수(Parameters)

Name Description Required? Default
input Hadoop에서의 입력 데이터 위치 Required None
output 출력 데이터를 저장할 위치. 지정하지 않으면 WebHCat이 queue 리소스로 알아낼 수 있는 위치에 저장 Optional See description
mapper Hadoop에서의 매퍼 프로그램 위치 Required None
reducer Hadoop에서의 리듀서 프로그램 위치 Required None
file HDFS 파일을 분산 캐시(distributed cache)에 추가 Optional None
define define=NAME=VALUE 문법으로 Hadoop 구성 변수 설정 Optional None
cmdenv cmdenv=NAME=VALUE 문법으로 환경 변수 설정 Optional None
arg 프로그램 인자 설정 Optional None
statusdir WebHCat이 MapReduce 잡 상태를 쓸 디렉터리. 지정하면 완료 후 이 디렉터리를 삭제할 책임은 호출자에게 있음 Optional None
enablelog statusdir이 설정되고 enablelog가 "true"이면, 잡 종료 후 Hadoop 잡 구성과 로그를 $statusdir/logs 디렉터리로 수집. 완료·실패 시도 모두 기록. $statusdir/logs의 하위 디렉터리 구조: logs/$job_id ($job_id용 디렉터리), logs/$job_id/job.xml.html, logs/$job_id/$attempt_id ($attempt_id용 디렉터리), logs/$job_id/$attempt_id/stderr, logs/$job_id/$attempt_id/stdout, logs/$job_id/$attempt_id/syslog. 이 파라미터는 Hive 0.12.0에 도입됨 (HIVE-4531 참고) Hive 0.12.0+에서 Optional None
callback 잡 완료 시 호출할 URL 정의. 이 URL에 $jobId로 특정 잡 ID를 임베드할 수 있으며, 이 태그는 콜백 URL에서 이 잡의 job ID로 치환됨 Optional None

표준 매개변수도 지원됩니다.

결과(Results)

Name Description
id "job_201110132141_0001" 같은 형태의 잡 ID 문자열
info 잡이 큐잉됐을 때 반환된 정보를 담은 JSON 객체. 자세한 내용은 Hadoop 문서(Class TaskController) 참고

예제(Example)

코드·데이터 준비

% cat mydata/file01 mydata/file02
Hello World Bye World
Hello Hadoop Goodbye Hadoop

% hadoop fs -put mydata/ .

% hadoop fs -ls mydata
Found 2 items
-rw-r--r--   1 ctdean supergroup         23 2011-11-11 13:29 /user/ctdean/mydata/file01
-rw-r--r--   1 ctdean supergroup         28 2011-11-11 13:29 /user/ctdean/mydata/file02

Curl 명령

% curl -s -d input=mydata \
       -d output=mycounts \
       -d mapper=/bin/cat \
       -d reducer="/usr/bin/wc -w" \
       'http://localhost:50111/templeton/v1/mapreduce/streaming?user.name=ekoifman'

버전 정보

Hive 0.13.0 이전에는 user.name이 POST 요청에서 폼 파라미터로 지정됐어요: curl -d user.name=<user>.

Hive 0.13.0부터는 user.name을 쿼리 문자열로 지정해야 해요(위와 같이): 'http://.../templeton/v1/mapreduce/streaming?user.name=<name>'. 폼 파라미터로 user.name을 지정하는 것은 deprecated입니다.

JSON 출력

{
 "id": "job_201111111311_0008",
 "info": {
          "stdout": "packageJobJar: [] [/Users/ctdean/var/hadoop/hadoop-0.20.205.0/share/hadoop/contrib/streaming/hadoop-streaming-0.20.205.0.jar...
                    templeton-job-id:job_201111111311_0008
                    ",
          "stderr": "11/11/11 13:26:43 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments
                    11/11/11 13:26:43 INFO mapred.FileInputFormat: Total input paths to process : 2
                    ",
          "exitcode": 0
         }
}

예제 결과

% hadoop fs -ls mycounts
Found 3 items
-rw-r--r--   1 ctdean supergroup          0 2011-11-11 13:27 /user/ctdean/mycounts/_SUCCESS
drwxr-xr-x   - ctdean supergroup          0 2011-11-11 13:26 /user/ctdean/mycounts/_logs
-rw-r--r--   1 ctdean supergroup         10 2011-11-11 13:27 /user/ctdean/mycounts/part-00000

% hadoop fs -cat mycounts/part-00000
      8

매퍼로 /bin/cat, 리듀서로 /usr/bin/wc -w를 사용해 단어 개수를 세는 전형적인 streaming 예시예요.

더 알아보기 (Learn more)

standard MapReduce 잡을 만들려면 POST mapreduce/jar 리소스도 확인해 보세요. user.name은 Hive 0.13.0 이후 쿼리 문자열로 넘기는 걸 권장합니다.