하둡의 간단한 소개
하둡은 데이터 지역성이라는 개념에 바탕을 둔 데이터 저장 및 처리 플랫폼이다.
데이터 지역성은 요청한 데이터를 원격 처리 시스템이나 호스트로 보내 처리하는 기존의 방식 대신 데이터가 있는 곳으로 이동해서 계산하는 데이터 처리 방식을 말한다.
즉 클러스터를 구성하는 각 클러스터 노드에서 데이터를 보관 , 처리한 결과를 종합하여 원하는 결과를 취하는 방식이다.
하둡은 데이터를 분산 , 처리 하기 위하여 HDFS , YARN 이라는 아키텍쳐를 구성하고 있다.
하둡의 기본 구성요소 : https://chalchichi.tistory.com/77\
HDFS : https://chalchichi.tistory.com/78
YARN : https://chalchichi.tistory.com/79
아파치 스파크 소개
아파치 스파크는 하둡의 맵리듀스 구현에 대한 대안으로 만들어졌다.
하둡의 맵리듀스 : https://chalchichi.tistory.com/82
하둡 맵리듀스의 단점은 맵과 리듀스 처리 단계 사이의 중간 데이터가 디스크에 잔류한다는 것이다.
스파크는 단력적인 분산 데이터 집합이라고 불리는 분산형, 내결함성 , 인메모리 구조를 구현하고 있다.
JVM과 스칼라로 작성되었으며 높은 수준의 API 및 내결함성 프레임워크를 제공해 준다.
스파크 사용 방식
대화형 제출
대화형 제출은 사용자가 직접 Spark 셸(shell)이나 노트북 인터페이스(예: Jupyter, Zeppelin)를 통해 쿼리와 코드를 실행할 수 있게 해준다.
이 모드는 데이터 탐색, 실험, 프로토타이핑에 이상적며 사용자는 실시간으로 쿼리를 실행하고 결과를 바로 볼 수 있으므로, 데이터에 대한 이해를 빠르게 얻거나 알고리즘을 조정할 수 있다.
주요 특징
- 실시간 피드백: 사용자는 코드를 실행한 직후 결과를 볼 수 있습니다.
- 탐색적 데이터 분석: 데이터 패턴, 이상치 또는 통계를 신속하게 발견할 수 있습니다.
- 알고리즘 및 쿼리 테스트: 새로운 알고리즘 또는 쿼리를 빠르게 실험하고 조정할 수 있습니다.
비대화형 제출
비대화형 제출은 미리 정의된 작업을 Spark 클러스터에 제출하고, 작업이 자동으로 실행되도록 하는 방식
이 모드는 대량의 데이터 처리 작업, 정기적인 ETL 작업, 복잡한 데이터 파이프라인 실행 등에 적합
스크립트 또는 애플리케이션 형태로 작업을 정의하고, Spark-submit 유틸리티를 사용하여 해당 작업을 Spark 클러스터에 제출
주요 특징
- 자동화: 작업은 사용자 개입 없이 자동으로 실행될 수 있습니다.
- 대규모 데이터 처리: 큰 데이터셋에 대한 복잡한 처리 작업을 효율적으로 처리할 수 있습니다.
- 스케줄링: 작업은 예약된 시간에 실행되도록 스케줄링될 수 있습니다.
두 모드 사이의 선택은 주로 작업의 성격, 데이터의 크기, 필요한 처리 시간, 그리고 사용자의 상호작용 요구에 따라 달라집니다. 대화형 제출은 더 빠른 피드백과 탐색적 분석을 위해 사용되는 반면, 비대화형 제출은 대규모 데이터셋에 대한 복잡하고 시간이 많이 소요되는 작업에 더 적합합니다.
다음은 PySpark(파이썬을 사용하는 Spark)를 사용한 간단한 비대화형 제출 예제입니다. 이 예제에서는 Spark 세션을 생성하고, 텍스트 파일을 읽은 다음, 각 줄에 있는 단어의 수를 세고, 결과를 출력합니다.
# pyspark_example.py
from pyspark.sql import SparkSession
if __name__ == "__main__":
# Spark 세션 생성
spark = SparkSession.builder.appName("SimpleApp").getOrCreate()
# 데이터 로드
textFile = spark.read.text("YOUR_TEXT_FILE_PATH_HERE")
# 단어의 수를 세는 간단한 변환
numWords = textFile.selectExpr("explode(split(value, ' ')) as word").count()
print(f"Total number of words in file: {numWords}")
# Spark 세션 종료
spark.stop()
이 스크립트를 실행하기 위해 spark-submit 명령어를 사용하면 됩니다. 예를 들어, 아래와 같이 명령어를 사용할 수 있습니다.
spark-submit --master local[4] pyspark_example.py
이 명령어는 pyspark_example.py 스크립트를 실행하며, --master 옵션은 Spark 작업을 실행할 클러스터의 종류와 리소스를 지정합니다. 여기서 local[4]는 로컬 머신에서 4개의 코어를 사용하여 작업을 실행하겠다는 것을 의미합니다.
'Tools > Spark' 카테고리의 다른 글
RDD의 생성과 데이터 처리 (1) | 2024.03.11 |
---|---|
스파크 클러스터 동작방식 (0) | 2024.03.07 |
Spark 클러스터 환경 구성과 실행 (0) | 2024.02.19 |
Apache Spark 설정 및 튜닝 (0) | 2023.10.17 |
Spark와 RDD (0) | 2023.08.18 |