본문으로 건너뛰기

JupyterHub 설정

메뉴 통합 안내 — 노트북 기능은 ML 허브 → 개발 스테이지로 통합되었습니다. 메뉴 경로: 사이드바 → ML 허브 → 개발 (/ml-hub/develop?tab=notebooks). 구 경로 /notebooks 는 자동 리다이렉트됩니다.

JupyterHub 노트북

GenD는 Kubernetes 기반 JupyterHub를 통해 멀티 사용자 노트북 환경을 제공합니다. 각 사용자에게 독립된 Jupyter 서버가 할당되며, Trino 커넥터가 사전 구성됩니다.

아키텍처

GenD UI → GenD API (notebook.py) → JupyterHub API → K8s Pod (사용자별)
│ ↑ ├── Python 3.12
│ │ ├── trino-python-client
│ hub:8081 └── 분석 라이브러리

└── Open 버튼 → Ingress /jupyter → proxy-public → JupyterLab

JupyterHub는 K8s 클러스터 내에서 사용자 요청에 따라 개별 Pod(jupyter-{username})를 생성합니다. GenD API는 서버 관리(시작/중지/상태)를 담당하고, 브라우저는 Ingress를 통해 JupyterLab에 직접 접속합니다.

노트북 서버 목록

사전 구성 항목

항목설명
Python 커널Python 3.12 + pandas, matplotlib, seaborn, plotly
ML 라이브러리scikit-learn, ipywidgets
Trino 클라이언트trino[sqlalchemy] 사전 설치
환경 변수TRINO_HOST, TRINO_PORT 자동 설정
스토리지PVC 기반 사용자별 영구 스토리지 (2Gi)
자동 종료1시간 미사용 시 자동 종료, 최대 8시간

Trino 연동 예시

노트북 내에서 Trino에 연결하여 쿼리하는 기본 코드:

from trino.dbapi import connect

conn = connect(
host="trino",
port=8080,
user="notebook-user",
catalog="lakehouse",
schema="default",
)
cursor = conn.cursor()
cursor.execute("SELECT * FROM orders LIMIT 10")
rows = cursor.fetchall()

리소스 관리

각 노트북 서버 Pod에는 리소스 제한이 적용됩니다:

프로파일CPUMemory용도
GenD Default0.25~1512M~2G데이터 분석, 시각화
GenD ML0.25~2512M~4GML 모델 학습
  • 1시간 미사용 시 자동 종료 (cull), 최대 8시간 수명
  • 관리자는 전체 서버 목록에서 리소스 사용 현황을 모니터링합니다

관련 문서