일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Storm
- 스프링 배치
- Clean Code
- Spring Boot
- 엘라스틱서치
- hdfs
- docker
- elastic search
- design pattern
- hadoop
- SBT
- Angular2
- Spring XD
- Hbase
- elasticsearch
- Linux
- 제주
- nginx
- intellij
- Spring Batch
- Gradle
- spark
- 도메인주도설계
- Domain Driven Design
- DDD
- apache storm
- scala
- Spring
- hibernate
- Java
- Today
- Total
욱'S 노트
Spark - 클러스터 개요 본문
개요
This document gives a short overview of how Spark runs on clusters, to make it easier to understand the components involved. Read through the application submission guide to learn about launching applications on a cluster.
이장에서는 Spark가 클러스터에서 어떻게 동작하는지를 살펴보고 각 컴포넌트들이 어떻게 참여하는지 알아본다.
Components
스파크 어플리케이션은 클러스터상의 독립적인 프로세스에서 수행된다. 이때 일련의 프로세스들은 드라이버 프로그램의 SparkContext 객체와 협력하게 된다.
클러스터상의 실행을 위해 SparkContext는 몇몇의 타입의 클러스터 매니저와 연결하게 된다. 연결이 되면 스파크는 클러스터상의 executor를 획득하고 이 executor는 어플리케이션의 연산을 수행하고 데이터를 저장하게 된다. 그런 다음 당신의 어플리케이션 코드는 executor에 전달된다. 마지막으로 SparkContext는 각 executor에 실행할 타스크들을 전송한다.
클러스터 작업을 위해 먼저 SparkContext는 클러스터 매니저와 연결된다. 연결이 완료되면 어플리케이션의 연산 수행과 데이터 저장을 담당할 executor가 할당된다. 이 후 어플리케이션 코드가 각 executor로 전달되며 마지막으로 SparkContext가 각각의 executor에서 수행할 task를 전달한다.
각 어플리케이션은 자신만의 executor 프로세스를 가지고 된다. 이 프로세스들은 전체 어플리케이션의 수행되는 동안 유지되며 멀티 스레드로 작업을 수행한다. 이렇게 어플리케이션간의 고립은 스케쥴측면이나 실행측면에 이익이 많다. 하지만 그렇기 때문에 스파크 어플리케이션간의 데이터 공유는 외부 스토리지 시스템을 이용하지 않는다면 불가능하다.
스파크에서 클러스터 매니저의 역할은 단순하다. executor process를 획득하면 통신는 각각의 프로세스와 직접 발생한다. 이러한 구성은 클러스터 매니저의 쉽게 Mesos, Hadoop과 같은 외부 리소스와 협력할 수 있게 되었다.
드라이버 프로그램은 각 executor로부터 데이터를 주고 받기 때문에 워크노드와 네트워크로 접근이 가능해야 한다. 드라이버 프로그램이 클러스터의 타스크를 스케쥴 하기 때문에 원격 네트워크 보다는 로컬 네트워크 상에 위치하는 것이 좋다.
Cluster Manager Types
3가지 클러스터 타입을 제공한다.
Standalone – 가장 단순한 클러스터 타입
Apache Mesos – 일반적은 클러스터 매니저이며 하둡 맵리듀스와 서비스 어플리케이션도 수행할 수 있다.
Hadoop YARN – 하둡 2의 리소스 매니저
Glossary
Term | Meaning |
Application | 스파크에 생성된 유저 프로그램. 드라이버 프로그램와 익스큐터들로 구성 |
Application jar | 스파크 어플리케이션을 포함한 jar. uber jar 형태면 배포가 용이하다. |
Driver program | 어플리케이션의 main() 함수를 가지고 SparkContext를 생성하여 사용함. |
Cluster manager | 외부 서비스의 자원을 획득(e.g. standalone manager, Mesos, YARN) |
Deploy mode | 드라이버 프로세스가 실행되는 위치에 따라 구분. 클러스터 모드는 드라이버가 클러스터 내부에서 구동. 클라이언트 모드는 드라이버가 클러스터 외부에서 구동. |
Worker node | 어플리케이션을 실행하는 클러스터 노드 |
Executor | 워크노드내에서 어플리케이션을 실행시크는 프로세스 |
Task | 익스큐터로 전달되는 단위 작업 |
Job | 다수의 타스크로 구성된 병렬 연산 |
Stage | 각 작업은 일련의 단계로 분할될 수 있는데 이것을 stage라고 부름 (e.g. MapReduce에서 map과 reduce는 각각 스테이지) |
출처 : http://spark.apache.org/docs/latest/cluster-overview.html
'Programming > Spark' 카테고리의 다른 글
Spark - 어플리케이션 서브밋 (1) | 2017.03.06 |
---|---|
Spark - Stand alone 클러스터 (0) | 2017.02.17 |
Spark - RDD (0) | 2017.02.01 |
Spark - 개요 및 시작하기 (0) | 2017.02.01 |
Spark + IntelliJ 프로젝트 구성하기 (0) | 2017.02.01 |