SlideShare a Scribd company logo
1 of 16
Download to read offline
Spark: Running on a Cluster
아키텍트를 꿈꾸는 사람들
Cecil
Spark 애플리케이션: 분산 모드
마스터/슬레이브 구조
중앙 조정자(드라이버) + 분산 작업 노드(익스큐터)로 구성
드라이버와 익스큐터는 각각 독립된 자바 프로세스
분산모드 구성 요소 - 드라이버
• 사용자의 main 메소드가 실행되는 프로세스
• 주요 역할
• 사용자 프로그램을 태스크로 변환하여 클러스터로 전송
• 익스큐터에서의 개별 작업들을 위한 스케쥴링을 조정
드라이버의 역할
• 사용자 프로그램을 태스크로 변환
1. 연산들의 관계를 DAG(Directed Acyclic Graph) 생성
2. DAG를 물리적인 실행 계획으로 변환
•최적화를 거쳐 여러 개의 stage로 변환
•각 stage 는 여러개의 태스크로 구성
3. 단위 작업들을 묶어서 클러스터로 전송
• 익스큐터에서 태스크들의 스케쥴링
• 익스큐터들은 시작시 드라이버에 등록됨
• 드라이버는 항상 실행중인 익스큐터를 감시
• 태스크를 데이터 위치에 기반해 적절한 위치에서 실행이 되도록 함
• 4040 포트를 사용하여 웹 인터페이스로 실행 정보를 볼수 있음
태스크 변환 과정
분산모드 구성 요소 - 익스큐터
• 개별 태스크를 실행하는 작업 실행 프로세스
• 주요 역할
• 태스크 실행 후 결과를 드라이버로 전송
• 사용자 프로그램에서 캐시하는 RDD를 저장하기 위한 메모리 공간 제공
분산모드 구성 요소 - 클러스터 매니저
• 스파크는 익스큐터를 실행하기 위해 클러스터 매니저에 의존
• 지원 매니저
• Standalone, Hadoop Yarn, Apache Mesos
프로그램이 실행되는 단계
1. 사용자가 spark-submit을 사용해 애플리케이션 제출
2. spark-submit은 드라이버 프로그램을 실행하여 main 메소드 호출
3. 드라이버는 클러스터 매니저에서 익스큐터 실행을 위한 리소스 요청
4.클러스터 매니저는 익스큐터를 실행
5. 드라이버는 태스크 단위로 나누어 익스큐터에 전송
6. 익스큐터는 태스크를 실행
7. 애플리케이션이 종료되면 클러스터 매니저에게 리소스 반납
spark-submit
•클러스터 매니저에 스파크 애플리케이션을 제출하는 툴
•ex) spark-submit --master spark://host:7077 my_script.py
•주요 옵션
•master: 클러스터 매니저 설정
•deploy-mode: 드라이버 프로그램이 실행 되는 곳(client/cluster)
•class: (Java/Scala) main 함수가 들어 있는 클래스
•jars/py-files: 사용자 애플리케이션에 추가되어야할 라이브러리 목록
•executor-memory: 익스큐터 프로세스가 사용할 메모리
•driver-memory: 드라이버 프로세스가 사용할 메모리
deploy mode
•클라이언트 모드
•드라이버는 spark-submit의 일부로 실행됨
•드라이버 프로그램을 출력을 직접 확인 가능 (표준 출력등.)
•애플리케이션 실행하는 동안 작업 노드 들에 계속 연결되어 있어야 함
•클러스터 모드
•드라이버가 클러스터내의 작업 노드중 하나에서 실행됨
•실행 후 개입하지 않는 방식
•파이썬 언어는 지원하지 않음.
의존성 라이브러리의 패키징
•클러스터 머신들에 해당 라이브러리가 위치해야 함
•python
•클러스터의 python 패키지 매니저를 사용하여 직접 설치
•—py-files 옵션을 사용하여 라이브러리 제출
•java, scala
•—jars 옵션을 사용하여 jar 파일 제출
•복잡한 의존성을 가질 경우 전체적인 전이 의존성 그래프를 같이 제출해야 함
•maven, sbt 플러그인 사용하여 패키징
스파크 애플리케이션간 스케쥴링
•스파크 스케쥴링 정책
•자원이 고갈되지 않고 작업 부하의 우선 순위에 따라 할당
•기본적으로 클러스터 매니저의 정책에 의존하여 스케쥴링
•익스큐터 요청시, 가능한 상태나 자원의 경쟁여부에 따라 적당한 수 할당
•대부분의 클러스터 매니저는 우선순위나 처리용량의 한계에 따른 작업 큐 기능이 있음
•페어 스케쥴러
•장시간 동작하는 애플리케이션이 작업 스케쥴링을 위해 우선 순위를 조정할 수 있게 함
클러스터 매니저
•공통
•익스큐터에서 가능한 많은 코어를 써서 적은 개수 익스큐터로 애플리케이션 실행
•분산된 데이터에서의 로컬리티 보장, 데이터가 있는 곳에서 태스크 실행
•Standalone
•설정: executor-memory, total-executor-cores
•익스큐터의 최대 개수 설정 만큼 퍼뜨리는 식으로 동작
•Hadoop Yarn
•설정: executor-memory, num-executers, executor-cores
•Apache mesos
•설정: executor-memory, total-executor-cores
클러스터 매니저 선택
•Standalone
•새로 배포 예정의 애플리케이션 <== 설정이 가장 쉬움
•Hadoop Yarn
•다른 애플리케이션과 같이 돌리거나 우수한 자원 스케쥴링이 필요한 경우
•Apache mesos
•스파크 쉘과 같은 대화형 어플리케이션 실행간 CPU 사용량을 세밀히 조정
•HDFS
•저장소의 빠른 접근을 위해 HDFS와 동일한 노드에 설치
Q&A
References
• Holden Karau, Andy Konwinski, Patrick Wendell, Matei
Zaharia. 러닝 스파크(박종용 옮김). 경기도 파주시: 제이펍(주), 2015
• Spark home page: http://spark.apache.org
• Understanding RDD operations: transformations and
actions: https://trongkhoanguyenblog.wordpress.com/
2014/11/27/understand-rdd-operations-transformations-and-
actions/
• spark overview: http://www.slideshare.net/LisaHua/spark-
overview-37479609

More Related Content

What's hot

Spark_Overview_qna
Spark_Overview_qnaSpark_Overview_qna
Spark_Overview_qna현철 박
 
PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기찬희 이
 
왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지 왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지 Un Gi Jung
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기AWSKRUG - AWS한국사용자모임
 
Spark은 왜 이렇게 유명해지고 있을까?
Spark은 왜 이렇게  유명해지고 있을까?Spark은 왜 이렇게  유명해지고 있을까?
Spark은 왜 이렇게 유명해지고 있을까?KSLUG
 
Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Jeong-gyu Kim
 
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축Juhong Park
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기Ted Won
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기흥래 김
 
Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)Sang-bae Lim
 
Cloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampCloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampSang-bae Lim
 
Spark Day 2017 Machine Learning & Deep Learning With Spark
Spark Day 2017 Machine Learning & Deep Learning With SparkSpark Day 2017 Machine Learning & Deep Learning With Spark
Spark Day 2017 Machine Learning & Deep Learning With SparkSangHoon Lee
 
Zeppelin notebook 만들기
Zeppelin notebook 만들기Zeppelin notebook 만들기
Zeppelin notebook 만들기Soo-Kyung Choi
 
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106SangHoon Lee
 
Apache Spark 입문에서 머신러닝까지
Apache Spark 입문에서 머신러닝까지Apache Spark 입문에서 머신러닝까지
Apache Spark 입문에서 머신러닝까지Donam Kim
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지위키북스
 
스사모 테크톡 - Apache Flink 둘러보기
스사모 테크톡 - Apache Flink 둘러보기스사모 테크톡 - Apache Flink 둘러보기
스사모 테크톡 - Apache Flink 둘러보기SangWoo Kim
 

What's hot (20)

Spark_Overview_qna
Spark_Overview_qnaSpark_Overview_qna
Spark_Overview_qna
 
PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기
 
(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?
(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?
(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?
 
Spark sql
Spark sqlSpark sql
Spark sql
 
왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지 왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
 
Pair RDD - Spark
Pair RDD - SparkPair RDD - Spark
Pair RDD - Spark
 
Spark은 왜 이렇게 유명해지고 있을까?
Spark은 왜 이렇게  유명해지고 있을까?Spark은 왜 이렇게  유명해지고 있을까?
Spark은 왜 이렇게 유명해지고 있을까?
 
Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리
 
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
 
Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)
 
Cloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampCloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcamp
 
Spark Day 2017 Machine Learning & Deep Learning With Spark
Spark Day 2017 Machine Learning & Deep Learning With SparkSpark Day 2017 Machine Learning & Deep Learning With Spark
Spark Day 2017 Machine Learning & Deep Learning With Spark
 
Zeppelin notebook 만들기
Zeppelin notebook 만들기Zeppelin notebook 만들기
Zeppelin notebook 만들기
 
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
 
Apache Spark 입문에서 머신러닝까지
Apache Spark 입문에서 머신러닝까지Apache Spark 입문에서 머신러닝까지
Apache Spark 입문에서 머신러닝까지
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
 
스사모 테크톡 - Apache Flink 둘러보기
스사모 테크톡 - Apache Flink 둘러보기스사모 테크톡 - Apache Flink 둘러보기
스사모 테크톡 - Apache Flink 둘러보기
 

Similar to Cluster - spark

클라우드 서비스운영 플랫폼 가루다
클라우드 서비스운영 플랫폼 가루다클라우드 서비스운영 플랫폼 가루다
클라우드 서비스운영 플랫폼 가루다상욱 송
 
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱uEngine Solutions
 
Spark 2 프로그래밍 3 장 클러스터 환경
Spark 2 프로그래밍   3 장 클러스터 환경Spark 2 프로그래밍   3 장 클러스터 환경
Spark 2 프로그래밍 3 장 클러스터 환경hojung kang
 
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약kidoki
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-uploadDong-Hwa jung
 
spark database Service
spark database Servicespark database Service
spark database Service창언 정
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재PgDay.Seoul
 
Spark streaming tutorial
Spark streaming tutorialSpark streaming tutorial
Spark streaming tutorialMinho Kim
 
Scalable system design patterns
Scalable system design patternsScalable system design patterns
Scalable system design patternsSteve Min
 
3장 이클립스 기반구조 eclipser
3장 이클립스 기반구조 eclipser3장 이클립스 기반구조 eclipser
3장 이클립스 기반구조 eclipserbrodiebrodie
 
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개Tommy Lee
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AILablup Inc.
 
하둡완벽가이드 Ch6. 맵리듀스 작동 방법
하둡완벽가이드 Ch6. 맵리듀스 작동 방법하둡완벽가이드 Ch6. 맵리듀스 작동 방법
하둡완벽가이드 Ch6. 맵리듀스 작동 방법HyeonSeok Choi
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템tcaesvk
 
Machine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIMachine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIJeongkyu Shin
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol Lee
 

Similar to Cluster - spark (20)

클라우드 서비스운영 플랫폼 가루다
클라우드 서비스운영 플랫폼 가루다클라우드 서비스운영 플랫폼 가루다
클라우드 서비스운영 플랫폼 가루다
 
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
 
Spark 2 프로그래밍 3 장 클러스터 환경
Spark 2 프로그래밍   3 장 클러스터 환경Spark 2 프로그래밍   3 장 클러스터 환경
Spark 2 프로그래밍 3 장 클러스터 환경
 
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-upload
 
spark database Service
spark database Servicespark database Service
spark database Service
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
 
Spark streaming tutorial
Spark streaming tutorialSpark streaming tutorial
Spark streaming tutorial
 
Scalable system design patterns
Scalable system design patternsScalable system design patterns
Scalable system design patterns
 
3장 이클립스 기반구조 eclipser
3장 이클립스 기반구조 eclipser3장 이클립스 기반구조 eclipser
3장 이클립스 기반구조 eclipser
 
Apache Spark
Apache SparkApache Spark
Apache Spark
 
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AI
 
하둡완벽가이드 Ch6. 맵리듀스 작동 방법
하둡완벽가이드 Ch6. 맵리듀스 작동 방법하둡완벽가이드 Ch6. 맵리듀스 작동 방법
하둡완벽가이드 Ch6. 맵리듀스 작동 방법
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템
 
Maven의 이해
Maven의 이해Maven의 이해
Maven의 이해
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
Machine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIMachine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AI
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 

More from HyeonSeok Choi

밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05HyeonSeok Choi
 
밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2HyeonSeok Choi
 
프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2HyeonSeok Choi
 
알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04HyeonSeok Choi
 
딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04HyeonSeok Choi
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05HyeonSeok Choi
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성HyeonSeok Choi
 
7가지 동시성 모델 4장
7가지 동시성 모델 4장7가지 동시성 모델 4장
7가지 동시성 모델 4장HyeonSeok Choi
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8HyeonSeok Choi
 
실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7HyeonSeok Choi
 
실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6HyeonSeok Choi
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaHyeonSeok Choi
 
실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1HyeonSeok Choi
 
HTTP 완벽가이드 21장
HTTP 완벽가이드 21장HTTP 완벽가이드 21장
HTTP 완벽가이드 21장HyeonSeok Choi
 
HTTP 완벽가이드 16장
HTTP 완벽가이드 16장HTTP 완벽가이드 16장
HTTP 완벽가이드 16장HyeonSeok Choi
 

More from HyeonSeok Choi (20)

밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05
 
밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2
 
프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2
 
알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04
 
딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05
 
함수적 사고 2장
함수적 사고 2장함수적 사고 2장
함수적 사고 2장
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성
 
7가지 동시성 모델 4장
7가지 동시성 모델 4장7가지 동시성 모델 4장
7가지 동시성 모델 4장
 
Bounded Context
Bounded ContextBounded Context
Bounded Context
 
DDD Repository
DDD RepositoryDDD Repository
DDD Repository
 
DDD Start Ch#3
DDD Start Ch#3DDD Start Ch#3
DDD Start Ch#3
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
 
실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7
 
실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, Kibana
 
실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1
 
HTTP 완벽가이드 21장
HTTP 완벽가이드 21장HTTP 완벽가이드 21장
HTTP 완벽가이드 21장
 
HTTP 완벽가이드 16장
HTTP 완벽가이드 16장HTTP 완벽가이드 16장
HTTP 완벽가이드 16장
 
HTTPS
HTTPSHTTPS
HTTPS
 

Cluster - spark

  • 1. Spark: Running on a Cluster 아키텍트를 꿈꾸는 사람들 Cecil
  • 2. Spark 애플리케이션: 분산 모드 마스터/슬레이브 구조 중앙 조정자(드라이버) + 분산 작업 노드(익스큐터)로 구성 드라이버와 익스큐터는 각각 독립된 자바 프로세스
  • 3. 분산모드 구성 요소 - 드라이버 • 사용자의 main 메소드가 실행되는 프로세스 • 주요 역할 • 사용자 프로그램을 태스크로 변환하여 클러스터로 전송 • 익스큐터에서의 개별 작업들을 위한 스케쥴링을 조정
  • 4. 드라이버의 역할 • 사용자 프로그램을 태스크로 변환 1. 연산들의 관계를 DAG(Directed Acyclic Graph) 생성 2. DAG를 물리적인 실행 계획으로 변환 •최적화를 거쳐 여러 개의 stage로 변환 •각 stage 는 여러개의 태스크로 구성 3. 단위 작업들을 묶어서 클러스터로 전송 • 익스큐터에서 태스크들의 스케쥴링 • 익스큐터들은 시작시 드라이버에 등록됨 • 드라이버는 항상 실행중인 익스큐터를 감시 • 태스크를 데이터 위치에 기반해 적절한 위치에서 실행이 되도록 함 • 4040 포트를 사용하여 웹 인터페이스로 실행 정보를 볼수 있음
  • 6. 분산모드 구성 요소 - 익스큐터 • 개별 태스크를 실행하는 작업 실행 프로세스 • 주요 역할 • 태스크 실행 후 결과를 드라이버로 전송 • 사용자 프로그램에서 캐시하는 RDD를 저장하기 위한 메모리 공간 제공
  • 7. 분산모드 구성 요소 - 클러스터 매니저 • 스파크는 익스큐터를 실행하기 위해 클러스터 매니저에 의존 • 지원 매니저 • Standalone, Hadoop Yarn, Apache Mesos
  • 8. 프로그램이 실행되는 단계 1. 사용자가 spark-submit을 사용해 애플리케이션 제출 2. spark-submit은 드라이버 프로그램을 실행하여 main 메소드 호출 3. 드라이버는 클러스터 매니저에서 익스큐터 실행을 위한 리소스 요청 4.클러스터 매니저는 익스큐터를 실행 5. 드라이버는 태스크 단위로 나누어 익스큐터에 전송 6. 익스큐터는 태스크를 실행 7. 애플리케이션이 종료되면 클러스터 매니저에게 리소스 반납
  • 9. spark-submit •클러스터 매니저에 스파크 애플리케이션을 제출하는 툴 •ex) spark-submit --master spark://host:7077 my_script.py •주요 옵션 •master: 클러스터 매니저 설정 •deploy-mode: 드라이버 프로그램이 실행 되는 곳(client/cluster) •class: (Java/Scala) main 함수가 들어 있는 클래스 •jars/py-files: 사용자 애플리케이션에 추가되어야할 라이브러리 목록 •executor-memory: 익스큐터 프로세스가 사용할 메모리 •driver-memory: 드라이버 프로세스가 사용할 메모리
  • 10. deploy mode •클라이언트 모드 •드라이버는 spark-submit의 일부로 실행됨 •드라이버 프로그램을 출력을 직접 확인 가능 (표준 출력등.) •애플리케이션 실행하는 동안 작업 노드 들에 계속 연결되어 있어야 함 •클러스터 모드 •드라이버가 클러스터내의 작업 노드중 하나에서 실행됨 •실행 후 개입하지 않는 방식 •파이썬 언어는 지원하지 않음.
  • 11. 의존성 라이브러리의 패키징 •클러스터 머신들에 해당 라이브러리가 위치해야 함 •python •클러스터의 python 패키지 매니저를 사용하여 직접 설치 •—py-files 옵션을 사용하여 라이브러리 제출 •java, scala •—jars 옵션을 사용하여 jar 파일 제출 •복잡한 의존성을 가질 경우 전체적인 전이 의존성 그래프를 같이 제출해야 함 •maven, sbt 플러그인 사용하여 패키징
  • 12. 스파크 애플리케이션간 스케쥴링 •스파크 스케쥴링 정책 •자원이 고갈되지 않고 작업 부하의 우선 순위에 따라 할당 •기본적으로 클러스터 매니저의 정책에 의존하여 스케쥴링 •익스큐터 요청시, 가능한 상태나 자원의 경쟁여부에 따라 적당한 수 할당 •대부분의 클러스터 매니저는 우선순위나 처리용량의 한계에 따른 작업 큐 기능이 있음 •페어 스케쥴러 •장시간 동작하는 애플리케이션이 작업 스케쥴링을 위해 우선 순위를 조정할 수 있게 함
  • 13. 클러스터 매니저 •공통 •익스큐터에서 가능한 많은 코어를 써서 적은 개수 익스큐터로 애플리케이션 실행 •분산된 데이터에서의 로컬리티 보장, 데이터가 있는 곳에서 태스크 실행 •Standalone •설정: executor-memory, total-executor-cores •익스큐터의 최대 개수 설정 만큼 퍼뜨리는 식으로 동작 •Hadoop Yarn •설정: executor-memory, num-executers, executor-cores •Apache mesos •설정: executor-memory, total-executor-cores
  • 14. 클러스터 매니저 선택 •Standalone •새로 배포 예정의 애플리케이션 <== 설정이 가장 쉬움 •Hadoop Yarn •다른 애플리케이션과 같이 돌리거나 우수한 자원 스케쥴링이 필요한 경우 •Apache mesos •스파크 쉘과 같은 대화형 어플리케이션 실행간 CPU 사용량을 세밀히 조정 •HDFS •저장소의 빠른 접근을 위해 HDFS와 동일한 노드에 설치
  • 15. Q&A
  • 16. References • Holden Karau, Andy Konwinski, Patrick Wendell, Matei Zaharia. 러닝 스파크(박종용 옮김). 경기도 파주시: 제이펍(주), 2015 • Spark home page: http://spark.apache.org • Understanding RDD operations: transformations and actions: https://trongkhoanguyenblog.wordpress.com/ 2014/11/27/understand-rdd-operations-transformations-and- actions/ • spark overview: http://www.slideshare.net/LisaHua/spark- overview-37479609