Presto로 Hive Warehouse 데이터 분석하기

목차
Reference Architecture
Configuration
Querying Hive Tables

이 페이지에서는 Presto의 Hive Connector를 사용하여, Hive data warehouse에 저장한 데이터를 분석하는 방법을 설명합니다.

Reference Architecture

Presto는 Interactive Query 용도, Hive는 Batch Query 위주로 사용합니다. Oozie, Airflow와 같은 애플리케이션을 사용해서 배치 작업을 스케줄링할 수 있습니다.

Presto는 Connector를 사용해서 다양한 데이터 소스에 접근할 수 있을 뿐만 아니라, 하나의 쿼리에서 여러 데이터 소스에 질의할 수 있습니다. Hive Connector를 사용하면, Presto는 Hive metadata와 warehouse에 저장된 데이터만 사용하고 HiveQL이나 Hive의 쿼리 실행 엔진(MapReduce)는 사용하지 않습니다.

Configuration

Ambari Server의 Presto > Configs > Advanced connectors.properties에서 connector 관련 설정을 변경할 수 있습니다. connectors.to.add에는 추가할 connector, connectors.to.delete에는 삭제할 connector를 입력합니다.

Presto는 사용할 Connector 개체마다 /etc/presto/catalog 아래, config 파일(<connector-name>.properties)이 필요합니다. 따라서 여러 개의 Hive 클러스터를 Presto와 연동하려면, 그 클러스터마다 각각 config 파일이 필요합니다.

connector-name-1.properties, connector-name-2.properties 파일을 만들려면, 다음과 같이 connectors.to.add에 설정하면 됩니다.

{"connector-name-1":["key1=value1",
        "key2=value2",
        "key3=value3"],
"connector-name-2": ["key1=value1"]
        }

여기서는 Hive Connector를 추가해야 하므로, connectors.to.add에 아래와 같이 입력합니다. 서비스를 재시작해서 새로운 구성을 반영합니다.

{"hive":["connector.name=hive-hadoop2",
        "hive.metastore.uri=thrift://<METASTORE-HOST-IP>:9083",
        "hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml",
        "hive.s3.use-instance-credentials=false",
        "hive.s3.aws-access-key=<API-ACCESS-KEY>",
        "hive.s3.aws-secret-key=<API-SECRET-KEY>",
        "hive.s3.endpoint=https://kr.object.ncloudstorage.com"]
        }

참고 Hadoop 구성파일(/etc/hadoop/conf/core-site.xml, /etc/hadoop/conf/hdfs-site.xml)이 Presto를 실행하는 노드에 존재해야 합니다.

기타 configuration 항목은 Presto Documentation에서 확인할 수 있습니다.

Querying Hive Tables

  1. Presto CLI 실행

    Presto CLI 컴포넌트가 설치된 노드에 접속해서 아래와 같이 CLI를 실행합니다.

     /usr/lib/presto/bin/presto-cli --server <COORDINATOR-HOST-IP>:8285 --catalog hive --schema default
    
  2. 쿼리 실행

    Hive의 default 데이터베이스 안에 있는 테이블을 대상으로 쿼리를 수행할 수 있습니다.

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

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

    처리중...