데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Open Source 기반 Hive Metastore Federation - Waggle Dance 소개

      나무 23.05.10
      1,063 14 0

      안녕하세요.

      제가 소개 해드리고자 하는 Open Source는 Waggle Dance라고 하는 Apache Hive Metastore Federation 솔루션입니다.

      Waggle Dance의 역할은, 여러 Hadoop Cluster의 Hive Metastore를 연계 해주는 단순한 기능을 하지만 사용자 입장에서 그 효과는 괄목할만합니다.


      Waggle Dance라는 이름을 들어보셨거나 생소하신 분도 계실 것 같아서 설명을 드리면, 꿀벌의 8자 모양의 춤에 대한 양봉 및 행동학에서 사용되는 용어라고 합니다.

      꿀벌이 다른 동료 꿀벌들에게 식량(꽃, 꿀)이 있는 위치를 공유할때, 춤의 각도(방향)와 지속 시간(거리)에 따른 행동 원리입니다.

      Apache Hive 기반의 사용자에게 원격지의 Data Source를 안내하는 목적과 부합해서 Waggle Dance라는 이름을 사용하게 된 것이라고 합니다.



      Waggle Dance


      https://github.com/ExpediaGroup/waggle-dance

      • Waggle Dance는 여러 원격지의 Hive Metastore를 연계 해주는 솔루션입니다.

      • Hotels.com에서 개발하여, Open Source 커뮤니티에 기증하였으며, 현재 Expedia Group에서 관리하고 있습니다.


      주요 기능 & 특징

      1. 여러 Hive Metastore를 연결 해주는 Proxy 역할을 함

      2. 연계된 Hive Metastore 인스턴스에 대한 가상 Database 이름을 유지함

      3. Release 3.8.0 부터 Table 단위 Mapping 지원 (현재 3.10.12)

      4. 단일 Hive Client에서, 연계된 Hive의 Table들에 대해 Describe, Query, Join 등을 할 수 있음

      5. 대규모의 분리된 Hadoop Cluster 환경에서 Dataset Silos와 같이 중복된 Data를 방지 하기 위한 활용

      6. Hive Metastore를 참조하는 Apache Impala에서 Waggle Dance를 활용할 때 장점의 극대화


      Waggle Dance, Flow Diagram



      Waggle-Dance Server 설정

      $WAGGLE_DANCE_HOME/conf/waggle-dance-server.yml

      verbose: true                              # log 상세(/var/log/waggle-dance)
      port: 9010                                 # Service Port
      database-resolution: PREFIXED              # MANUAL or PREFIXED 구분(Database 이름 중복을 예방하기 위해 PREFIXED 사용)
      yaml-storage:
        overwrite-config-on-shutdown: false      # true(default), 동적으로 설정된 설정을 덮어 씌울지 여부


      Hive Metastore 연계 정의

      $WAGGLE_DANCE_HOME/conf/waggle-dance-federation.yml

      primary-meta-store:                                     # Primary metastore
        access-control-type: READ_AND_WRITE_AND_CREATE_ON_DATABASE_WHITELIST
        name: primary                                         # unique name to identify this metastore
        remote-meta-store-uris: thrift://127.0.0.1:9083
        writable-database-white-list:
        - my_writable_db1
        - my_writable_db2
        - user_db_.*
        - ...
      federated-meta-stores:                                  # List of read only metastores to federate
      - remote-meta-store-uris: thrift://10.0.0.1:9083
        name: secondary
        metastore-tunnel:
          route: ec2-user@bastion-host -> hadoop@emr-master
          private-keys: /home/user/.ssh/bastion-key-pair.pem,/home/user/.ssh/emr-key-pair.pem
          known-hosts: /home/user/.ssh/known_hosts
        hive-metastore-filter-hook: filter.hook.class
        mapped-databases:
        - prod_db1
        - prod_db2
        - dev_group_1.*
        mapped-tables:
        - database: prod_db1
          mapped-tables:
          - tbl1
          - tbl_.*
        - database: prod_db2
          mapped-tables:
          - tbl2
      - ...


      활용 단계 및 범위

      Hive Metastore 정보 설정

      Hive 및 Impala에서 참조하는 hive-site.xml 파일에 hive.metastore.uris properties 추가

      hive-site.xml

      <property>
        <name>hive.metastore.uris</name>
        <value>thrift://fe01.waggle-dance.com:9010,thrift://fe02.waggle-dance:9010</value>
      </property> 

      ※ FailOver 관점에서 Waggle Dance 서비스를 2개의 분리된 Server에 Mirroring으로 구성 하여, hive.metastore.uris 에 추가 해줌

      • 기본 첫번째 thrift를 참조하고, 첫번째 접근이 되지 않을경우 두번째 thrift에 접근하는 방식


      활용 범위

      Hive Service (MapReduce)
      • Data Batch, ETL 작업 전용

      Impala Service (In-Memory 기반 Query)
      • Local 및 Remote Hadoop Cluster 간의 Hive Table Query 가능

      • Local 및 Remote Kudu Cluster간의 Kudu Table Query 가능

      • Hive Table과 Kudu Table간의 Join 가능


      맺음 글

      제가 하고있는 프로젝트에서는 2020년경부터 Waggle Dance를 활용한 Hive Metastore Federation 환경에서 서비스를 운영 하고 있습니다.

      Waggle Dance를 활용할 때의 장점으로는 심플한 기능 만큼이나 손쉬운 환경 구성과 설정, 그리고 안정적인 운영인 것 같습니다.

      그리고, Dataset Silos를 해소할 수 있는 환경과 여러 독립된 Cluster의 Table간의 Join을 하나의 Query로 실행할 수 있는 기반이 된다는 점이 가장 큰 장점인 것 같습니다.

      소규모 Cluster 환경에서는 Waggle Dance의 활용 가치가 없을 수도 있습니다.

      여러 Cluster 환경에서 Apache Impala와 같은 MPP(Massively Parallel Processing) SQL Query engine을 사용 할 때 검토를 해보면 좋을 것 같습니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      나무 님의 최신 블로그

      더보기
      동영상 기고하기