DASK SCHEDULER
https://docs.dask.org/en/stable/scheduling.html
Scheduler는 2가지로 구분된다
- Single Machine용 스케쥴러
- Basic futures on local thread or process
default
로 설정되어있음
- Distributed용 스케쥴러
- more futures on local or distributed cluster
DASK의 Distributed Scheduler
https://distributed.dask.org/en/stable/
Dask.Distributed 는 스케쥴러를 관리하는 일종의 모듈인데 다음과 같은 특징을 가진다
- 적은 지연성 : 오버헤드가 적다
- 데이터 공유 : dask-worker들이 데이터를 공유하고 → 데이터전송간 병목을 줄일수 있다
- 정교한 알고리즘 처리지원 : e.g
map, filter, reduce, ML, image processing
- 파이썬 지원
- 데이터 지역성 : 데이터가 존재하는 곳에서 계산을 진행하기때문에, network traffic을 감소시킨다
- 비슷한 API : Python의 표준라이브러리인
concurrent.futres
와 호환된다 - 단순한 설치가능 :
pip install
로만 해줘도 가능
Architecture
- 구성 : 중앙의 dask-scheduler 프로세스 코디네이터 + 다수의 머신에 존재하는 dask-worker 프로세스
- dask-scheduler가 dask-worker들을 지시하는 형식
- 비동기 + event driven로 구성 → 동시에 여러개의 workers와 users로 부터 처리하는것에 특화
- Workers는 TCP로 bulk data를 전송한다
- Scheulder는 DAG의 모든 작업을 지속적으로 확인하고, task는 대부분 다른 task에 영향을 줄수 있을만한 파이썬 오브젝트를 실행시키는것이다.
- 사용자는 로컬python에서 세션을 Scheduler에 연결하고,
client.submit()
를 사용해서 상호작용한다
Client
Client() 객체를 하나하나 지정해줘서 사용해줘야하는거고
이전 내용중에 .compute()
연산은 모든 인터프리터를 잠궈버리기때문에, compute()
연산을 많이쓰면 안된다 라고 했던 부분이 있는데(동기식)
반대로 .persist()
메소드는 모든 과정이 비동기로 처리된다.
'DATA Engineering > Dask' 카테고리의 다른 글
DASK DELAYED. Compute. Futures (0) | 2022.11.01 |
---|---|
DASK DataFrame 과 꿀팁. Shuffling전략 (0) | 2022.11.01 |