WebHCat 사용하기
WebHCat 사용하기 (Using WebHCat)
WebHCat은 HCatalog의 REST API로, 이전에는 Templeton이라고 불렸어요. 개발자는 HTTP 요청을 통해 애플리케이션 안에서 Hadoop MapReduce(YARN), Pig, Hive, HCatalog DDL에 접근할 수 있습니다.
출처: 문서
본문
Version information: HCatalog 프로젝트는 2013년 3월 26일 Apache incubator를 졸업하고 Hive 프로젝트에 합병됐어요. Hive 0.11.0은 HCatalog와 그 REST API인 WebHCat을 포함한 첫 릴리스입니다.
이 API가 사용하는 데이터와 코드는 HDFS에 유지됩니다. HCatalog DDL 명령은 요청 시 직접 실행되고, MapReduce·Pig·Hive 작업은 WebHCat(Templeton) 서버가 큐에 넣으며 진행 상황을 모니터링하거나 필요 시 중지할 수 있어요. 개발자는 Pig·Hive·MapReduce 결과가 들어가야 할 HDFS 위치를 지정합니다.
WebHCat 또는 Templeton? 하위 호환성을 위해 원래 이름인 Templeton이 일부 문맥에서 WebHCat을 가리키는 데 여전히 사용됩니다.
URL 형식 (URL Format)
HCatalog의 REST 리소스는 다음 URL 형식으로 접근합니다.
http://yourserver/templeton/v1/resource
yourserver는 서버 이름으로, resource는 HCatalog 리소스 이름으로 바꿔주세요. 예를 들어 서버가 실행 중인지 확인하려면 다음 URL에 접근할 수 있어요.
http://www.myserver.com/templeton/v1/status
보안 (Security)
현재 버전은 두 가지 유형의 보안을 지원합니다.
- 기본 보안(추가 인증 없음)
- Kerberos를 통한 인증
표준 파라미터 (Standard Parameters)
모든 REST 리소스는 인증을 돕기 위해 다음 파라미터를 받을 수 있어요.
- user.name: 사용자 이름(문자열). 기본 보안을 사용할 때만 유효합니다.
- SPNEGO credentials: Kerberos 인증으로 실행할 때 사용.
user.name 지정하기
user.name 파라미터는 POST 호출에서는 POST 파라미터의 일부이고, 다른 호출에서는 URL의 일부예요.
GET :table 명령에서 user.name 지정:
% curl -s 'http://localhost:50111/templeton/v1/ddl/database/default/table/my_table?user.name=ctdean'
POST :table 명령에서 user.name 지정:
% curl -s -d user.name=ctdean \
-d rename=test_table_2 \
'http://localhost:50111/templeton/v1/ddl/database/default/table/test_table'
보안 오류 응답 (Security Error Response)
필요할 때 user.name 파라미터가 제공되지 않으면 다음 오류가 반환됩니다.
{
"error":
"No user found.
Missing user.name parameter."
}
WebHDFS와 코드 푸시 (WebHDFS and Code Push)
HCatalog의 REST 리소스가 사용하는 데이터와 코드는 먼저 Hadoop에 배치되어야 해요. HDFS에 파일을 넣어야 할 때 편한 방법을 쓰면 됩니다. WebHDFS는 HDFS에 파일을 넣고 빼는 REST 인터페이스를 제공하므로 권장돼요.
오류 코드와 응답 (Error Codes and Responses)
서버는 다음 HTTP 상태 코드를 반환합니다.
| 코드 | 의미 |
|---|---|
| 200 OK | 성공! |
| 400 Bad Request | 요청이 유효하지 않음 |
| 401 Unauthorized | 자격 증명 누락 또는 올바르지 않음 |
| 404 Not Found | 요청한 URI가 유효하지 않거나 리소스가 존재하지 않음 |
| 500 Internal Server Error | 예상치 못한 결과 |
| 503 Busy, please retry | 서버가 바쁨 |
서버가 직접 반환하는 다른 데이터는 JSON 형식으로 반환돼요. JSON 응답은 1MB로 제한됩니다. 이 제한을 초과하는 응답은 직접 반환하는 대신 제공된 옵션을 사용해 HDFS에 저장해야 해요. HCatalog DDL 명령이 1MB보다 큰 결과를 반환할 수 있다면, 대신 해당 Hive 요청을 실행하는 것이 좋습니다.
로그 파일 (Log Files)
서버는 동작 중에 세 개의 로그 파일을 만듭니다.
templeton.log– log4j 로그. 애플리케이션이 쓰는 메인 로그입니다.templeton-console.log– 서버 시작 시 Java가 stdout으로 쓰는 내용."hcat.out"과 유사한 적은 양의 데이터예요.tempelton-console-error.log– Java가 stderr로 쓰는 내용."hcat.err"과 유사합니다.
tempelton-log4j.properties 파일에서 templeton.log.dir 변수로 이 로그들의 위치를 설정할 수 있어요. 이 log4j.properties 파일은 서버 시작 스크립트에서 설정됩니다.
프로젝트 이름 (Project Name)
HCatalog에 REST API를 추가한 원래 작업은 Templeton이라고 불렀어요. 하위 호환성을 위해 그 이름이 URL, 로그 파일 이름 등에 여전히 남아 있습니다. Templeton이라는 이름은 E. B. White의 아동 소설 '샬롯의 거미줄(Charlotte's Web)'의 등장인물에서 따온 것이에요. 소설의 주인공은 Wilbur라는 돼지인데, Templeton은 Charlotte가 거미줄을 짜면서 부탁한 심부름과 배달을 해주는 쥐입니다.
Navigation Links: Next: WebHCat Installation
더 알아보기 (Learn more)
WebHCat은 HTTP로 Hadoop의 여러 실행 엔진을 제어하는 관문 역할을 해요. user.name 인증과 표준 파라미터, 오류 코드를 익히면 REST API를 안정적으로 호출할 수 있습니다.