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 이후 쿼리 문자열로 넘기는 걸 권장합니다.