20P by xguru 2020-11-23 | favorite | 댓글 2개

Nemo, Amundsen, DataHub 등이 필요한 이유와 제공하는 기능들을 정리
"왜 DDP가 필요한가요? 그게 무슨 일을 하죠?"
ㅤ→ 조직 내에서 필요한 데이터가 어디 있는지 빠르게 검색하고, 어떤 건지 이해하고, 사용 방법을 배우게 도와 주는 플랫폼

[ 데이터를 찾을 때 주로 묻는 질문들 ]
ㅤ→ "_____" 데이터는 어디서 찾을수 있나요? : 어떤 단어로 검색해야할지도 모를 때도 있음. click, page view 등의 단어로 테이블/컬럼명을 검색
ㅤ→ 이 데이터는 뭔가요? : 이 테이블은 어떤 컬럼을 가지고 있나요, 어떤 데이터형이고, 이 값들이 뭘 의미하나요 ?
ㅤ→ 누구한테 접근 권한을 요청해야 하죠 ? : 데이터의 오너십과 권한 정보 역시 메타데이터의 일부가 되어야 함
ㅤ→ 이 데이터는 어떻게 생성 되었나요? 신뢰할수 있는 건가요? : 누가 만들고, 어떤 경로로 생성되었나요? 분석가가 월간으로 수작업한건가요? 회사내에서 얼마나 쓰이죠? 이 데이터의 계보는 ?
ㅤ→ 이 데이터를 어떻게 사용해야 하죠? : 어떤 컬럼들이 관련이 있나요? 어떤 테이블이랑 조인해야 하죠? 데이터를 정리하려면 어떤 필터를 써야하죠? 이 테이블을 주로 사용 하는 사람은 누군가요? (그 사람에게 물어 보면 되니까) 어떤 컬럼을 주로 사용하죠 ?
ㅤ→ 이 데이터가 얼마나다 리프레시 되나요? : 종종 지연된다면 얼마나 자주 일어나나요? 데이터의 기간은 얼마나 되나요? 몇주밖에 되지 않았으면 머신러닝에 적합하지 않을거 같아요.

[ 데이터를 찾고, 이해하고, 사용하기 위한 기능들 ]

- 데이터를 검색 또는 더 똑똑한 방법들로 찾기
ㅤ→ 원하는 데이터를 찾기위한 기본 방법은 컬럼명,테이블과 컬럼 설명, 사용자가 입력한 설명이나 코멘트 등의 메타데이터를 ElasticSearch 에서 검색
ㅤ→ 많은 검색결과가 있다면 이에 대한 우선순위를 매기는게 필요함. Lyft와 Spotify의 경우는 테이블이 얼마나 많이 사용되는가로 순위를 결정. 즉, 쿼리로그를 파싱하여 테이블 사용량을 ElasticSearch의 랭킹정보로 넣음.
ㅤ→ Facebook 의 Nemo는 이걸 더 확장. 검색어를 spaCy로 자연어 파싱, 소셜그래프 검색에 사용하는 Unicorn 으로 kNN기반 스코어링등을 통해서 랭킹을 결정
ㅤ→ 또 다른 방법은 추천을 통한 것. 조직과 팀내에서 가장 많이 접근하고 사용하는 데이터를 추천

- 데이터를 스키마, 미리보기, 통계, 계보(Lineage)로 이해하기
ㅤ→ 테이블을 이해하는 기본 정보는 데이터 스키마 : 컬럼명, 데이터 타입, 설명(Description)
ㅤ→ 사용자가 읽기 권한이 있다면 데이터의 미리보기(100줄 정도)를 제공 가능
ㅤ→ 미리 계산된 컬럼 단위의 통계도 제공 : 컬럼별 Row수, Null인 Row수, 최대/최소/평균/중간값/표준편차, 고유한 Row수, 날짜 컬럼이라면 데이터의 전체 기간 범위
ㅤ→ 데이터 계보를 제공해서 앞뒤 의존성 관계도 확인 : ETL 작업(Airflow 로 스케줄링 되는)의 경우 스케줄/지연 여부등을 확인할수 있음.

- 다른 사용자의 이용형태를 통해서 데이터 사용법을 배우기
ㅤ→ 테이블을 찾고 나면, 어떻게 테이블을 이용하도록 도와줄수 있을까 ? 간단한 방법은 그 테이블과 관련된 사람들을 보여주는 것
ㅤ→ 데이터 소유자는 권한을 부여해 줄수도 있고, 자주 사용하는 사람들은 데이터에 대한 소개나 특이점을 알려줄 수 있음 : Amundsen 과 DataHub는 테이블에 사람을 엔티티로 연결하는게 가능
ㅤ→ 하지만 이렇게 그 데이터를 잘 아는 전문가만을 활용하는건 병목현상이 생길수 있으니, 추가적인 메타데이터를 연결해주는게 더 Scalable 한 방식
ㅤ→ 사용자가 가장 관련성이 높은 컬럼을 찾을수 있도록, 각 열의 사용통계를 제공하는게 가능.
ㅤ→ 또한 해당 테이블과 조인할 테이블이 어떤건지 알기 위해, 주로 조인되는 테이블 목록과 조인하는 열들을 제공하면 편리. 이런 데이터들은 쿼리 로그 파싱을 필요로 함
ㅤ→ 데이터 사용에 대한 더 자세한 정보를 제공하기 위해서는 해당 테이블에 대한 최근 쿼리를 제공하는게 가능하고, 이를 통해서 실제로 어떤 데이터를 필터링 하는지를 알 수 있음.

ㅤ→ 데이터 계보(Lineage)도 유용. 현재 테이블을 사용하는 다운스트림 테이블에 대해 알수 있고, 그걸 생성하는 쿼리도 보여줌. 이를 통해서 테이블이 다른 유스케이스에 어떻게 이용되는지를 확인 가능
ㅤ→ 이렇게 알게된 다운스트림 테이블이 내 목적과 일치할 경우 그걸 이용하면 계산/저장 비용을 줄일 수 있게됨.
ㅤ→ Twitter 의 Data Access Layer , Uber의 Databook, Netflix 의 Metacat 등이 Lineage를 지원

ㅤ→ 데이터를 실제로 사용하기 전에, 얼마나 자주 업데이트 되는지도 알고 싶어함. 데이터가 어떤 시간단위로(일/시 등) 파티션 되어있는지 명시하는 것이 도움이 됨.
ㅤ→ DDP는 Airflow 같은 플랫폼과 연계해서, 스케줄링된 ETL 작업들을 조사하고, 얼마나 걸리는지 등을 볼 수 있음.

[ 각 DDP 들의 상위 비교 ]
ㅤ→ 모두 ElasticSearch 또는 Solr 기반의 free-text 검색 지원. Amundsen 과 Lexikon 은 홈페이지에서 추천 기능을 제공
ㅤ→ 모두 기본 테이블 정보(스키마,설명)는 표시. Amundsen 과 Databook 은 데이터 미리보기와 컬럼통계를 제공
ㅤ→ 대부분의 플랫폼이 데이터 Lineage 기능은 내장. Amundsend이 현재는 지원안하는데 2020 로드맵에 있음
ㅤ→ 5개의 플랫폼이 오픈소스로 공개

[ 오픈소스 DDP들 비교 ]
- DataHub (LinkedIn) : https://github.com/linkedin/datahub
ㅤ→ 2020년 2월에 공개
ㅤ→ 검색, 테이블스키마, 오너십, 계보 기능 지원
ㅤ→ Dataset, User, Group 세개의 엔티티 지원. Schemas/Jobs/Metrics/Dashboards 등의 엔티티 추가 예정
ㅤ→ Hive, Kafka, RDB 메타데이터 지원 ( 내부에선 더 많이 지원하며, 더 공개될 수도 있음 )
ㅤ→ Expedia, TypeForm 등이 채택했으며 MS,Morgan Stanley, Orange Telecom, ThoughtWorks 등도 POC 중

- Amundsen (Lyft) : https://github.com/amundsen-io/amundsen
ㅤ→ 2019년 10월에 공개
ㅤ→ 검색, 추천, 미리보기/컬럼통계/소유자/주사용자 들이 잘 표현된 테이블 상세 페이지 지원. 계보기능은 없지만 추가예정
ㅤ→ Data Quality System 과의 연동도 제공 예정 (아마도 Great Expectations - https://greatexpectations.io/)
ㅤ→ 훌륭한 커뮤니티가 있음 : BigQuery/Redshift/Apache Atlas 등의 연동등을 개발해서 기여함
ㅤ→ 15종 이상의 데이터 소스( Redshift, Cassandra, Hive, Snowflake 및 각종 RDB), Tableau,Redash, Mode Analytics 대시보드, Airflow 등과 연동을 지원
ㅤ→ 문서화도 잘 되어있고, Docker 로 로컬에서 테스트 가능
ㅤ→ Asana, Instacart, iRobot, Square 를 포함 30개 이상의 조직이 도입.
ㅤ→ 2020 7월에 Linux AI 재단의 새 인큐베이션 프로젝트로 조인.

- Metacat (Netflix) : https://github.com/Netflix/metacat
ㅤ→ 2018년 6월에 공개
ㅤ→ 검색, 스키마 보기, 비용과 공간을 분석하는 메트릭 포함.
ㅤ→ 테이블/파티션 변경에 대한 노티 알림 기능이 있음. 비용등의 문제로 지워질때 알림을 받는게 가능.
ㅤ→ Hive, Teradata, Redshift, S3, Cassandra, RDS 연동 지원
ㅤ→ 스키마/메타데이타의 버저닝/검증 기능 작업중이라고 밝힌바 있음.
ㅤ→ 오픈소스 이긴 하지만, 문서가 하나도 없어서 도입한 회사는 없음.

- Marquez (WeWork) : https://github.com/MarquezProject/marquez
ㅤ→ 2018년 10월에 공개
ㅤ→ 데이터 품질과 계보에 집중
ㅤ→ 데이터 거버넌스, Great Expectations 를 통한 데이터 품질, 데이터셋과 잡에 대한 카탈로그 지원
ㅤ→ WebUI 및 Airflow 컴포넌트 및 Java/Python 클라이언트 제공
ㅤ→ Docker로 로컬에서 테스트 가능하지만 문서는 많지 않음

- Apache Atlas (Hortonworks) : https://atlas.apache.org/
ㅤ→ 2015년 7월에 Data Governance Initiative의 일부로 시작
ㅤ→ 2018년 6월에 1.0이 공개되고 현재 2.1
ㅤ→ 주 목표는 데이터 거버넌스로 조직이 보안/컴플라이언스 요구사항을 준수하도록 도와주는 것.
ㅤ→ 자원에 대한 태깅, 다운스트림 데이터셋에 대한 태그 전파, 메타 데이터 접근에 대한 보안등 풍부한 기능을 가지고 있음
ㅤ→ 메타데이터 변경 알림 기능도 가능
ㅤ→ free-text 검색, 스키마 상세 보기, 데이터 계보 지원
ㅤ→ 고급 검색 기능으로 SQL 과 비슷한 구문으로 검색하는 것도 지원
ㅤ→ HBase, Hive, Kaflka 등의 메타데이터 소스와 연동 지원
ㅤ→ 메타데이터를 REST API로 생성/수정도 가능
ㅤ→ 문서화도 잘 되어있음

* ING가 Atlas 와 Amundsen 을 같이 도입한 사례는 흥미로움 https://medium.com/wbaa/…

* 완전한 DDP는 아니지만 오픈소스 Whale 은 데이터웨어하우스의 내용을 마크다운으로 인덱싱 하는 초간단 DDP 도구로 검색,수정,버저닝등을 지원
ㅤ→ 개발자용 DDP 도구로 살펴볼만함. https://github.com/dataframehq/whale

* 머신러닝처럼 섹시하진 않지만, 데이터 디스커버리는 데이터 사이언스 워크플로우의 중요한 첫 단계

오 정말 좋은 정리네요. Amundsen 한 번 써봐야겠습니다.

Nemo - 페이스북의 데이터 디스커버리 플랫폼 https://news.hada.io/topic?id=3024

국내에 잘 없는 DDP 구축 사례
- 베이글코드의 Amundsen 을 활용한 DDP 구축 사례 https://medium.com/bagelcode/…