MJay

Spark 구조 본문

Cloud Computing/Spark

Spark 구조

MJSon 2017. 2. 18. 19:49

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

 

 

%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-01-06-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-6-29-42

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이랑 이어지기 때문이다

 

%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-01-06-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-6-29-25

전체적인 모습이다.

 

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에 집어 넣을 수 있다.

%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-01-06-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-6-29-07

Clouera VM에서의 구조는 어떨까?

Standalone 모드를 쓴다.

Locally 하나의 Executor Java Virtual Machine를 가지고있다.

하나의 PySpark Process를 가지고있다.

%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-01-06-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-6-28-46

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

이쪽을 다시 공부해보려고한다