Spark란? 설치 및 예제

2021. 5. 6. 01:28 Big Data/Apache Spark

 

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