Spark란?
Apache Spark는 빠르고 general-purpose cluster computing system입니다. 다시 말해서 기존에는 batch processing을 하기 위해서 MapReduce를 사용하고, sql을 사용하기 위해서는 hive를 사용하는 등 다양한 플랫폼을 도입해야 했었습니다. 하지만 이제는 Spark 하나의 시스템만을 설치해도 batch, streaming, graph processing, sql 등의 처리가 가능합니다. 또한 Spark는 Java, Scala, Python, 그리고 R언어의 API를 제공하기 때문에 쉽게(?) 구현을 할 수 있습니다. 아래의 high-level tools를 제공함으로써, 위에서 언급한 범용적인 플랫폼이라고 말할 수 있습니다.
High-Level Tools
- Spark SQL for SQL
- Hadoop의 Hive가 아닌 Spark SQL을 통해 SQL을 MapReduce없이 빠르게 처리가 가능합니다.
- Structed data processing
- Json, Parquet 등의 다양한 struced data processing을 지원합니다.
- MLlib for machine learning
- Classification, Regression, Abnormal Detection, Clustering 등의 다양한 machine learning algorithm을 제공합니다.
- GraphX for graph processing
- graph processing을 지원하는 GraphX를 제공합니다.
- Spark Streaming.
- streaming처리가 가능한 storm처럼 spark에서도 batch processing 외에도 streaming처리가 가능합니다.
Launching on a Cluster
Sparks를 클러스터에서 동작하게 하기 위해서는 cluster manager가 필요합니다.
Cluster Manager 종류
- Amazon EC2
- Standalone Deploy Mode
- Apache Mesos
- Hadoop Yarn
Download
스파크는 binary, build 버전을 받을 수 있습니다. [다운로드] 만약 binary를 다운로드 받으신다면, Hadoop버전에 맞는 package type을 선택하셔야 합니다. 저 같은 경우에는 hadoop2.6의 hdfs와 yarn위에서 동작시키기 위해 Hadoop 2.6 prebuilt된 버전을 다운로드 했습니다.
wget http://d3kbcqa49mib13.cloudfront.net/spark-1.6.1-bin-hadoop2.6.tgz
Spark version 1.6.1 은 HDFS, YARN을 사용하기 때문에 설치하고, classpath를 지정해줘야 한다. classpath 커맨드는 아래 주소를 참고
[참고] https://spark.apache.org/docs/latest/hadoop-provided.html
Binary파일이 아닌 build를 하고 싶다면, 소스를 받으시고 build를 하시면 됩니다. build하는 방법은 아래 주소를 참고하세요.
[참고] https://spark.apache.org/docs/latest/building-spark.html
스파크는 Windows, UNIX (e.g. Linux, Mac OS)에서 동작이 가능합니다. Spark를 사용하기 위해서는 사전 설치해야하는 항목들이 있습니다. Spark는 JVM위에서 동작하기 때문에 JAVA는 필수입니다. Java 7+, Python 2.6+, R 3.1+, Scala를 사용하기 위해서는 2.10을 설치해야 합니다.
Running the Examples and Shell
Spark를 다운로드 받으면 $SPARK_HOME/examples/src/main의 경로에 언어별로 간단한 예제를 제공하고 있습니다.
$SPARK_HOME/bin/run-example SparkPi 10
interactive scala shell을 실행할 수 있습니다.
$SPARK_HOME/bin/spark-shell --master local[2]
--master local[2] 옵션은 spark를 2개의 worker threads로 locally 실행한다의 의미 입니다. (--help로 확인 가능)더 자세한 내용은 아래 참고하세요.
[참고] https://spark.apache.org/docs/latest/submitting-applications.html#master-urls
$SPARK_HOME/bin/pyspark --master local[2]
python interative shell도 제공을 합니다.
$SPARK_HOME/bin/spark-submit examples/src/main/python/pi.py 10
실행 결과는 Pi is roughly 3.140176
Spark 1.4부터 R을 제공합니다.
$SPARK_HOME/bin/sparkR --master local[2]
$SPARK_HOME/bin/spark-submit examples/src/main/r/dataframe.R
[참고] https://spark.apache.org/docs/latest/index.html
'빅데이터 > Spark' 카테고리의 다른 글
[Spark] RDD Architecture (0) | 2016.07.15 |
---|---|
Spark RDD - Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing (0) | 2016.07.01 |
Spark Shell을 이용한 간단한 예제 및 앱 배포 방법 (0) | 2016.06.16 |
Spark - RDD (0) | 2016.06.16 |
Spark 클러스터 구조 (0) | 2016.06.13 |