반응형
Ubuntu에서 Dask를 사용하는 방법은 크게 아래의 순서로 진행됩니다. Dask는 Python으로 작성된 병렬 컴퓨팅 라이브러리로, 데이터 분석과 작업 스케일링을 돕는 강력한 도구입니다.
1. Python 환경 준비
Dask는 Python 3.7 이상에서 실행됩니다. Python 환경이 없는 경우 아래 명령어로 설치하세요.
sudo apt update
sudo apt install python3 python3-pip python3-venv
2. Dask 설치
Dask는 PyPI를 통해 쉽게 설치할 수 있습니다.
2.1 가상환경 생성
python3 -m venv daskenv
source daskenv/bin/activate
2.2 일반 설치
pip install dask
2.3 확장된 설치
Dask는 추가적인 패키지와 함께 설치할 수 있습니다. 데이터 프레임, 병렬 파일 시스템 등을 사용하려면 아래 명령어를 사용하세요.
pip install "dask[complete]"
2.4 특정 백엔드 설치
- Pandas 기반: Dask DataFrame 사용 시 필요
- Numpy 기반: Dask Array 사용 시 필요
- Distributed 기반: 분산 컴퓨팅 활용
예:
pip install "dask[distributed]"
2.5 모두 설치하세요.
pip install "dask[complete]"
pip install "dask[distributed]"
3. Dask 사용법
from dask.distributed import Client, progress
from multiprocessing import freeze_support
from dask import delayed
import time
# 작업 정의
def sample_task(n):
time.sleep(1);
return [n ** 2 for i in range(1000000)]
def sample_task2(n):
time.sleep(1);
return [n ** 2 for i in range(1000000)]
def sample_task3(n):
time.sleep(1);
return [n ** 2 for i in range(1000000)]
def sample_task4(n):
time.sleep(1);
return [n ** 2 for i in range(1000000)]
def sample_task5(n):
time.sleep(1);
return [n ** 2 for i in range(1000000)]
def sample_task6(n):
time.sleep(1);
return [n ** 2 for i in range(1000000)]
def square2(x):
return x ** 2
if __name__ == '__main__':
freeze_support()
# 클러스터 설정
client = Client(
address="tcp://192.168.100.167:8786"
) # 기본 로컬 클러스터
print(f"Dashboard: {client.dashboard_link}")
futures = [
client.submit(sample_task, 10),
client.submit(sample_task2, 10),
client.submit(sample_task3, 10),
client.submit(sample_task4, 10),
client.submit(sample_task5, 10),
client.submit(sample_task5, 10),
]
progress(futures)
results = client.gather(futures)
print("Result s:", results)
client.close()
4. Dask 분산 컴퓨팅
Ubuntu에서 분산 환경을 구축하려면 워커(worker) 노드와 스케줄러를 설정해야 합니다.
4.1 스케줄러 시작
dask-scheduler
4.2 워커 시작
스케줄러에 워커를 연결하려면 아래 명령을 실행합니다.
dask-worker <scheduler-ip>:8786 --nworkers 5
#5개의 worker를 사용합니다.
4.3 Dask Dashboard
Dask는 작업 상태를 시각화하는 대시보드를 제공합니다. dask.distributed
클러스터를 사용할 때 활성화됩니다.
# Dask needs bokeh>=3.1.0 for the dashboard. 에러 발생시
Install with conda: conda install "bokeh>=3.1.0"
Install with pip: pip install "bokeh>=3.1.0"
4.4 클러스터 생성 및 대시보드 확인
from dask.distributed import Client
client = Client() # 기본 로컬 클러스터
print(client.dashboard_link) # 대시보드 링크 출력
대시보드는 기본적으로 http://localhost:8787
에서 확인할 수 있습니다.
dask-scheudler 실행 시 대시보드 주소가 출력됩니다.
반응형