이전 글에서는 Azure Databricks가 Apache Spark를 더 쉽게 사용할 수 있게 해주는 클라우드 분석 플랫폼이라는 점을 정리했습니다.
이번 글에서는 Databricks를 처음 열었을 때 가장 헷갈리는 구성요소들을 한 번에 연결해보겠습니다.
Databricks를 처음 보면 Workspace, Notebook, Compute, Cluster, Job, Library, Runtime 같은 용어가 계속 나옵니다. 각각 따로 외우면 헷갈리지만, 실제 실행 흐름으로 보면 생각보다 단순합니다.
Workspace는 작업 공간, Notebook은 코드를 작성하는 문서, Compute는 코드를 실행하는 계산 자원, Job은 코드를 자동으로 반복 실행하는 단위입니다.
비유하자면 Databricks는 하나의 데이터 작업실입니다
. Workspace는 사무실, Notebook은 작업 문서, Compute는 실제로 계산하는 컴퓨터, Job은 정해진 시간에 자동으로 돌아가는 업무 스케줄이라고 보면 됩니다.

1. Databricks에서 코드는 어디에 쓰는가?
Databricks에서 코드는 주로 Notebook에 작성합니다.
Notebook은 Python, SQL, Scala, R 같은 코드를 셀 단위로 작성하고 실행할 수 있는 대화형 문서입니다.
하지만 Notebook에 코드를 쓴다고 해서 코드가 Notebook 자체에서 실행되는 것은 아닙니다.
Notebook은 코드를 작성하고 실행을 요청하는 공간이고, 실제 계산은 Compute 또는 Cluster에서 일어납니다.
이 구조를 처음에 꼭 잡고 가야 합니다.
Notebook에 코드 작성
→ Compute에 실행 요청
→ Spark가 데이터를 분산 처리
→ 결과가 Notebook 화면에 표시
예를 들어 Notebook에 아래처럼 SQL을 작성했다고 해보겠습니다.
%sql
SELECT category, COUNT(*) AS order_count
FROM orders
GROUP BY category;
이 코드는 Notebook에 적혀 있지만, 실제로는 연결된 Compute가 Spark 엔진을 사용해서 데이터를 읽고 집계합니다. 그리고 결과만 Notebook 화면에 표 형태로 보여줍니다.
Notebook은 계산 자원이 아닙니다. Notebook은 코드를 작성하는 문서이고, Compute 또는 Cluster가 실제 계산을 수행합니다.
2. Workspace의 역할
Workspace는 Databricks에서 작업 파일들을 조직화하고 공유하는 공간입니다.
Notebook, Library, Dashboard 같은 작업 결과물을 관리하는 상위 공간이라고 보면 됩니다.
일반적인 파일 탐색기를 생각하면 이해하기 쉽습니다. 내 컴퓨터에 폴더를 만들고, 그 안에 문서와 코드 파일을 정리하듯이, Databricks에서는 Workspace 안에 Notebook, 폴더, Dashboard 등을 정리합니다.
| 구성 요소 | 역할 | 쉽게 말하면 |
|---|---|---|
| Workspace | Notebook, Library, Dashboard를 조직화하고 공유 | 팀의 데이터 작업 공간 |
| Folder | 작업 파일을 주제별로 정리 | 프로젝트 폴더 |
| Notebook | 코드와 설명을 작성하고 실행 | 분석 문서이자 실행 파일 |
| Dashboard | 분석 결과를 시각화 | 결과를 보여주는 화면 |
Workspace가 중요한 이유는 협업 때문입니다.
데이터 엔지니어가 만든 정제 Notebook을 데이터 과학자가 이어받아 모델 학습에 사용할 수 있고,
분석가는 같은 데이터 결과를 SQL로 조회하거나 Dashboard로 확인할 수 있습니다.
즉 Workspace는 단순 저장 공간이 아니라, 팀이 데이터 작업을 함께 진행하는 협업의 출발점입니다.
3. Notebook의 역할
Notebook은 Databricks에서 Spark 애플리케이션을 개발하고 실행하는 대표적인 방법입니다.
코드만 작성하는 파일이 아니라, 설명, 코드, 실행 결과, 시각화를 함께 남길 수 있는 문서형 개발 환경입니다.
Notebook이 좋은 이유는 데이터 분석 과정이 그대로 기록된다는 점입니다. 어떤 데이터를 읽었는지, 어떤 전처리를 했는지, 어떤 결과가 나왔는지를 한 화면에서 확인할 수 있습니다.
Notebook에서 사용할 수 있는 언어
Databricks Notebook에서는 Python, Scala, SQL, R을 사용할 수 있습니다. 하나의 Notebook 안에서도 Magic Command를 사용하면 셀 단위로 언어를 바꿀 수 있습니다.
| Magic Command | 역할 | 예시 용도 |
|---|---|---|
| %python | Python 코드 실행 | PySpark, pandas, ML 코드 작성 |
| %sql | SQL 쿼리 실행 | 테이블 조회, 집계, 분석 |
| %scala | Scala 코드 실행 | Spark 원래 생태계 기반 개발 |
| %r | R 코드 실행 | 통계 분석, R 기반 시각화 |
| %sh | Shell 명령 실행 | 파일 확인, 환경 확인 |
| %run | 다른 Notebook 실행 또는 불러오기 | 공통 함수 Notebook 재사용 |
예를 들어 SQL로 데이터를 확인하고, Python으로 전처리한 뒤, 다시 SQL로 결과를 조회하는 식의 흐름을 만들 수 있습니다. 이 점이 Databricks Notebook의 큰 장점입니다.
%sql
SELECT * FROM sales LIMIT 10;
%python
df = spark.table("sales")
display(df.groupBy("category").count())
%sql
SELECT category, SUM(amount) AS total_amount
FROM sales
GROUP BY category;
다만 실제 Notebook 생성 방법, 셀 실행 방법, Magic Command 실습은 별도의 Lab 글에서 다루는 것이 좋습니다. 이번 글에서는 Notebook이 어떤 역할을 하는지만 이해하면 충분합니다.
4. Compute/Cluster의 역할
Compute 또는 Cluster는 Notebook의 코드를 실제로 실행하는 계산 자원입니다. 쉽게 말해 Notebook이 작업 지시서라면, Compute는 그 지시서를 받아 실제로 계산하는 컴퓨터 묶음입니다.
Databricks에서 Notebook을 실행하려면 보통 Compute에 연결해야 합니다. Compute가 꺼져 있으면 Notebook에 코드를 적어도 실제 계산이 일어나지 않습니다.
Compute는 Databricks에서 Spark 코드를 실행하는 엔진룸입니다. 사용자는 Notebook에 코드를 쓰고, Compute는 그 코드를 실행해 결과를 돌려줍니다.
Compute와 Cluster는 같은 말일까?
Databricks에서는 Compute라는 표현을 많이 사용하지만, Spark 관점에서는 Cluster라는 말도 자주 나옵니다.
Cluster는 여러 노드가 모여 하나의 계산 환경을 이루는 구조를 말합니다.
따라서 처음에는 다음처럼 이해하면 됩니다.
- Compute: Databricks UI에서 사용하는 실행 자원 개념
- Cluster: Spark 관점에서 여러 노드로 구성된 계산 묶음
즉 사용자는 Compute를 선택하지만, 그 내부에서는 Spark Cluster 구조로 작업이 실행됩니다.
Auto Scaling과 Auto Termination
Databricks Compute를 사용할 때 자주 나오는 설정이 Auto Scaling과 Auto Termination입니다.
| 기능 | 의미 | 왜 필요한가 |
|---|---|---|
| Auto Scaling | 작업량에 따라 Worker 수를 자동 조절 | 데이터가 많을 때는 자원을 늘리고, 적을 때는 줄이기 위해 |
| Auto Termination | 일정 시간 사용하지 않으면 Compute 자동 종료 | 켜놓고 잊어서 비용이 계속 나가는 일을 막기 위해 |
특히 실습 환경에서는 Auto Termination이 중요합니다. Databricks는 Compute가 켜져 있는 동안 비용이 발생할 수 있으므로, 사용하지 않을 때 자동으로 꺼지도록 설정하는 것이 좋습니다.
5. Job의 역할
Notebook은 사용자가 직접 열고 실행하는 데 적합합니다.
하지만 실무에서는 매번 사람이 직접 실행하면 안 되는 작업이 많습니다.
예를 들어 매일 새벽 2시에 전날 주문 데이터를 정리하고, 아침 8시에 대시보드가 업데이트되어 있어야 한다고 생각해보겠습니다. 이런 작업을 매일 사람이 직접 Notebook을 열어 실행하는 것은 비효율적입니다.
이때 사용하는 것이 Job입니다. Job은 Notebook, JAR, Python 파일, SQL 작업 등을 정해진 조건에 따라 자동 실행하는 단위입니다.
Job은 Databricks에서 반복 작업을 자동으로 실행하기 위한 예약 실행 단위입니다. 사람이 직접 버튼을 누르지 않아도 Notebook이나 SQL 작업을 정해진 시간에 실행할 수 있습니다.
| 구분 | Notebook 수동 실행 | Job 자동 실행 |
|---|---|---|
| 실행 방식 | 사용자가 직접 실행 | 스케줄 또는 조건에 따라 자동 실행 |
| 사용 목적 | 개발, 실험, 디버깅 | 운영 파이프라인, 정기 배치 작업 |
| 예시 | 데이터 확인, 코드 테스트 | 매일 매출 집계, 주간 리포트 생성 |
Job은 Databricks 운영 자동화의 핵심입니다. 다만 Job Compute의 상세 비교, Serverless Job Compute, Lakeflow Jobs 같은 내용은 뒤쪽 글에서 따로 자세히 다루는 것이 좋습니다. 이번 글에서는 Job이 “반복 실행과 자동화를 위한 단위”라는 것만 잡고 넘어가겠습니다.
6. Library와 Runtime의 역할
Databricks에서 코드를 실행하려면 Spark만 필요한 것이 아닙니다.
Python 패키지, 머신러닝 라이브러리, 데이터 처리 라이브러리 같은 실행 환경도 필요합니다. 이때 등장하는 개념이 Library와 Runtime입니다.
Library란?
Library는 외부 코드를 가져와 사용할 수 있게 해주는 구성요소입니다. 예를 들어 Python에서 pandas, scikit-learn, matplotlib 같은 패키지를 설치해서 사용하는 것처럼, Databricks에서도 필요한 라이브러리를 Compute에 설치해 사용할 수 있습니다.
Library는 팀에서 공통으로 사용하는 코드나 외부 패키지를 연결할 때 중요합니다.
Runtime이란?
Runtime은 Spark와 여러 라이브러리가 포함된 실행 환경입니다.
쉽게 말해 “이 Compute가 어떤 버전의 Spark와 어떤 기본 라이브러리 세트로 실행될 것인가”를 정하는 기준입니다.
예를 들어 일반 데이터 처리용 Runtime을 선택할 수도 있고, 머신러닝 라이브러리가 미리 포함된 ML Runtime을 선택할 수도 있습니다.
| 구성 요소 | 역할 | 예시 |
|---|---|---|
| Library | 외부 패키지나 공통 코드를 추가 | pandas, scikit-learn, 사용자 정의 패키지 |
| Runtime | Spark와 기본 라이브러리가 포함된 실행 환경 | Databricks Runtime, ML Runtime |
처음에는 Runtime을 “Compute의 기본 실행 세팅”이라고 이해하면 됩니다. 그리고 Library는 그 위에 추가로 설치하는 도구라고 보면 됩니다.
같은 코드라도 Runtime 버전이나 Library 버전이 다르면 실행 결과가 달라질 수 있습니다. 그래서 운영 환경에서는 Runtime과 Library 버전을 일관되게 관리하는 것이 중요합니다.
7. Driver Node와 Worker Node의 관계
Compute 내부에서는 Spark Cluster Architecture가 동작합니다.
Spark Cluster는 크게 Driver Node와 Worker Node로 구성됩니다.
처음 들으면 어렵게 느껴질 수 있지만, 역할을 나눠보면 간단합니다.
Driver Node는 전체 작업을 지휘하고, Worker Node는 실제 계산을 나누어 수행합니다.
| 구성 | 역할 | 비유 |
|---|---|---|
| Driver Node | 작업 계획을 세우고 Worker에게 작업을 나눠줌 | 현장 관리자 |
| Worker Node | 분할된 데이터를 실제로 처리 | 작업자 |
예를 들어 1억 건의 주문 데이터를 처리한다고 해보겠습니다. Driver Node는 전체 작업을 분석해서 “이 데이터를 여러 조각으로 나누고, 각 Worker에게 이만큼씩 맡기자”라고 계획합니다. Worker Node들은 각자 맡은 데이터를 처리하고, 결과를 다시 Driver에게 전달합니다.
사용자가 Notebook 실행
→ Driver Node가 작업 계획 수립
→ Worker Node들이 데이터를 나누어 처리
→ 결과를 모아 Notebook에 표시
이 구조 덕분에 Spark는 대량 데이터를 한 대의 컴퓨터가 모두 처리하지 않고, 여러 노드가 나누어 동시에 처리할 수 있습니다.
8. 전체 실행 흐름 예시
이제 Databricks의 구성요소를 하나의 예시로 연결해보겠습니다. 쇼핑몰 주문 데이터를 매일 정리하는 상황을 생각해보겠습니다.
목표는 원천 주문 데이터를 읽고, 상품 카테고리별 매출을 계산한 뒤, 분석용 테이블로 저장하는 것입니다.
1. Workspace에서 프로젝트 폴더를 만든다.
2. Notebook에 주문 데이터 처리 코드를 작성한다.
3. Notebook을 Compute에 연결한다.
4. Compute 내부의 Driver와 Worker가 Spark 작업을 실행한다.
5. 필요한 외부 패키지는 Library로 추가한다.
6. Runtime은 Spark와 라이브러리 실행 환경을 제공한다.
7. 매일 반복 실행해야 하면 Job으로 등록한다.
이를 더 짧게 표현하면 아래와 같습니다.
Workspace
→ Notebook 작성
→ Compute 연결
→ Runtime/Library 환경에서 실행
→ Driver/Worker가 Spark 작업 처리
→ Job으로 자동화
이 흐름만 이해하면 Databricks의 기본 구조는 거의 잡힌 것입니다. 처음에는 각각의 메뉴 이름보다 “누가 어떤 역할을 하는가”를 중심으로 보는 것이 훨씬 이해하기 쉽습니다.
Workspace는 작업을 정리하고, Notebook은 코드를 담고, Compute는 코드를 실행하고, Runtime과 Library는 실행 환경을 만들고, Driver와 Worker는 Spark 작업을 나누어 처리하며, Job은 이 과정을 자동화합니다.
9. 정리
Databricks를 처음 사용할 때 가장 중요한 것은 구성요소의 이름을 외우는 것이 아니라, 각 구성요소가 실행 흐름에서 어떤 역할을 하는지 이해하는 것입니다.
Workspace는 Notebook, Library, Dashboard 등을 조직화하고 공유하는 공간입니다. Notebook은 코드와 설명, 실행 결과를 함께 남기는 대화형 문서입니다. Compute 또는 Cluster는 Notebook의 코드를 실제로 실행하는 계산 자원입니다. Job은 Notebook, Python, SQL 같은 작업을 정해진 시간이나 조건에 따라 자동 실행하는 단위입니다.
Library는 필요한 외부 코드를 추가하는 요소이고, Runtime은 Spark와 기본 라이브러리 환경을 포함한 실행 환경입니다. Compute 내부에서는 Driver Node가 작업을 지휘하고 Worker Node가 데이터를 나누어 처리합니다.
결국 Databricks의 기본 구조는 “작성 공간 → 실행 자원 → 분산 처리 → 자동화”의 흐름으로 이해할 수 있습니다.
10. 전체 흐름 한 번에 정리
| 단계 | 질문 | 답 |
|---|---|---|
| 1 | 작업 파일은 어디에 정리하는가? | Workspace에 Notebook, Library, Dashboard 등을 정리한다. |
| 2 | 코드는 어디에 작성하는가? | Notebook에 코드와 설명을 함께 작성한다. |
| 3 | 코드는 어디서 실행되는가? | Compute 또는 Cluster에서 실행된다. |
| 4 | 실행 환경은 무엇이 결정하는가? | Runtime이 Spark와 기본 라이브러리 환경을 결정한다. |
| 5 | 추가 패키지는 어떻게 사용하는가? | Library로 외부 패키지나 공통 코드를 추가한다. |
| 6 | Spark 작업은 내부에서 어떻게 처리되는가? | Driver Node가 지휘하고 Worker Node가 데이터를 나누어 처리한다. |
| 7 | 반복 작업은 어떻게 자동화하는가? | Job으로 Notebook, Python, SQL 작업을 자동 실행한다. |
11. 핵심 키워드 정리
| 키워드 | 의미 |
|---|---|
| Workspace | Notebook, Library, Dashboard 등을 조직화하고 공유하는 작업 공간 |
| Notebook | 코드, 설명, 실행 결과를 함께 작성하는 대화형 문서 |
| Compute | Notebook의 코드를 실제로 실행하는 계산 자원 |
| Cluster | 여러 노드가 모여 Spark 작업을 처리하는 계산 묶음 |
| Job | Notebook, Python, SQL 등을 자동 실행하는 작업 단위 |
| Library | 외부 패키지나 공통 코드를 실행 환경에 추가하는 구성요소 |
| Runtime | Spark와 기본 라이브러리가 포함된 실행 환경 |
| Driver Node | Spark 작업을 계획하고 Worker에게 분배하는 중심 노드 |
| Worker Node | 분할된 데이터를 실제로 처리하는 작업 노드 |
| Auto Scaling | 작업량에 따라 Worker 수를 자동으로 늘리거나 줄이는 기능 |
| Auto Termination | 일정 시간 사용하지 않는 Compute를 자동 종료하는 비용 절감 기능 |
| Magic Command | Notebook 셀에서 Python, SQL, Scala, R 등을 전환해 실행하는 명령어 |
12. 다음 글 예고
이번 글에서는 Databricks의 핵심 구성요소인 Workspace, Notebook, Compute, Job의 관계를 정리했습니다. 다음 글에서는 Databricks가 내부적으로 어떻게 구성되는지, Control Plane, Data Plane, Serverless 구조를 중심으로 알아보겠습니다.
'Databricks > Azure Databricks로 배우는 Lakehouse 데이터 엔지니어' 카테고리의 다른 글
| [ Databricks #2 ] Azure Databricks란 무엇인가? Spark를 쉽게 쓰게 해주는 Lakehouse 플랫폼 (1) | 2026.06.21 |
|---|