- 인쇄
- PDF
Hive 사용
- 인쇄
- PDF
Hive 사용에서는 Object Storage 버킷에 데이터를 저장한 후, Hue와 Beeline을 통해 간단한 Hive 쿼리를 실행하는 방법을 설명합니다.
아키텍처 예시
계속 보관해야 하는 데이터는 Object Storage 버킷에 저장하고 Cloud Hadoop 클러스터는 필요할 때만 사용합니다.
Hive 쿼리 실행 시 다음 단계로 쿼리가 실행됩니다.
- Hive 클라이언트에서 Cloud Hadoop 클러스터에 있는 Hive 서버로 쿼리 제출
- 서버는 쿼리를 처리하고, 마스터 서버에 설치된 Hive 메타데이터 DB(MySQL)에 메타데이터를 요청
- 서버는 Object Storage의 버킷 안에 저장된 데이터를 로드
- Hive 서버는 클라이언트로 결과를 반환
Hive 테이블 생성
예시) 네이버 클라우드 플랫폼의 Object Storage 버킷에 샘플 데이터 파일을 업로드한 후 Hive에서 이 데이터를 사용할 수 있도록 Hive External Table을 생성
Object Storage 버킷에 있는 데이터를 사용하기 위해서 hive-site.xml
에 다음과 같은 구성이 필요합니다.
fs.s3a.access.key=<API-ACCESS-KEY>
fs.s3a.connection.ssl.enabled=false
fs.s3a.endpoint=http://kr.objectstorage.fin-ncloud.com
fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
fs.s3a.secret.key=<API-SECRET-KEY>
Hive 테이블 생성을 생성하는 방법은 다음과 같습니다.
샘플 데이터를 다운로드해 주십시오. 압축을 해제한 후
AllstarFull.csv
파일을 Object Storage 버킷에 업로드해 주십시오.- Hive에서 데이터 파일의 location을 폴더 단위로 읽기 때문에, 폴더 하나에 데이터 하나를 저장해 주십시오.(권장)
참고제공되는 샘플 데이터는 Lahman's Baseball Database 2012 버전의 일부로, 데이터의 모든 저작권은 Sean Lahman에게 있습니다.
Ambari Hive View2.0 또는 Hue Hive 편집기에서 아래 구문으로 Hive External Table을 생성해 주십시오.
location
: 데이터 셋 파일이 저장된 버킷 경로를 지정
DROP table allstarfull; CREATE external TABLE if not EXISTS `allstarfull` ( `playerID` VARCHAR(20), `yearID` INT, `gameNum` INT, `gameID` VARCHAR(30), `teamID` VARCHAR(4), `lgID` VARCHAR(4), `GP` INT, `startingPos` INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' location 's3a://deepdrive-hue/input/lahman2012/allstarfull';
Hive 쿼리 실행
Cloud Hadoop에서 제공하는 여러 도구를 사용해서 Hive 쿼리를 실행할 수 있습니다. 이 가이드에서는 다음 <Hive 쿼리 실행 툴 예> 로 Hive 쿼리를 실행하는 방법을 설명합니다.
- <Hive 쿼리 실행 툴 예>
- Hue의 Hive 인터프리터
- Hive 클라이언트 중 SQLLine CLI에 기반한 Beeline
Hue의 Hive 인터프리터
Hue의 Hive 인터프리터를 이용하여 Hive 쿼리를 실행하는 방법은 다음과 같습니다.
Hue에 로그인한 후 Hive 인터프리터에서 HiveQL 쿼리를 실행해 주십시오.
SELECT * FROM allstarfull LIMIT 10;
결과 화면을 통해 s3에 업로드한 파일이 Hive 테이블과 연결되었는지 확인해 주십시오.
Beeline
Beeline을 이용하여 Hive 쿼리를 실행하는 방법은 다음과 같습니다.
Hive 클라이언트가 설치된 호스트에 SSH로 직접 접속한 후, 다음 명령어로 Beeline 세션을 시작해 주십시오.
- [HIVE-SERVER2-SERVER] 에는 마스터 노드(m-00x) 호스트명을 입력해 주십시오.
beeline -u "jdbc:hive2://[HIVE-SERVER2-SERVER]:10000" -n hive
참고호스트 접속 방법은 SSH로 클러스터 노드 접속 가이드를 참고해 주십시오.
Beeline 프롬프트가 표시되면 HiveQL 쿼리를 실행해 주십시오.
- 아래 쿼리는 결과를 출력하지 않고, Object Storage에 저장합니다.
beeline> INSERT OVERWRITE DIRECTORY 's3a://deepdrive-hue/output/' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' SELECT playerid, sum(gp) from allstarfull group by playerid;
참고쿼리를 저장하기 전에 Object Storage 버킷에 지정한 위치(디렉터리)가 존재하는지 확인해 주십시오.
다음 명령어를 실행하여 결과가 정상적으로 저장되었는지 확인해 주십시오.
hadoop fs -cat s3a://deepdrive-hue/output/000000_0
결과는 다음과 같습니다.
aaronha01,24 aasedo01,1 abreubo01,2 adamsac01,0 adcocjo01,2 ageeto01,2 aguilri01,3 aguirha01,1 alexado01,0 alfoned01,1 allendi01,6 allenjo02,1 alleyge01,1 allisbo01,2 alomaro01,12 ...
Hue의 LLAP 활성화
Hue의 편집기 목록에서 LLAP를 활성화하는 방법은 다음과 같습니다.
Cloud Hadoop 콘솔에서 생성한 클러스터를 선택한 후, [Application별 보기] 를 통해 Ambari Web UI에 접속할 수 있습니다. 자세한 내용은 Ambari UI 가이드를 참고해 주십시오.
- Ambari에 접속 후 [Hive] > [CONFIGS] > [SETTINGS] 에서 Hive LLAP를 활성화해 주십시오. 설정을 추가한 뒤 [SAVE] 버튼을 눌러 저장하고 [RESTART] 버튼을 눌러 재시작해 주십시오.
- [Hue] > [CONFIGS] > [Hue Service Module] 에서 Hue Hive LLAP Module를 활성화해 주십시오. 설정을 추가한 뒤 [SAVE] 버튼을 눌러 저장하고 [RESTART] 버튼을 눌러 재시작해 주십시오.
- Hue의 편집기 목록에서 LLAP 에디터가 활성화된 것을 확인하실 수 있습니다.