spark 4

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파일이나 라이브러리 파일)을 제출하는 것. 스파크 어플리케이션을 제출하면 로컬에서 코드가 실행되어 클러스터 드라이버 노드에 요청한다. 이 과정에서 스파크 드라이버 프로세스의 자원을 함께 요구한다. 클러스터 매니저가 이 요청을 받아들이면 클러스터 워커 노드 중 한 곳에서 스파크 드라이버 프로세스를 실행한다. 스파크 잡을 제출한 클라이언트 프로세스는 이 때 종료되며 스파크 애플리케이션은 클러스터 내에서 수행된다. 애플리케이션 시작 드라이버 프로세스가 실행된 다음 사용자 코드가 실행된다. 사용자 코드에는 반드시 스파크 클러..

Spark Application Architecture - 실행 모드

실행 모드는 스파크 애플리케이션을 실행할 때 요청한 자원의 물리적인 위치를 결정한다. 실행 모드는 총 3가지로 클러스터 모드, 클라이언트 모드, 로컬모드가 있다. 클러스터 모드 클러스터 모드를 사용하려면 컴파일된 JAR파일이나 파이썬 스크립트, R 스크립트를 클러스터 매니저에게 전달해야 한다. 클러스터 매니저는 파일을 받은 다음 하나의 워커 노드에 스파크 드라이버을 실행하고 다른 워커 노드에 스파크 익스큐터 프로세스를 실행한다. 클러스터 매니저는 모든 스파크 애플리케이션과 관련된 프로세스를 유지하는 역할을 한다. 클러스터 모드에서는 스파크 드라이버, 스파크 익스큐터가 모두 클러스터 워커 노드에서 실행된다. 클라이언트 모드 클라이언트 모드는 애플리케이션을 제출한 클라이언트 머신에 스파크 드라이버가 위치한다..

Spark Application Component - Component

스파크 드라이버 스파크 애플리케이션의 ‘운전자 역할’을 하는 프로세스. 스파크 어플리케이션의 실행을 제어하고 스파크 클러스터(익스큐터의 상태와 태스크)의 모든 상태 정보를 유지힌다. 물리적 컴퓨팅 자원 확보, 익스큐터 실행을 위한 클러스터 매니저와의 통신 등도 수행한다. 요약하면 물리적 머신의 프로세스이며 클러스터에서 실행중인 애플리케이션의 상태를 유지하는 역할을 수행한다. 스파크 익스큐터 위에서 기술한 스파크 드라이버가 할당해준 태스크를 수행하는 프로세스. 스파크 익스큐터는 스파크 드라이버가 할당한 태스크를 받아 실행하고 태스크의 상태와 결과를 드라이버에 보고한다. 모든 스파크 애플리케이션은 개별 익스큐터 프로세스를 사용한다. 클러스터 매니저 클러스터 매니저는 스파크 어플리케이션을 수행할 클러스터 머신..