23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
안녕하세요.
제가 소개 해드리고자 하는 Open Source는 Waggle Dance라고 하는 Apache Hive Metastore Federation 솔루션입니다.
Waggle Dance의 역할은, 여러 Hadoop Cluster의 Hive Metastore를 연계 해주는 단순한 기능을 하지만 사용자 입장에서 그 효과는 괄목할만합니다.
Waggle Dance라는 이름을 들어보셨거나 생소하신 분도 계실 것 같아서 설명을 드리면, 꿀벌의 8자 모양의 춤에 대한 양봉 및 행동학에서 사용되는 용어라고 합니다.
꿀벌이 다른 동료 꿀벌들에게 식량(꽃, 꿀)이 있는 위치를 공유할때, 춤의 각도(방향)와 지속 시간(거리)에 따른 행동 원리입니다.
Apache Hive 기반의 사용자에게 원격지의 Data Source를 안내하는 목적과 부합해서 Waggle Dance라는 이름을 사용하게 된 것이라고 합니다.
https://github.com/ExpediaGroup/waggle-dance
Waggle Dance는 여러 원격지의 Hive Metastore를 연계 해주는 솔루션입니다.
Hotels.com에서 개발하여, Open Source 커뮤니티에 기증하였으며, 현재 Expedia Group에서 관리하고 있습니다.
여러 Hive Metastore를 연결 해주는 Proxy 역할을 함
연계된 Hive Metastore 인스턴스에 대한 가상 Database 이름을 유지함
Release 3.8.0 부터 Table 단위 Mapping 지원 (현재 3.10.12)
단일 Hive Client에서, 연계된 Hive의 Table들에 대해 Describe, Query, Join 등을 할 수 있음
대규모의 분리된 Hadoop Cluster 환경에서 Dataset Silos와 같이 중복된 Data를 방지 하기 위한 활용
Hive Metastore를 참조하는 Apache Impala에서 Waggle Dance를 활용할 때 장점의 극대화
$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), 동적으로 설정된 설정을 덮어 씌울지 여부$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 및 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에 접근하는 방식
Data Batch, ETL 작업 전용
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을 사용 할 때 검토를 해보면 좋을 것 같습니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.