Databricks가 무엇인지에 대한 설명은 여러 곳에서 찾을 수 있기 때문에 생략합니다. 해당 포스팅은 직접 실습을 하며 궁금한 점을 정리하는 목적으로 작성했습니다.
[1] 작업환경
Databricks Workspace는 Azure 내 리소스에서 지원되는 Azure Databricks Service 를 사용했습니다.
해당 화면은 Databricks Workspace 초기화면입니다. 실습을 시작하기에 앞서 왼편에 많은 기능들이 수록되어 있는 것을 볼 수 있습니다. 이 중 제가 주로 실습해볼 기능은 다음과 같습니다.
- 카탈로그
- 컴퓨팅
- SQL 편집기
- SQL Warehouse
- 데이터 수
[2] 기능설명
컴퓨팅
컴퓨팅 메뉴는 '클러스터'를 생성하는 공간입니다. 그렇다면 '클러스터'는 무엇일까요?
※클러스터 : 여러 대의 가상 머신(노드)을 묶어 병렬 처리할 수 있도록 구성된 환경
+ 드라이버 노드(Driver Node) : Spark 프로그램 관리 및 작업 분산, UI 와 명령어 처리
+ 워크 노드(Work Node) : 실제 데이터 처리 및 계산, 여러 개일 수록 병렬 처리 성능이 좋아짐.
Databricks에서 우리가 코드를 실행하기 위해서는 반드시 클러스터를 연결해야 합니다. 코드를 클러스터에서만 실행할 수 있기 때문입니다. 쓰지 않을 때는 요금이 부과될 수 있어 비활성화하는 것이 좋습니다.
이제, Cluster 생성 화면으로 넘어가겠습니다. 클러스터 생성은 [ 컴퓨팅 > compute 만들기 ] 경로로 이어집니다.
Cluster 생성을 위해서는 여러가지 설정을 필요로 합니다. 물론 이 중에서 많이 사용하는 기능은 한정적일테지만 하나씩 알고 넘어가기 위해 정리하겠습니다.
① 정책
기본적으로 작업 영역 관리자는 네 가지 정책에 모두 액세스 가능하다고 쓰여져 있습니다.
하지만, 저에게 보이는 정책 세 가지는 다음과 같습니다.
정책명 | 목적 | 기능 |
Personal Compute | 개인용으로 단일 사용자 클러스터만 생성 가능 작고 간단한 데이터 분석일 때 사용함 |
최소한의 구성옵션으로, 단일 노드 컴퓨팅 리소스를 쉽게 만들도록 함. 자동 종료 설정이 적용됨. |
Power User Compute | 팀 단위 대용량 작업에 사용 가능. Spart 분산 처리 가능 |
클러스터 사양, 노드 수 등이 더 여유로움. 큰 클러스터 생성 시 비용 급증 주의! |
Legacy Shared Compute | 여러 사용자가 하나의 클러스터를 공유 보안 혹은 충돌 문제로 잘 사용하지 않음. |
동시 사용 시 작업 충돌 우려. 속도 저하 및 일부 기능 제한. |
개인 공부 목적으로 사용하려면 "Personal Compute", 실제 업무 진행 시 "Power User Compute"가 올바를 것으로 보입니다.
② 노드 설정
노드 설정에는 2가지 "단일 노드", "다중 노드"가 있습니다.
노드 | 기능 | 장점 | 단점 |
단일 노드 | (Driver + Work) Node의 역할을 하나의 가상 머신이 수행 | 비용이 적게 부과됨. 클러스터 구성 속도 빠름. |
데이터 양이 크면 속도 저하 Spark 분산처리 기능 X |
다중 노드 | 하나의 Driver Node와 다수의 Work Node로 구성 | Spark 분산처리 기능 O 병렬로 빠른 처리속도 |
비용이 더 많이 부과됨. 설정이 복잡함. |
③ 엑세스 관리
엑세스 관리는 정보(i) 아이콘을 누르면 바로 제공되기 때문에 생략하도록 하겠습니다. 혼자 공부할 때에는 "단일 사용자"를 선택하도록 하겠습니다.
④ Databricks Runtime Version (Databricks 런타임 버전)
Databricks 런타임 버전은 Spark Version + 추가 Tool (Python, ML, GPU, etc...)의 Version 환경이 묶인 패키지입니다. 런타임 버전은 크게 [ Standard / ML ] 두 가지로 나뉩니다. 지금 머신러닝을 실습하지는 않기 때문에 Standard만 보도록 하겠습니다. 그렇다면, 나는 어떤 버전을 선택해야 하는 걸까요?
버전명을 자세히 보면 'LTS' 라는 단어가 붙은 것을 볼 수 있습니다. LTS는 Long-Term Support의 줄임말로 장기적으로 지원된 버전이기 때문에 안정성이 높다는 의미입니다. 그래서 LTS가 붙은 버전 중 가장 최신 버전을 사용하면 좋지 않을까 합니다.
⑤ Photon Acceleration 이란?
Databricks가 자체 개발한 C++ 고성능 실행 엔진으로, 기존 Spark 엔진보다 더 빠르고 가볍게 동작한다.
SQL 사용량이 많거나 데이터 분석 쿼리를 주로 사용한다면 성능차이를 느낄 수 있다.
사용 시 비용적으로 유리하다.
⑥ Worker 유형
Worker 유형이란, Databricks 클러스터에서 작업을 실제로 수행하는 가상 머신(VM)의 종류입니다. 지금 만드는 클러스터에 어떤 성능을 가진 컴퓨터 몇 대를 사용할지 결정하는 것입니다. 위에 클러스터를 설명할 때 거론되었던 Work Node의 성능을 뜻하기도 합니다.
최소 Worker와 최대 Worker는 Spark 작업량에 따라 Autoscaling 되는 Work Node 개수 범위입니다. 작업량이 없어도 바로 줄어들지 않으며, Max를 크게 잡게되면 비용이 크게 올라갈 가능성이 있어 주의해야 합니다. 처음 공부한다면 Min = 1, Max = 2가 적당하다고 합니다.
⑦ Drivier 유형
Driver 유형이란, 전체 작업을 각 워커에게 분배시켜 결과를 수집하고 사용자에게 반환하는 중앙 제어 노드입니다. Default로 Worker 유형과 같은 유형을 쓰도록 설정되어 있어 별도로 바꾸고 싶을 때만 바꿔주면 됩니다.