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 확인