Hadoop Ecosystem/Spark

Apache Spark 설치 및 실습

문기문기! 2024. 6. 16. 17:17

맵리듀스 실습에 이어 Apache Spark 실습을 해보자! (WSL2 환경)

https://kind-door.tistory.com/27

 

Hadoop 맵리듀스 실습하기

맵리듀스를 python으로 구현해보자 1. mapper, reducer 실행 파일 생성# mapreduce 폴더 생성cd $HADOOP_HOMEmkdir mapreduce# mapper.py 파일 생성 및 수정cd mapreducegedit mapper.py# reducer.py 파일 생성 및 수정gedit reducer.py

kind-door.tistory.com

 

 

 

1. Apache Spark 설치

# Spark 다운로드
wget https://dlcdn.apache.org/spark/spark-3.5.1/spark-3.5.1-bin-hadoop3.tgz

# 압축파일 해제
tar -xvzf spark-3.5.1-bin-hadoop3.2.tgz

# 폴더명 변경
mv spark-3.5.1-bin-hadoop3 spark

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

위 링크를 참고하여 Hadoop 과 Spark 버전 호환 고려하여 설치

 

2. 환경설정

1) 환경변수 설정

# 환경변수 추가
vi .bashrc

export SPARK_HOME=/home/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin  

# 환경변수 적용
source .bashrc

# 설치확인
spark-submit --version

 

 

2) 설정파일 수정

# conf 경로에서 설정파일 템플릿 복사
cp spark-env.sh.template spark-env.sh

# 환경변수 추가
vi spark-env.sh

export SPARK_WORKER_INSTANCES=2

 

 

3. Spark 실행

1) Hadoop 실행

start-all.sh

 

2) 언어별 Spark 실행

# scala
spark-shell

# SQL
spark-sql

# Python
pyspark

 

 

 

3) .py 파일 실행

기존 맵리듀스에서 실습했던 wordcount를 spark에서 실행

hdfs에 있는 ebook.txt 를 가져와 단어 개수를 출력

# wordcount.py

from pyspark.sql import SparkSession
from pyspark.sql.functions import explode, split, col, count

# PySpark 세션 생성
spark = SparkSession.builder.appName("WordCount").getOrCreate()

# HDFS에서 텍스트 파일 읽기
df = spark.read.text("hdfs://localhost:9000/user/mapreduce/input/ebook.txt")

# 각 줄을 단어로 분리하여 "word" 컬럼 생성
words_df = df.select(explode(split(col("value"), " ")).alias("word"))

# 각 단어의 발생 횟수 계산
word_counts_df = words_df.groupBy("word").agg(count("word").alias("count"))

# 결과 출력
word_counts_df.show(truncate=False)

# Spark 세션 종료
# spark.stop()

 

wordcount.py 파일을 pyspark 환경에서 실행

# script 폴더에 py파일 생성
mkdir script
cd script
gedit wordcount.py

# wordcount.py 파일 실행
exec(open('wordcount.py').read())

 

 

4) Web UI 확인