728x90
이 글에서 다루는 개념
Apache Spark와 Hadoop을 함께 활용하면 대용량 데이터를 효율적으로 저장하고 분석할 수 있습니다.
이번 글에서는 다음 내용을 학습합니다.
- Hadoop과 Spark의 차이 및 결합 방식
- Spark와 HDFS 연동하여 데이터 저장 및 분석
- YARN을 활용한 Spark 클러스터 관리
- Hive를 활용한 대용량 데이터 쿼리 실행
- Spark와 Hadoop을 활용한 실전 데이터 분석 사례
1️⃣ Hadoop과 Spark의 차이 및 결합 방식
📌 Hadoop과 Spark의 차이점
항목 | Hadoop (MapReduce) | Spark |
처리 방식 | 디스크 기반 (Batch Processing) | 메모리 기반 (In-Memory Processing) |
속도 | 상대적으로 느림 | 빠름 (100배 이상) |
주요 사용 사례 | 장기적인 데이터 저장, 배치 분석 | 실시간 데이터 처리, 머신러닝 |
대표 기술 | HDFS, YARN, MapReduce | RDD, DataFrame, Spark SQL |
📌 Spark와 Hadoop 결합 방식
- HDFS + Spark → 대용량 데이터를 HDFS에 저장하고 Spark로 분석
- YARN + Spark → Spark 작업을 YARN 클러스터에서 실행
- Hive + Spark SQL → 대용량 데이터를 Hive로 관리하고 Spark SQL로 쿼리 실행
2️⃣ Spark와 HDFS 연동하여 데이터 저장 및 분석
📌 HDFS에 데이터 저장
hdfs dfs -mkdir -p /data
hdfs dfs -put local_file.csv /data/
📌 Spark에서 HDFS 데이터 읽기
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("SparkHDFS").getOrCreate()
df = spark.read.csv("hdfs:///data/local_file.csv", header=True, inferSchema=True)
df.show(5)
📌 출력 예시
+------+---------+
| user | clicks |
+------+---------+
| A | 120 |
| B | 95 |
+------+---------+
📌 Spark에서 HDFS에 데이터 저장
df.write.mode("overwrite").csv("hdfs:///output/result.csv", header=True)
📌 HDFS 데이터 확인
hdfs dfs -ls /output/
3️⃣ YARN을 활용한 Spark 클러스터 관리
📌 YARN 모드에서 Spark 실행
spark-submit --master yarn --deploy-mode cluster my_spark_script.py
📌 YARN에서 실행 중인 작업 확인
yarn application -list
📌 특정 작업의 로그 확인
yarn logs -applicationId <application_id>
4️⃣ Hive를 활용한 대용량 데이터 쿼리 실행
📌 SparkSession에서 Hive 사용 설정
spark = SparkSession.builder \
.appName("SparkHive") \
.enableHiveSupport() \
.getOrCreate()
📌 Hive 테이블 생성
CREATE TABLE user_activity (
user STRING,
clicks INT
) STORED AS PARQUET;
📌 Spark에서 Hive 테이블 조회
df = spark.sql("SELECT * FROM user_activity")
df.show()
📌 출력 예시
+------+---------+
| user | clicks |
+------+---------+
| A | 120 |
| B | 95 |
+------+---------+
5️⃣ Spark와 Hadoop을 활용한 실전 데이터 분석 사례
📌 웹 로그 데이터 분석
SELECT user, COUNT(*) AS visit_count
FROM weblogs
GROUP BY user
ORDER BY visit_count DESC;
📌 HDFS에 저장된 JSON 데이터 처리
df = spark.read.json("hdfs:///data/web_logs.json")
df.printSchema()
📌 Apache Parquet 포맷으로 변환하여 저장
df.write.mode("overwrite").parquet("hdfs:///output/web_logs_parquet")
📌 실전 문제: Spark와 Hadoop 연동 연습하기
✅ 문제 1: Spark에서 HDFS 데이터를 불러와 출력하기
📌 HDFS에 저장된 sales.csv 데이터를 Spark에서 불러와 출력하세요.
# 🔽 여기에 코드 작성
df = spark.read.csv("hdfs:///data/sales.csv", header=True, inferSchema=True)
df.show(5)
✅ 문제 2: Spark 작업을 YARN 클러스터에서 실행하기
📌 YARN 클러스터에서 Spark 작업을 실행하는 명령어를 작성하세요.
# 🔽 여기에 코드 작성
spark-submit --master yarn --deploy-mode cluster my_spark_script.py
✅ 문제 3: Hive 테이블에서 Spark SQL 실행하기
📌 Hive 테이블 transactions에서 상위 5개 데이터를 조회하세요.
# 🔽 여기에 코드 작성
df = spark.sql("SELECT * FROM transactions LIMIT 5")
df.show()
✅ 문제 4: JSON 데이터를 HDFS에서 읽어와 Parquet 형식으로 저장하기
📌 HDFS에 있는 logs.json 데이터를 읽고 Parquet으로 저장하세요.
# 🔽 여기에 코드 작성
df = spark.read.json("hdfs:///data/logs.json")
df.write.mode("overwrite").parquet("hdfs:///output/logs_parquet")
728x90
'Data Engineering > python' 카테고리의 다른 글
EP30 | 고급 Python 활용 #19 | Spark를 활용한 데이터 엔지니어링 Best Practices (0) | 2025.03.19 |
---|---|
EP29 | 고급 Python 활용 #18 | Spark와 Delta Lake를 활용한 데이터 레이크 아키텍처 (0) | 2025.03.19 |
EP27 | 고급 Python 활용 #16 | Spark를 활용한 머신러닝 기반 이상 탐지 시스템 구축 (0) | 2025.03.19 |
EP26 | 고급 Python 활용 #15 | Spark를 활용한 실시간 데이터 파이프라인 구축 (0) | 2025.03.19 |
EP25 | 고급 Python 활용 #14 | Spark를 활용한 실시간 추천 시스템 구축 (0) | 2025.03.19 |