-
[Apache Spark Job]구동 방식 이해하기 (Submit job, physical planning, stage, )데이터 엔지니어링/Spark 2022. 8. 3. 21:10반응형
대충 요약하면 아래와 같다.
- Driver Program - 개발자가 작성한 코드 부분
- Cluster Manager - job을 어떻게 동작 할 지 정해주는 Manager ex) yarn, mesos등
- Worker node - Executor와 Task들이 존재 하고 실제로 작업을 진행하는 곳
Spark job의 구성
- Spark Submit job이나 jar파일 같이 실행 하게 되면 아래의 형식으로 구성되어 진행 되게 된다.
- spark-Submit을 하게 되면 Job으로 Cluster Manager에게 할당되게 되고
- Stage별로 작업을 나눈다음
- Stage별로 들어갈 용량 및 작업량을 파악 하여 Executor에서 Task를 진행한다.
- 그리고 그 결과값을 Cluster Manager에게 Cluster Manager는 다시 Driver Program에 전달한다.
Physical Plan
Job의 구동원리를 알았으니 어떻게 할당되는지 Physical 적으로 알면 좋을 것같다. 아래와 같이 JVM(spark가 깔려있는)기반 컴퓨터가 있다고 하면
아래와 같이 Cluster Manager가 중앙에서 node 들에게(Executor들에게) job에 진행될 공간을 제공하라고 한다. 여기까지가 사전 준비 단계이다.
그리고 그 job이 아래와 같이 진행 되는 코드로 작성되어 있다고 가정하면 아래와 같은 Transformation 을 진행 예상 시나리오를 갖는다.
- filter에의 해 2개의 블럭으로 나뉘게 되고
- join으로 인해 shuffle을 진행하여 2개의 블록이 더 세분화 되어 12 block으로 나뉘게 된다.
- write를 하게 되면 join의 결과가 shuffle되어 4개의 블럭으로 떨어지게 된다.
Job은 3 Stage로 판단하여 3부분으로 나누고 그 stage도 Task단위로 쪼개서 진행 하게 된다.
이렇게 진행단계를 정의 했다면 Physical 적으로 Task를 할당하게 되는데 Executor들에게 진행 할 수 있도록 메모리를 할당하라고 했는데 그 할당 장소를 Slot이다. 아래 그림 처럼 slot을 만들어 놨다고 가정하면
위에 로직을 기반으로 Task단위로 쪼개논 걸 준비된 slot에 할당하여 연산을 진행하게 된다.
참고 자료
https://www.youtube.com/watch?v=rNpzrkB5KQQ&feature=emb_logo
반응형'데이터 엔지니어링 > Spark' 카테고리의 다른 글
[Spark] Postgre의 데이터 JDBC 커넥터 활용하여 병렬 처리 해보기(feat, partitionColumn,lowerBound, upperBound, numPartitions) (0) 2023.02.12 [Apache Spark]Spark RDD의 한계점 및 Dataframe, SQL 등장, 최적화 원리 (0) 2022.07.11 [Spark]RDD 이해하기 (0) 2022.06.19 [Spark] 스파크란 무엇인가?(spark 등장배경, 쓰는이유, 빠른이유) (4) 2022.06.18 [데이터 엔지니어링 설치 방법 정리] Hadoop, spark, pyspark, anaconda (feat. windows 10) (4) 2022.06.18