-
Apache Spark(아파치 스파크) 학습을 위한 도커 환경 셋업하기 (feat. Zeppelin)Data 2021. 6. 20. 22:08반응형
이 글에서는 빠르게 아파치 스파크를 학습할 수 있도록 도커 기반의 스파크 환경을 구성하는 방법과 간단한 내부 구조에 대한 설명을 다룹니다.
- docker-compose up
- Spark 실행해보기
docker-compose up
먼저 아래 코드를 실행하여 docker-compose up을 실행합니다:
git clone https://github.com/kadensungbincho/de-hands-on.git cd de-hands-on/docker-apache-spark-zeppelin docker-compose up -d --build ... Starting spark-master ... done Starting spark-worker-2 ... done Starting spark-worker-1 ... done Starting spark-zeppelin ... done
아래와 같이 4개의 컨네이너가 생성된 것을 확인할 수 있습니다:
docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 568179a8dab7 bde2020/spark-worker:3.0.2-hadoop3.2 "/bin/bash /worker.sh" 21 hours ago Up 2 minutes 0.0.0.0:8082->8081/tcp, :::8082->8081/tcp spark-worker-2 ee145f03c7f2 bde2020/spark-worker:3.0.2-hadoop3.2 "/bin/bash /worker.sh" 21 hours ago Up 2 minutes 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp spark-worker-1 7962cefe77ce spark-zeppelin "/bin/sh -c '$ZEPPEL…" 21 hours ago Up 2 minutes 8081/tcp, 0.0.0.0:8888->8080/tcp spark-zeppelin 2596f54bbbc6 bde2020/spark-master:3.0.2-hadoop3.2 "/bin/bash /master.sh" 21 hours ago Up 3 minutes 0.0.0.0:7077->7077/tcp, :::7077->7077/tcp, 6066/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp spark-maste
이어서 브라우저에서 아래와 같은 주소로 각 Web UI를 확인할 수 있습니다:
위와 같이 Spark의 Master Web UI를 확인할 수 있습니다.
Worker1, 2의 UI를 확인할 수 있습니다.
Interactive하게 실행을 할 수 있는 Zeppelin에 접속할 수 있습니다.
위의 구조에서 아래와 같이 4개의 컨테이너 각각에 master, worker, zeppelin이 실행되고 있습니다.
Spark 실행해보기
위의 Zeppelin UI에서 새로운 노트북을 만들고 스파크를 실행해 볼 수 있습니다.
먼저 아래와 같은 순서로 노트북을 실행해주고,
아래와 같이 spark를 넣고 Shift + Enter를 눌러 SparkSession이 존재하며 Spark - Zeppelin이 잘 연결이 되어 있는지 확인합니다:
이후에는 아래와 같이 pyspark code를 실행해 볼 수 있습니다:
%pyspark from pyspark.sql.types import StructType,StructField, StringType, IntegerType, ArrayType # https://github.com/spark-examples/pyspark-examples/blob/master/pyspark-filter.py arrayStructureData = [ (("James","","Smith"),["Java","Scala","C++"],"OH","M"), (("Anna","Rose",""),["Spark","Java","C++"],"NY","F"), (("Julia","","Williams"),["CSharp","VB"],"OH","F"), (("Maria","Anne","Jones"),["CSharp","VB"],"NY","M"), (("Jen","Mary","Brown"),["CSharp","VB"],"NY","M"), (("Mike","Mary","Williams"),["Python","VB"],"OH","M") ] arrayStructureSchema = StructType([ StructField('name', StructType([ StructField('firstname', StringType(), True), StructField('middlename', StringType(), True), StructField('lastname', StringType(), True) ])), StructField('languages', ArrayType(StringType()), True), StructField('state', StringType(), True), StructField('gender', StringType(), True) ]) df = spark.createDataFrame(data = arrayStructureData, schema = arrayStructureSchema) df.printSchema() df.show()
이후 http://127.0.0.1:8080를 확인해보면 다음과 같이 Spark Web UI에서 작업이 실행된 것을 볼 수 있습니다:
Reference
반응형'Data' 카테고리의 다른 글
맵리듀스 작업 개선을 위한 추가적인 사항들 (2) 2021.08.28 맵리듀스란? (Hadoop MapReduce) (2) 2021.08.22 CDC(Change Data Capture)란? (0) 2021.07.16 Apache Spark(아파치 스파크) Web UI 관찰하기 (2) 2021.07.01 Databricks(데이터브릭스) Platform 아키텍쳐 및 주요개념 살펴보기 (2) 2021.06.12 Apache Spark(아파치 스파크): Adaptive Query Execution이란? (0) 2021.06.09 Apache Spark(아파치 스파크): Dynamic Partition Pruning이란? (0) 2021.06.06 Spark SQL이란? (2) 2021.06.06