반응형

www.youtube.com/watch?v=zC9cnh8rJd0

 

 

Spark processing은 Job > Stage > Task로 세분화 될 수 있다.

(ex)

Job : myrdd.map().filter().join().collect()

Stage : map().filter()  /  join()

Task : 각 stage의 작업이 실행되는 하나의 partition에서의 작업

 

 

출처 : https://mallikarjuna_g.gitbooks.io/spark/content/spark-taskscheduler-tasks.html

Job

Action의 수행으로 원하는 ouput을 얻기 위한 전체 작업 단위

 

Stage

- 모든 partition이 sequencial하게 작업 될 수 있는 단위

  • Transformations의 집합으로 볼 수 있는데, Transformation의 순차적인 연산이 독립적으로 실행되는 단위가 stage다.
    • Narrow Transformation : 각 partition이 독립적으로 실행될 수 있다. (ex. map, filter, etc.)
    • Wide Transformation : 각 partition이 서로 데이터를 공유해야 한다. (ex. join, groupByKey, etc.)
      • Wide Transformation을 위해서 모든 partition의 데이터가 shuffle되는데, 이 순간을 기준으로 서로 다른 stage로 구분한다.

 

Task

- 각 stage에 있어서, 하나의 parition에서 수행되는 작업 단위(각 executor의 작업!)

(ex. 각 partition에서의 Narrow Transformation 작업)

  • 즉 하나의 Stage는 하나 이상의 Task를 가지고 있고, 또 다른 다음 stage가 실행되기 위해서는 현재의 stage에서 병렬로 처리되는 모든 task들이 완료되어야 한다. 이후에 shuffle → next stage 작업이 진행된다.
    • 따라서 Stage를 나누는 Wide Transformation의 실행은 여러가지 이유로 시간을 지연시킨다. 
      • 효율적인 방법으로 Job을 설정하여 최소화시키는 것이 필요하다!

 

 

 

반응형

+ Recent posts