분산처리 2

Spark의 핵심 RDD

RDD (Resilient Distributed Datasets) RDD는 변경 불가능하며 파티셔닝된 레코드들의 모음이다. (변경 안되고, 나누어져있는 기록들) RDD를 조작하는 코드를 짠다는 것은 실제로 조작하는 것이 아니라 어떻게 조작할지 기록하는 행위다. Directed acyclic graph(DAG)형태로 Lineage를 기록하는 과정이다. Transformation과 Actions RDD Operator에는 지연 처리 방식의 transformation과 즉시 실행 방식의 action 두 가지 operator가 있다. transformation operator는 데이터를 어떻게 조작할지 정의하는 operator(Lineage를 작성하는 operator)이고 action operator는 실제로 ..

Spark Application Architecture - 스파크의 작동 순서(스파크 클러스터)

클러스터 모드로 spark-submit 명령을 수행했을 때 spark application이 어떤 순서로 작동하는지 알아본다. 클라이언트의 요청 첫 단계는 스파크 애플리케이션(컴파인된 JAR파일이나 라이브러리 파일)을 제출하는 것. 스파크 어플리케이션을 제출하면 로컬에서 코드가 실행되어 클러스터 드라이버 노드에 요청한다. 이 과정에서 스파크 드라이버 프로세스의 자원을 함께 요구한다. 클러스터 매니저가 이 요청을 받아들이면 클러스터 워커 노드 중 한 곳에서 스파크 드라이버 프로세스를 실행한다. 스파크 잡을 제출한 클라이언트 프로세스는 이 때 종료되며 스파크 애플리케이션은 클러스터 내에서 수행된다. 애플리케이션 시작 드라이버 프로세스가 실행된 다음 사용자 코드가 실행된다. 사용자 코드에는 반드시 스파크 클러..