-
Databricks(데이터브릭스) Platform 아키텍쳐 및 주요개념 살펴보기Data 2021. 6. 12. 16:16반응형
데이터브릭스는 UC Berkeley에서 스파크를 만든 엔지니어들이 설립한 회사로 스파크는 물론, Delta Lake, MLFlow와 Koalas까지 데이터 환경의 굵직한 오픈소스를 만들며 빠르게 성장하는 클라우드 'Lakehouse Platform' 서비스를 제공하고 있습니다.
이번 글에서는 주요 서비스의 아키텍쳐와 개념을 살펴보며 어떻게 어떤 방식으로 데이터 플랫폼 환경을 제공하는지 알아보겠습니다:
- 데이터브릭스의 서비스들
- Analytics Platform 아키텍쳐
- Analytics Platform 주요개념
데이터브릭스의 서비스
데이터브릭스의 서비스는 클라우드 서비스를 래핑한 형태로 분석 및 AI 등의 데이터 상품을 위한 노트북 기반의 데이터 환경을 제공합니다. 초기의 스파크 데이터 처리 환경에서 시작하여 Delta Lake, MLFlow 등의 오픈소스를 만들어가며 데이터 아키텍쳐 관리, 카탈로그 관리, MLOps 등의 기능도 추가적으로 확장시켜왔습니다. 클라우드 - 런타임 - 워크스페이스라는 레이어를 중점으로 바라보면 아래와 같은 구조를 가지고 있습니다:
현재는 Data Lakehouse라는 명칭으로 기존 및 추가된 sub-상품들이 포괄되어 제공되며, 기반 환경은 AWS, Azure 그리고 Google Cloud의 주요 클라우드 3사와의 연동이 가능합니다.
클라우드 3사에서도 제공하는 다수의 데이터 서비스와의 차별성은 각 사용자의 니즈에 중심을 둔 뛰어난 UX라고 할 수 있겠습니다. 단 하나의 통합 플랫폼에서 데이터 분석가, 엔지니어, 사이언티스트, 플랫폼 운영자 각각의 목적에 맞게 빠르게 데이터 환경을 구축하고 원하는 작업을 수행할 수 있도록 단순화해주고 있습니다.
Analytics Platform 아키텍쳐
플랫폼의 아키텍쳐는 크게 control과 data라는 2개의 plane으로 나누어 집니다:
- Control plane: 데이터브릭스가 관리하는 백엔드서비스들이 포함되며 노트북 커맨드와 다른 워크스페이스 설정은 이곳에 암호화되어 저장됩니다.
- Data plane: AWS, Azure, Google 계정을 통해 관리되며 데이터가 저장되는 곳임과 동시에 데이터가 처리되는 곳입니다. 각 클라우드의 계정을 사용해서 다른 외부 데이터 저장소에 접근하거나 외부 스트리밍 데이터 원천으로부터 데이터를 입수할 수 있습니다.
Analytics Platform 주요개념
데이터브릭스의 분석 플랫폼을 사용할 때 자주 등장하는 주요 개념들을 살펴보겠습니다 [6].
Workspace
워크스페이스는 위의 Control Plane에 존재하는 모든 데이터브릭스 자산에 접근할 수 있는 환경입니다. 워크스페이스는 노트북, 라이브러리, 대시보드와 실험과 같은 객체들을 폴더로 구조화하고 데이터 객체와 컴퓨팅 리소스에 대한 접근을 제공합니다. 주요 객체를 살펴보면 아래와 같습니다:
- 노트북: 실행 커맨드, 시각화, 텍스트 등을 포함한 문서에 대한 웹 기반의 인터페이스
- 대시보드: 시각화 제공 인터페이스
- 라이브러리: 클러스터에서 실행되는 노트북이나 job에서 사용가능한 코드패키지로 데이터브릭스에서 기본적인 것들은 제공하며 커스텀하게 추가할 수 있음
- Repo: Git repository에 동기화 되어 버젼 관리되는 컨텐츠
- 실험: ML 모델 훈련을 위한 MLflow 실행의 묶음
Interface
여러 assets에 접근하기 위해 데이터브릭스가 제공하는 인터페이스로 UI, API, CLI가 포함됩니다.
Data Management
이 섹션에서는 분석을 행하거나 ML 모델에 들어가는 데이터를 가지고 있는 객체들을 다룹니다.
Databricks File System
blob 스토어를 래핑한 파일시스템 추상화 레이어로 파일과 다른 디렉토리들을 포함한 디렉토리를 가지고 있습니다. DBFS는 데이터브릭스를 학습하기 위해 사용할 수 있는 데이터셋을 가지고 자동적으로 생성됩니다.
Metastore
데이터 웨어하우스에 존재하는 다양한 테이블들과 파티션들에 대한 구조 정보를 저장하는 컴포넌트입니다. 그러한 정보에는 컬럼, 컬럼 타입, 데이터를 읽고 쓰기 위한 serializers와 deserializers, 데이터가 저장되어 있는 파일 등에 대한 것들이 포함됩니다. 모든 데이터브릭스 배포는 테이블 메타데이터를 영속화하기 위해서 모든 클러스터가 접근가능한 중앙 하이브 메타스토어를 가지고 있습니다. 또한, 기존에 이미 존재한다면, 외부 하이브 메타스토어 사용을 통해 기존의 것을 사용할 수 있습니다.
Computation management
이 섹션은 데이터브릭스에서 컴퓨팅을 하기 위해 알 필요가 있는 개념들을 다룹니다.
Cluster
클러스터는 노트북과 job들이 실행되는 컴퓨팅 자원이나 설정들의 모음입니다. 2가지 클러스터 타입이 존재합니다:
- all-purpose: UI, CLI 또는 Rest API를 사용해서 이 타입의 클러스터를 생성할 수 있습니다. 수동으로 클러스터를 종료하고 재시작할 수 있으며, 여러 사용자가 협업을 하기 위해 하나의 클러스터를 공유할 수 있습니다.
- job: 데이터브릭스 job 스케쥴러는 job을 새로운 클러스터에서 실행할 때 새로운 job cluster를 생성하고 job이 끝나면 클러스터를 종료합니다.
Pool
Idle한 상태로 사용할 수 있는 인스턴스들로 클러스터 시작과 오토 스케일링 시간을 줄입니다. 풀에 attatched되었을 때, 하나의 클러스터는 풀에서 클러스터의 드라이버와 워커를 할당합니다. 만약 풀이 클러스터 요청을 처리하기에 충분한 idle 리소스를 가지지 못하고 있다면, 풀은 인스턴스 provider로부터 새로운 인스턴스를 할당하도록 하여 확장합니다. Attatched 클러스터가 종료할 때, 클러스터가 사용한 인스턴스들은 풀에 반환되고 다른 클러스터에 의해 재사용될 수 있습니다.
데이터브릭스 런타임
데이터브릭스에 의해 관리되는 클러스터에서 실행되는 핵심 컴포넌트들입니다. 데이터브릭스는 몇 가지 런타임 타입을 제공합니다:
- 데이터브릭스 런타임: 아파치 스파크를 포함하는 동시에 사용성, 성능, 분석의 보안을 높여주는 몇 가지 컴포넌트와 업데이트가 추가됩니다.
- ML용 데이터브릭스 런타임: 데이터브릭스 런타임에 기반해 만들어졌으며 ML과 데이터 사이언스를 위한 환경을 제공합니다. Tensorflow, Keras, PyTorch, XGBoost와 같은 유명한 라이브러리를 포함하고 있습니다.
- Genomics용 데이터브릭스 런타임: genomic과 biomedical 데이터를 다루는데 최적화된 데이터브릭스 런타임 버젼입니다.
- 데이터브릭스 라이트: 오픈소스 아파치 스파크 런타임을 패키징한 것입니다. 데이터브릭스가 제공하는 추가 성능이나 기능이 필요없는 작업에 사용할 수 있습니다.
Job
노트북 또는 라이브러리를 즉시 또는 스케쥴된 형태로 실행하는 non-interactive한 메커니즘입니다.
Workload
데이터브릭스는 다른 가격 정책을 적용 받는 2가지 타입의 워크로드를 구분합니다:
- 데이터 엔지니어링: 데이터브릭스 job 스케쥴러가 각 워크로드를 위해 생성하는 job 클러스터에서 실행되는 워크로드입니다.
- 데이터 분석: interactive한 워크로드로 all-purpose 클러스터에서 실행됩니다. 주로 데이터브릭스 노트북에서 실행되나, all-purpose 클러스터에서 실행되는 job도 interactive 워크로드로 간주됩니다.
Execution Context
각각 지원하는 프로그래밍 언어를 위한 REPL 환경 상태를 말합니다. Python, R, Scala, SQL이 존재합니다.
Model Management
이 섹션에서는 ML 모델을 훈련하기 위한 개념들을 다룹니다.
Model
예측값들과 결과물 간의 관계를 나타내는 수학적 함수입니다. ML은 training과 inference 스텝으로 구성되며, 존재하는 데이터셋을 사용해 모델을 train하고 새로운 데이터에 대한 결과물을 예측하기 위해 모델을 사용합니다.
Run
ML 모델 훈련과 관련된 파라미터, 메트릭, 태그들의 모음입니다.
Experiment
'Runs'를 위한 접근 관리 및 묶을의 주요 단위입니다. 모든 MLflow runs는 실험에 속하게 됩니다. 실험은 시각화, 검색, runs들을 비교, run 아티팩트나 다른 도구에서의 분석을 위한 메타데이터를 다운로드할 수 있도록 해줍니다.
Authentication and authorization
인증과 인가는 User, Group, Access Control List (ACL)이라는 개념을 중심으로 처리되게 됩니다.
Reference
[1] https://en.wikipedia.org/wiki/Databricks
[2] https://docs.databricks.com/getting-started/overview.html
[3] https://docs.microsoft.com/en-us/azure/databricks/getting-started/overview
[4] https://docs.gcp.databricks.com/getting-started/overview.html
[5] https://databricks.com/product/data-lakehouse
[6] https://docs.databricks.com/getting-started/concepts.html
[7] https://community.cloud.databricks.com/login.html
반응형'Data' 카테고리의 다른 글
맵리듀스란? (Hadoop MapReduce) (2) 2021.08.22 CDC(Change Data Capture)란? (0) 2021.07.16 Apache Spark(아파치 스파크) Web UI 관찰하기 (2) 2021.07.01 Apache Spark(아파치 스파크) 학습을 위한 도커 환경 셋업하기 (feat. Zeppelin) (0) 2021.06.20 Apache Spark(아파치 스파크): Adaptive Query Execution이란? (0) 2021.06.09 Apache Spark(아파치 스파크): Dynamic Partition Pruning이란? (0) 2021.06.06 Spark SQL이란? (2) 2021.06.06 Apache Spark RDDs(Resilient Distributed Datasets)의 이점과 특징 (feat. DSM) (0) 2021.06.03