MJay
Spark 구조 본문
2c0ffa7149810378947b26bd641e5a19_spark_lesson_1_slides
Spark의 구조에 대해서 알아봅시다
스팍 프로그램은 일반적으로 Driver Program이라고 한다.
Drive Program은 수 백개의 병렬적인 작업(Worker Nodes)으로 나누어진다.
Spark의 WorkerNode에 있는 Executor에서 실행된다.
Executor는 Java Virtual Machine이다
Java Virtual Machine은 Mapping, Reducing 이나 다른 Spark 작업을 할 대 사용된다
Java Virtual Machine은 HDFS랑 연결되있다.
Spark는 Computional Jobs를 HDFS에 있는 Data로 보낸다
예로 들어보자
아마존은 1tb를 가지고있다.
Spark는 Mapping Stages를 data에서 돌릴수있게 assign해준다
동시에 또한 HDFS에 있는 데이타를 읽게 해준다.
결과는 rdd에 저장된다.
모든 computation은 executor Java Virtual Machine에서 행해진다.
Pyspark를 쓴다면 하나 하나의 process과 executor와 연결되는 것이다
Data는 Java Virutal Machine을 거쳐 python 으로 간다 for Processing
Spark는 이런 Worker Nodes를 관리해줄게 필요하다.
예로 들면 provisiong and restarting these nodes가 있다.
그걸 Cluster Manager라고 한다.
Cluster Manager는 2가지 종류를 가지고있다.
하나는 YARN이다. YARN은 Hadoop cluster manager이다.
다른 하나는 standalone이다. standalone은 노드들을 관리해주는 Spark의 special한 process이다.
YARN을 선호한다. 왜냐면 Hadoop이랑 이어지기 때문이다
전체적인 모습이다.
Driver Program을 알아보자
Driver Program은 다른 laptop이나 Amazon에 있는 node로 존재할 수 있다.
Driver Program은 Java Virtual Machine을 가지고있다.
JVM은 Spark Context라는 걸 가지고있다.
Spark Context는 Spark Instance 와 Submit Jobs 하는 걸 연결해주는 통로이다.
Spark Submit을 Batch Mode로 해서 Submit Jobs할수있다.
Batch Mode는
Batch processing is the execution of a series of jobs in a program on a computer without manual intervention (non-interactive). Strictly speaking, it is a processing mode: the execution of a series of programs each on a set or “batch” of inputs, rather than a single input (which would instead be a custom job). However, this distinction has largely been lost, and the series of steps in a batch process are often called a “job” or “batch job”.
방해없이 계속 가는 일련의 작업이다.
예로 들어보면 우리가 Python 코드를 짯다고 치자
그리고 Spark Submit을 부른다
그리고 이 Python 프로그램을 execution in batch mode로 보낸다.
마지막으로 결과를 기다린다.
아니면 Spark-shell을 열어 실시간으로 shell안에 있는 data와 interact할수있다.
Shell안에서도 SC라는 변수로 Spark Context와 연결이 된다.
우리는 Spark Context을 불러 데이타를 Spark Instance로 불러서 processing pipeline에 집어 넣을 수 있다.
Clouera VM에서의 구조는 어떨까?
Standalone 모드를 쓴다.
Locally 하나의 Executor Java Virtual Machine를 가지고있다.
하나의 PySpark Process를 가지고있다.
Amazon EMR에서 봐보자
EMR은 Elastic MapReduce
Elastic-> 융통성있다. Virtual이라고 생각하면 된다.
With Amazon EMR (Amazon EMR) you can analyze and process vast amounts of data. It does this by distributing the computational work across a cluster of virtual servers running in the Amazon cloud. The cluster is managed using an open-source framework called Hadoop.
http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-what-is-emr.html
이쪽을 다시 공부해보려고한다
'Cloud Computing > Spark' 카테고리의 다른 글
Spark-EC2 Too large frame (0) | 2017.10.02 |
---|---|
Spark에서 왜 결과값이 16*16이 아니라 4*4 인지 Code를 통해 설명 (0) | 2017.10.02 |
Spark Cluster 구조 (0) | 2017.10.02 |
Spark-EC2에서 EBS Instance Storage를 올리는 방법 (1) | 2017.10.02 |
SparkCL 논문을 읽어봄 (0) | 2017.09.12 |