개요

Apache Atlas는 데이터 표준 및 계보(Data Lineage)를 관리할 수 있는 플랫폼이다. 이 플랫폼을 도입하기 위해 찾아보고 소스를 분석해본 내용을 기반으로 플랫폼에 대한 오버뷰를 정리해둔다.

플랫폼 간단 요약

  • Apache Atlas는 메타데이터(이를 테면 하이브 테이블)를 관리하는 플랫폼이다.
  • 테이블/칼럼 등의 단위를 해시태그를 통해 관리/검색할 수 있다.
  • 테이블/칼럼 등에 모두 세밀하게 권한을 부여하여 접근제한이나 마스킹 처리를 할 수 있다.
  • 각 메타간의 관계를 데이터 계보(Lineage)를 통해 쉽게 확인 할 수 있는데 이를 Apache Atlas가 자동으로 만들어준다.

Atlas Feature

Apache Atlas의 주요 특징을 알아보며 Apache Atlas를 왜 써야하는지 알아보자.
아래 부분은 필자가 직접 써보면서 느낀 부분을 포함한 내용이다.

Metadata types & instances

  • 미리 정의된 여러 종류의 메타데이터를 자동으로 읽어올 수 있음
  • 메타 데이터에 대한 새로운 타입 정의가 가능
  • 타입은 단순하거나 복잡한 속성(attribute)를 가질 수 있음
  • 타입끼리 상속 받을 수 있음
  • 타입의 인스턴스는 엔티티로 불리는데 메타데이터 객체의 상세 몇 관계를 가짐
  • REST API가 잘되어 있어 메타데이터 간의 통합이나 연동이 유기적임

Classification

  • 동적으로 새로운 분류를 생성하기 좋음
  • 분류는 속성을 포함함
  • 엔티티는 다양한 분류에 속할 수 있고 쉽게 검색되고 보안이 적용 될 수 있음

Lineage

  • 직관적인 UI로 데이터가 어떻게 가공되고 이동했는지 계보(lineage)를 찾을 수 있음
  • REST API로 lineage를 접근하거나 업데이트 할 수 있음

Search/Discovery

  • 직관적인 UI로 엔티티를 type, 분류, 속성 값 혹은 full-text로 찾을 수 있음
  • REST API로 검색을 수행 가능
  • SQL like 쿼리 언어로 검색이 가능(DSL)

Security & Data Masking

  • Apache Ranger가 통합되어 있어 으를 통해 권한관리/데이터 마스킹이 Classification 기반으로 엔티티별로 적용 가능.
    • 예를 들어 아래와 같이 가능
    • 마케팅/서비스 와 같은 분류로 데이터 엑세스 가능
    • CS팀 사용자는 일부 테이블/칼럼만 접근 가능

메타 서비스 지원

지원하는 메타 서비스 종류는 아래와 같고 회사에서 사용할만한 메타서비스는 굵은 표시를 해두었다.

  • hive
  • hbase
  • ranger
  • sqoop
  • storm/kafka
  • falcon

Atlas 아키텍쳐

  • 메타정보를 저장하고 검색/그래프 엔진으로 각각 Hbase 및 Solr를 사용한다.
  • 필자가 더 찾아본 바로는 Atlas는 단순히 JanusGraph를 활용하여 사용하는 것으로 JanusGraph가
    저장에는 Hbase, 검색엔진으로 Solr를 기본 사용한다.
  • 아래와 같은 Variation이 있다고는 하나 실제로 해보면 잘 되지는 않는다.
    • Hbase 대신 Cassandra를 사용할 수 있다.
    • 검색엔진은 Solr대신 ES로 사용할 수 있다.

Atlas 기능 살펴보기

직접 설치한 Apache Atlas를 통해 기능을 간단히 오버뷰해보자.

검색기능

아파치 아틀라스에 접속하면 기본적으로 검색 화면이 나온다.

SearchByType

아래와 같이 type 검색으로 hive_db를 조회해 본 화면이다.
hive와 관련된 type의 종류로는 hive_db , hive_table, hive_column등이 있다.

SearchByClassification

미리 정의한 Classification 단위로도 검색을 수행할 수 있다.

SearchByTerm

Term은 흔히들 아는 해쉬태그 정도로 생각 할 수 있다. 태그를 정의하여 원하는 테이블, 칼럼 등에 N:N 관계로 맵핑을 붙일 수 있다.

SearchByText

문자열 검색 기능을 지원하고 간단한 *패턴 정도를 지원한다.

Advanced Search

추가적인 DSL 문법을 통해 더 Rich한 검색실을 사용할 수 있다.

검색결과화면

조회된 화면에서 테이블명을 클릭했을때 나오는 결과화면에 대해 알아보자.

Properties

테이블 기준 속성값으로는 칼럼정보, 테이블 생성시간 등 다양한 정보가 기재되어있다. 하이브 테이블의 경우 파티셔닝 정보도 포함하고 있다.

Lineage

데이터 Lineage에 대한 정보는 아래에서 다시 설명한다.

Relationship

관계로는 해당 객체의 input/output 정보나 소속 database, 칼럼 정보 등을 그래프로 나타낸다.

Classification

Classification(분류)는 사용자가 정의한 분류를 사용할 수 있다. 이 Classification은 authorization용도로 사용된다.

Audits

이 메뉴를 통해 각 사용자가 언제 이 객체에 접근했는지 기록을 확인 할 수 있다.

Schema

테이블의 경우 속하는 칼럼 정보 및 칼럼의 tags 정보를 확인(및 맵핑) 할 수 있다.

Classification

Classification 메뉴를 통해 트리구조 혹은 Flat한 분류를 만들고 관리할 수 있다.

Glossary

Glossary 메뉴에서 기존에 다른 메뉴에서 보았던 Tag에 대해 관리 할 수 있다.

Data Lineage

데이터 이동의 계보(lineage)를 한번 예제를 통해 익혀보자.
Apache Atlas의 장점은 데이터 계보를 자동으로 계속 플랫폼적으로 Update해준다는 점이다.

database 생성

기존에 존재하지 않은 “lks21c”라는 이름의 database를 만든다.
그러면 기존에 없던 database가 자동으로 생기는 것을 확인 할 수 있다.

테이블 생성

마찬가지로 테이블 생성시 없던 테이블이 생기는 것을 확인 할 수 있다.

View 생성

view까지 생성한 이후 테이블 리스트 및 lineage를 보면 정상적으로 뷰가 생성되고 기존의 원본 테이블간에 계보가 어떻게 되는지 확인 할 수 있다.

참고자료