2010년에 처음 선 보인 Spark가 10주년이 되는 올해 6월 18일에 3.x 대 첫 버전인 3.0.0 릴리즈를 공개했습니다.

  Spark 3.0에서 기능 개선이 가장 많았던(top active component) 것은 Spark SQL인데요. TPC-DS 30TB 벤치마크 테스트에서 Spark 2.4 비해 2배 정도 빠른 성능을 보여줬다고 합니다.

  그 외 Spark 3.0의 주요 New feature는 아래와 같습니다.

  • adaptive query execution
  • dynamic partition pruning
  • ANSI SQL compliance
  • significant improvements in pandas APIs
  • new UI for structured streaming
  • up to 40x speedups for calling R user-defined functions
  • accelerator-aware scheduler

 

  이제 본격적으로 Spark 3.0.0을 설치해보도록 하겠습니다.

1. 자바 설치

  스파크는 스칼라로 구현되어 있으며, 자바 가상 머신(JVM) 기반에서 동작합니다.
  따라서, 스파크를 설치하기 위해서는 사전에 자바가 설치되어야 합니다.

  스파크 3.0.0은 자바 11버전을 지원하므로,  JDK 11 버전을 다운로드 받아 설치합니다.

  * URL : https://spark.apache.org/releases/spark-release-3-0-0.html

 

  Java SE 11 버전 설치는 아래 포스트를 참고 바랍니다.

https://sparkdia.tistory.com/64

 

Java SE 11 설치 on Windows 10

  윈도우 10 환경에서 Java se 10 설치 작업을 진행해보겠습니다. 이 포스트를 작성하는 시점에 릴리즈된 DK 최신 버전은 14입니다. 하지만 제가 설치하고자 하는 프로그램과 호환이되는 버전이 필��

sparkdia.tistory.com

 

 

2. 파이썬(Python) 설치

  스파크 3.0.0에서 파이썬 2 버전대는 더 이상 지원하지 않는다고 합니다.

  아래 파이썬 홈페이지 접속하여 최신 버전인 3.8.3을 다운로드받아 설치합니다.

https://www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

 

 

 

3. 스파크 다운로드 및 압축해제

  아래 URL에 접속하여 스파크 다운로드 페이지로 이동합니다.

* URL : https://spark.apache.org/downloads.html

 

Downloads | Apache Spark

Download Apache Spark™ Choose a Spark release: Choose a package type: Download Spark: Verify this release using the and project release KEYS. Note that, Spark 2.x is pre-built with Scala 2.11 except version 2.4.2, which is pre-built with Scala 2.12. Spar

spark.apache.org

 

  스파크 릴리즈를 3.0.0으로 선택하고, 하둡 3.2가 포함된 패키지를 선택합니다.

  Download Spark 옆의 링크를 클릭하면 다운로드가 가능한 미러 사이트 목록이 표시되는 아래 페이지로 이동합니다.

  위 미러 사이트 중 한 곳을 선택하여 설치 파일을 다운로드 받습니다.

 

4. 스파크 설치

  다운로드 받은 파일을 설치하고자 하는 디렉토리(예: C:\Spark\)에 옮긴 후 압축을 해제합니다.

 

 

5. Winutils 설치

  아래 URL에 접속하여 Spark 다운로드 시 선택한 하둡 버전에 맞는 winutils.exe 파일을 다운로드 받아야 합니다.

  * URL : https://github.com/cdarlint/winutils

  이 포스트에서는 하둡 3.2 버전을 선택하였으므로 하단 URL에 접속하여 winutils.exe 파일을 다운로드 합니다.

  * URL : https://github.com/cdarlint/winutils/tree/master/hadoop-3.2.1/bin

  위 페이지의 winutils.exe 링크에서 오른쪽 마우스를 클릭하여 팝업 메뉴를 띄웁니다. 팝업 메뉴 중 '다른 이름으로 링크 저장'을 클릭하여 winutils.exe 파일을 다운로드 합니다.

  C:\에 Hadoop\bin 디렉토리를 생성합니다. 생성된 bin 디렉토리에 다운로드 받은 winutils.exe 파일을 이동시킵니다.

 

 

6. 환경설정

  탐색기에서 [내 PC]를 선택 후 마우스 오른쪽 버튼을 클릭하여 팝업 메뉴를 띄웁니다. 팝업 메뉴 중 하단의 '속성'을 클릭합니다.

 

  왼쪽 메뉴 하단의 '고급 시스템 설정'을 클릭합니다.

 

  시스템 속성 다이얼로그에서 '고급' 탭을 선택 후 하단의 '환경 변수' 버튼을 클릭합니다.

 

  환경 변수 다이얼로그의 '시스템 변수'에서 '새로 만들기'를 클릭합니다.

 

  변수 이름은 'SPARK_HOME', 변수 값은 스파크 설치 디렉토리 명(예: C:\Spark\spark-3.0.0-bin-hadoop3.2)을 입력합니다.

 

 다시 한번 '새로 만들기' 버튼을 클릭 후 변수 이름은 'HADOOP_HOME', 변수 값은 'C:\Hadoop'을 입력합니다.

 

  시스템 변수 중 'Path'를 선택 후 '편집' 버튼을 눌러 아래와 같이 '%SPARK_HOME%\bin'과 '%HADOOP_HOME%\bin 경로를 추가해줍니다.

 

 

7. 스파크 실행

  명령 프롬프트를 실행하여 커맨드에서 pyspark를 입력하면 아래와 같이 pyspark가 실행되는 것을 확인하실 수 있습니다.

 

  테스트로 prod_list.csv 파일을 읽어 prod라는 데이터프레임을 생성한 후, COLOR별 건수를 출력하는 예제를 실행해보았습니다.

prod = spark.read.csv("C:\\Spark\\sample\\prod_list.csv", header="true", inferSchema="true")
prod.groupBy("COLOR").count().show()

 

 

8. 스파크 Web UI

  아래 URL을 통해서 스파크 웹 UI에 접속 가능합니다.

* URL : http://localhost:4040/

  스파크 내에서 실행 중인 잡 목록을 모니터링 할 수 있으며, 아래와 같이 Stage별 DAG도 확인이 가능합니다.

 

[Ref.] https://phoenixnap.com/kb/install-spark-on-windows-10

'BigData > Spark' 카테고리의 다른 글

스파크(Spark) 실행하기 on Databricks  (2) 2020.06.22
Spark 2.1.3 설치 (CentOS 8)  (0) 2020.06.14

 

  데이터 브릭스(Databricks)는 아파치 스파크 실행환경을 제공해주는 클라우드 기반의 플랫폼입니다.

  Notebook 형태로 스파크 소스를 테스트할 수 있는 웹 UI환경을 제공해주므로, 설치 작업 없이도 스파크를 직접 테스트해 볼 수 있습니다.

  데이터브릭스는 두 개의 플랫폼 DATABRICKS PLAFORM과 COMMUNITY EDITION이 존재합니다.
  BUSINESS용인 DATABRICKS PLAFORM은 제약 없이 모든 기능을 사용할 수 있으며. 무료로 Trial 버전을 14일간 사용할 수 있습니다.
  COMMUNITY EDITION은 스파크 학습자를 위한 무료 버전으로 기능이 제한적입니다.

 

  데이터브릭스를 사용하기 위해서는 아래 URL에 접속하여 사용자 등록을 해야 합니다.

* URL : https://databricks.com/try-databricks

 

Try Databricks

Discover why businesses are turning to Databricks to accelerate innovation. Try Databricks’ Full Platform Trial risk-free for 14 days!

databricks.com

 

  위 URL에 접속하면 아래와 같이 사용자 기본 정보를 입력하는 화면이 표시됩니다.

 

  개인 정보를 입력 후 'SIGN UP' 버튼을 클릭하면 데이터브릭스 버전을 선택하는 화면이 표시됩니다.
  이 포스트에서는 Commuity edtion을 선택하여 테스트를 진행해보도록 하겠습니다.

 

 

 

  Commuity edtion의 'GET STARTED' 버튼을 클릭하면 아래와 같이 이메일을 확인하라는 메세지가 출력됩니다.

 

 

  이메일 본문 중에서 'Get started by visiting' 오른쪽의 링크를 클릭하여 이메일을 인증합니다.

 

 

  위 링크를 클릭하면 아래와 같이 계정 비밀번호을 설정하는 화면으로 이동합니다.

 

 

  비밀번호 변경 작업이 완료되면 아래와 같이 데이터브릭스 초기 화면을 볼 수 있습니다.

  화면 중앙에 'Explore the Quickstart Tutorial'을 클릭하면 기본 사용 방법이 정리된 Notebook을 확인하실 수 있습니다.
  이 포스트에서도 위 튜토리얼을 따라서 테스트를 진행해보도록 하겠습니다.

 

 

  데이터브릭스를 사용하기 위해서는 제일 먼저 클러스터를 생성해야 합니다.
  위 화면에서 'New Cluster'를 클릭하여 클러스터 생성 작업을 진행합니다.

  또는 아래와 같이 왼쪽 메뉴에서 'Clusters'를 클릭한 후 나타나는 Clusters 페이지 상단의 'Create Cluster' 버튼을 클릭하여 클러스터를 생성할 수도 있습니다.

 

 

  클러스터 생성화면에서 생성할 클러스터의 이름을 입력하고, Runtime Version을 선택합니다.
  Runtime Version은 테스트하고자 하는 Scala나 Spark의 버전을 기준으로 선택하면 됩니다.
  여기서는 튜토리얼에서 제시된 6.3 (Scala 2.11, Spark 2.4.4) 버전을 선택하도록 하겠습니다.

 

 

  입력이 완료되면 'Create Cluster' 버튼을 클릭하여 클러스터를 생성합니다.

  Clusters 페이지에서 생성된 클러스터를 확인할 수 있습니다.

 

 

 

  이어서 Notebook을 생성하도록 하겠습니다.

 

  위 초기화면 중앙에 위치한 'New Notebook' 메뉴를 클릭하여 신규 노트북을 생성할 수 있습니다.

  또는 아래와 같이 메뉴 'Workspace'에서 계정명 옆의 '∨' 아이콘을 클릭하면 아래와 같이 Notebook을 생성하는 메뉴를 확인하실 수 있습니다. 해당 메뉴를 통해서도 노트북 생성이 가능합니다.

 

 

  노트북 생성 메뉴를 실행하면 아래와 같이 노트북 생성 화면이 표시됩니다.

 

 

  노트북 이름을 입력하고 'Defalut Language'는 우선 SQL을 선택하도록 하겠습니다.
  'Cluster'는 방금 전에 생성한 클러스터를 선택하면 됩니다.
  'Create' 버튼을 클릭하면 아래와 같이 생성된 노트북 페이지가 표시됩니다.

 

 

 

  데이터브릭스에서 제공해주는 diamonds.csv 파일을 소스 데이터로 읽어들이는 diamonds 테이블을 생성하도록 하겠습니다.

 

DROP TABLE IF EXISTS diamonds;

CREATE TABLE diamonds
USING csv
OPTIONS (path "/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header "true")

 

  노트북 셀(cells) 또는 커맨드(commands)에 위 SQL을 입력한 후 실행합니다.
  셀에서 shift+Enter를 입력하거나 셀 오른쪽 상단의 '▶' 아이콘을 클릭하면 해당 셀 내 SQL이 실행됩니다. 

 

 

  SQL을 실행하면 위와 같이 셀 하단에 Spark Jobs 목록과 실행 결과가 표시됩니다.

  위에서 생성한 테이블은 'Data' 메뉴에서도 확인 가능합니다.

 

 

 

  방금 생성한 diamonds 테이블의 데이터를 조회해보도록 하겠습니다.

SELECT * from diamonds

 

 

  GROUP BY 구문을 사용해 색상(color)별 평균 가격(price)을 계산할 수도 있습니다.

SELECT color, avg(price) AS price FROM diamonds GROUP BY color ORDER BY color

 

  Select문을 실행하여 출력된 데이터는 테이블 형태나 다양한 형태의 그래프로 확인할 수 있습니다.
  결과 데이터 셋 화면 아래에 Bar 그래프 아이콘을 클릭하면 다양한 형태의 그래프 옵션을 볼 수 있으며, 출력하고자 하는 형태의 그래프를 선택하여 쉽게 그래프를 출력할 수 있습니다.

 

 

  아래는 diamonds 테이블 데이터의 색상별 평균 가격을 Bar 그래프로 출력한 결과입니다.

 

 

 

  현재 테스트 중인 노트북의 기본 언어를 SQL로 선택했지만 '%python' 명령어를 이용해 파이썬 명령어도 해당 노트북에서 실행할 수 있습니다.
  위에서 SQL로 테스트한 작업을 파이썬 명령어를 이용해서 다시 테스트해보도록 하겠습니다.

 

  diamonds.csv 파일을 읽어 diamonds 데이터 프레임을 생성합니다.

%python
diamonds = spark.read.csv("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header="true", inferSchema="true")

 

  diamonds 데이터 프레임에서 색상(color)별 평균 가격(price)를 추출합니다.

%python
from pyspark.sql.functions import avg

display(diamonds.select("color","price").groupBy("color").agg(avg("price")).sort("color"))

 

  위 실행 결과도 아래와 같이 그래프로 확인해보겠습니다.

 

 

 

'BigData > Spark' 카테고리의 다른 글

스파크(Spark) 3.0.0 설치 on Windows 10  (0) 2020.06.28
Spark 2.1.3 설치 (CentOS 8)  (0) 2020.06.14

  CentOS 8 환경(VirtaulBox를 이용한 가상 환경)에서 Spark를 설치해보겠습니다.

  이 포스트를 작성하는 시점에 최종 릴리즈 버전은 2.4.6이지만,
  테스트 환경의 자바 버전이 JDK 7인 관계로 2.1.3 버전을 설치하고자 합니다.

  설치 환경 정보는 아래와 같습니다.

- Spark : 2.1.3
- Hadoop : 2.10.0
- OS : CentOS 8 (VirtualBox 6)
- Java : JDK 7 

 

1. Spark 설치 파일 다운로드

  Spark 설치 파일을 다운로드하기 위해 아래 spark 다운로드 사이트에 접속합니다.

  *  URL : https://spark.apache.org/downloads.html

  이번에 설치할 Spark 2.1.3 버전은 최신 릴리즈 버전이 아니므로 홈페이지 하단에 'Spark release archives'를 클릭하여 아카이브 페이지에 접속합니다.

 

  아카이브의 Spark-2.1.3 하위 디렉토리에 접속하면 위와 같은 설치 파일을 확인하실 수 있습니다.

  이 포스트에서는 Hadoop이 설치된 환경에서 Spark를 설치할 계획이므로 'spark-2.3.4-bin-without-hadoop.tgz' 파일을 사용하도록 하겠습니다.

 

  위 설치파일의 링크 주소를 복사한 뒤 wget을 이용해 파일을 로컬에 다운로드합니다.

 

> sudo wget https://archive.apache.org/dist/spark/spark-2.1.3/spark-2.1.3-bin-without-hadoop.tgz

  참고로 Hadoop 설치 방법은 아래 포스트에서 확인할 수 있습니다.

 

하둡(Hadoop) 설치하기[#1] - 설치 준비

데스크탑이 너무 느려져서 포맷을 했더니, VirtualBox에서 하둡 관리노드가 있던 가상 OS만 복구가 안되는 상황을 맞이하게 되었습니다.;; 이번 기회에 다시 한번 하둡을 설치하면서 여기에 그 과정

sparkdia.tistory.com

 

 

2. 설치 파일 압축 해제

  다운로드 한 파일을 압축해제합니다.

 

  > sudo tar -xvzf ./spark-2.1.3-bin-without-hadoop.tgz

 

  압축 해제된 파일의 소유자를 변경하고 디렉토리명을 spark-2.1.3으로 변경합니다.

  > sudo chown -R hduser:hadoop ./spark-2.1.3-bin-without-hadoop
  > sudo mv spark-2.1.3-bin-without-hadoop spark-2.1.3

 

 

3. 환경 변수 설정

  사용자 홈 디렉토리 내 .bashrc 파일을 열어 아래와 같이 환경변수와 PATH를 추가해줍니다.

export SPARK_HOME=/usr/local/spark-2.1.3
export PATH=$PATH:$SPARK_HOME/bin

 

  하둡이 포함되지 않은 설치 파일을 다운로드한 경우 하둡의 CLASSPATH를 설정해줘야 합니다.

  $SPARK_HOME/conf/spark-env.sh 파일을 생성하고 아래와 같이 입력합니다.

export SPARK_DIST_CLASSPATH=$(${HADOOP_HOME}/bin/hadoop classpath)

 

 

4. 실행 테스트 1

  ${SPARK_HOME}/bin./spark-shell을 실행하여 설정이 정상적으로 완료되었는지 확인해봅니다.

  > spark-shell

  위와 같은 Welcome 메시지가 출력되면 정상적으로 설정된 것입니다.

 

  만약, spark-shell 실행 시 아래와 같은 에러 로그가 출력된다면 SPARK_DIST_CLASSPATH 설정이 잘못된 것입니다.

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream

 

  위와 같은 에러가 발생한다면 점검을 위해 직접 쉘 프롬프트에서 classpath 설정 구문을 테스트해보는 것도 하나의 해결 방법이 될 것입니다.

  > export SPARK_DIST_CLASSPATH=$(${HADOOP_HOME}/bin/hadoop classpath)
  > echo $SPARK_DIST_CLASSPATH

 

  아래와 같이 실제로 hadoop 명령어가 제대로 작동되는지 확인하는 것도 하나의 해결 방법이 될 수 있습니다.

 

 > ${HADOOP_HOME}/bin/hadoop classpath

 

 

5. Spark 서비스 시작 및 종료

  ${SPARK_HOME}/sbin/start-all.sh을 실행하면 Spark 서비스를 시작할 수 있습니다.

  > ${SPARK_HOME}/sbin/start-all.sh

  jps 실행 시 Master와 Wroker 프로세스가 확인된다면 정상적으로 Spark 서비스가 시작된 것입니다.

 

  웹 브라우저에서 아래 URL(기본 포트 : 8080)을 통해 Spark Web UI를 확인하실 수 있습니다.

* URL : http://서버IP:8080

 

  Spark 서비스 종료는 ${SPARK_HOME}/sbin/stop-all.sh을 실행하면 됩니다.

  > ${SPARK_HOME}/sbin/stop-all.sh

 

 

6. 실행 테스트 2

  spark-submit을 통해서 작성된 Spark application을 실행할 수 있습니다.

  Spark에서 제공하는 SparkPi 샘플 프로그램을 yarn 환경에서 cluster 모드로 실행하는 명령어는 아래와 같습니다.

spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
${SPARK_HOME}/examples/jars/spark-examples*.jar \
10

  위 명령어를 실행하면 아래와 같이 Hadoop resource manager 웹 페이지에서 spark application이 실행된 것을 확인하실 수 있습니다.

 

 

[Ref.] https://spark.apache.org/docs/2.1.3/hadoop-provided.html

 

'BigData > Spark' 카테고리의 다른 글

스파크(Spark) 3.0.0 설치 on Windows 10  (0) 2020.06.28
스파크(Spark) 실행하기 on Databricks  (2) 2020.06.22

+ Recent posts