Cloud Hadoop에서 Hive Query 실행하기

목차
시작하기 전에
아키텍쳐 예시
Hive 테이블 만들기
Hive 쿼리 실행
클러스터 종료

이 페이지에서는 Cloud Hadoop 클러스터를 만들고, Object Storage에 데이터를 저장한 다음 Hue와 Beeline을 통해 간단한 Hive Query를 실행하는 방법을 보여줍니다.

시작하기 전에

다음과 같은 단계로 Cloud Hadoop을 설정하세요.

  1. Object Storage 버킷 생성하기
  2. Cloud Hadoop 클러스터 생성하기

아키텍쳐 예시

계속 보관해야 하는 데이터는 Object Storage 버킷에 저장하고, Cloud Hadoop 클러스터는 필요할 때만 사용합니다.

Hive Query를 실행하면 아래와 같은 단계로 쿼리가 실행됩니다.

  1. Hive Client에서 Cloud Hadoop 클러스터에 있는 Hive 서버로 쿼리를 제출합니다.
  2. 서버는 쿼리를 처리하고 마스터 서버에 설치된 Hive Metadata 데이터베이스(MySQL)에 메타데이터를 요청합니다.
  3. 서버는 Object Storage의 버킷 안에 저장된 데이터를 로드합니다.
  4. 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.ncloud.com
fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
fs.s3a.secret.key=API-SECRET-KEY
  1. 버킷에 샘플 데이터 파일 업로드

    샘플 데이터를 다운로드한 후 데이터 셋 파일을 Object Storage 버킷에 업로드합니다.

    제공되는 샘플 데이터는 Lahman's Basebasll Database 2012 버전의 일부로, 데이터의 모든 저작권은 Sean Lahman에게 있습니다.

    Hive에서 데이터 파일의 location을 폴더 단위로 읽기 때문에, 폴더 하나에 데이터 셋 하나를 저장하는 것을 권장합니다.

  2. Hive External Table 생성

    Ambari Hive View2.0 또는 Hue Hive 편집기에서 아래 구문으로 Hive External Table을 생성합니다. 여기서 location은 데이터 셋 파일이 저장된 bucket path를 지정하면 됩니다.

     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 쿼리를 실행할 수 있습니다. 이 섹션에서는 다음과 같은 도구를 사용하여 쿼리를 수행하는 방법을 알아봅니다.

  • Hue의 Hive Interpreter
  • Hive Clients 중 SQLLine CLI에 기반한 Beeline

Hue의 Hive Interpreter

Hue에 로그인한 후, Hive Interpreter에서 간단한 HiveQL 쿼리를 사용하여 S3에 업로드한 파일이 Hive 테이블과 연결되었는지 확인합니다.

SELECT * FROM allstarfull LIMIT 10;

결과는 다음과 같습니다.

Beeline

  1. Hive Clients가 설치된 호스트에 직접 접속해서 Beeline 세션을 시작합니다.

     beeline -u "jdbc:hive2://[HIVE-SERVER2-SERVER]:10000" -n hive
    

    호스트 접속은 노드 직접접속 가이드를 참조하세요.

  2. 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 버킷에 지정한 위치(디렉토리)가 존재하는지 확인합니다.

  3. 결과가 정상적으로 저장되었는지 확인합니다.

     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
     ...
    

클러스터 종료

작업이 실행되고 있지 않을 때 비용이 나가는 것을 막으려면, Cloud Hadoop 클러스터를 종료합니다. 더 이상 필요하지 않은 데이터 셋 파일은 버킷에서 삭제하거나, 버킷 자체를 삭제합니다.

삭제가 완료된 파일 또는 버킷은 복구할 수 없습니다.

Cloud Hadoop 클러스터 종료

Cloud Hadoop 클러스터를 종료하면, 노드의 로컬 파일 시스템이나 HDFS 안에 저장된 파일은 모두 유실됩니다. 필요한 파일은 Object Stroage 버킷에 복제 등, 별도 복제를 해두어야 합니다.

Cloud Hadoop 콘솔에서 종료할 클러스터를 선택한 후 삭제를 클릭합니다.

Object Stroage 파일 또는 버킷 삭제하기

Object Storage 콘솔에서 삭제할 파일을 선택한 후 편집 > 삭제하기를 클릭합니다.

버킷을 삭제하려면, 버킷 우측 버튼을 클릭해서 버킷 삭제를 클릭합니다.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...