티스토리 뷰

Programming/Data

PySpark : 1. Hadoop, Mapreduce, Spark

prograsshopper_ 2024. 1. 28. 17:38

*유데미 강의 'PySpark 로 빅데이터 분석하기 with Python'로 공부한거 정리

 

분산시스템

필요성: 램보다 큰 데이터를 처리하는 경우의 해결 방법의 일환으로, 분산시스템을 활용해 여러 기계와 컴퓨터로 데이터를 분배해서 데이터를 처리할 수 있다.

  • 하나의 메인 컴퓨터(마스터 노드)에서 데이터 처리 및 계산을 다른 컴퓨터들에 분배한다. 여기서 마스터노드의 CPU와 램은 슬레이브노드의 CPU와 램이 잘 동작하는 것을 관장한다.
  • 여러 컴퓨터들의 힘을 모아 강력한 단일 컴퓨터보다 더 나은 성능을 발휘할 수 있음, 즉 다소 성능이 떨어지는 컴퓨터나 서버라도 분산시스템을 통해 연산을 잘 분배해서 동작할 수 있다.
    • 단일 컴퓨터가 스케일업하는 것보다 분산시스템이 스케일 아웃하기 좋음
    • 내고장성(fault tolerance): 기계 하나가 고장나도 다른 기계들을 통해 연산 가능

하둡(Hadoop)

  • 방대한 데이터셋이 단순한 프로그래밍 모델을 사용한 여러 대의 컴퓨터 상의 클러스터를 통해 분산 처리될 수 있도록 하는 프레임워크(The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models)
  • 중요개념으로 HDFS와 맵리듀스(MapReduce)가 있는데, HDFS는 방대한 양의 데이터의 분배를 맡고, Mapreduce는 분산된 데이터세트 연산이 되게 한다.

HDFS(Hadoop Distributed File System)

  • 데이터에 대해 접근할 수있도록 제공하는 하둡의 파일시스템. 거대한 데이터셋을 분산한다.
  • 기본적으로 128mb의 값을 가진 블록을 사용하고, 각 블록은 3번 복제된 뒤 내고장성을 위해 분산됨 -> 데이터블록이 작을 수록 병렬처리는 더 많아지고, 여기서 노드의 고장으로 인한 데이터 손실 방지

맵리듀스(Mapreduce)

  • 분산된 데이터가 연산될 수 있게 해주도록 HDFS가 활용하는 것중 하나. 분산된 데이터셋에 대한 연산 태스크를 분산하는 용도.
  • 잡 트랙커와 다중 테스트 트랙커로 이뤄져있음  *트랙커는 스파크의 개념에서도 쓰임
  • 잡 트랙커는 작업 코드를 태스크 트랙커로 보낸다. 테스크 트랙커는 요청된 작업을 CPU와 메모리에 할당및 모니터링하고, 워커 노드상의 테스크를 관찰한다.

 

스파크(Spark)

  • 큰 용량의 데이터를 다루고 분산된 네트워크에 연산과정을 배분하는 프레임워크. 아파치사의 오픈 소스 프로젝트로 모든 소스 코드에 접근 가능
  • 분산에 대한 개념을 개선, 쉽고 빠르게 분산 데이터를 처리. 때문에 맵리듀스의 대안으로 여겨짐
  • 다양한 데이터서식에 접근이 가능하다.
  • RDD(회복형 분산 데이터): 스파크에 있음. 맵리듀스 구조와 다소 유사해보인다. 변환되지 않으며, 지연된 연산을 하고, 캐싱이 가능하다.
  • 스파크는 변환(Transformation)과 액션(Actions), 두가지 동작을 한다. 변환은 일종의 레시피고, 액션은 레시피를 실행으로 옮기는 행동
    • 메서드 호출을 위해 데이터프레임에서 파이스파크를 활용해 데이터를 불러오는 대다수의 경우 액션을 취하지 않으면 어떤 결과도 나타나지 않을 것. 액션 전까지는 변화가 없는데, 방대한 데이터를 매번 연산하는 것은 무리가는 행동이기 때문이다. 따라서 이 모든 과정은 변환과 액션으로 나뉘어 호출이 왔을때만 작동하게 됨
  • 공식 링크: https://spark.apache.org/

스파크와 맵리듀스 차이

  • 맵리듀스는 연산의 절반을 담당하며, 파일들을 HDFS에 저장한다.
  • 스파크가 맵리듀스보다 100배 더 빠름
  • 맵리듀스는 맵과 리듀스작업끝마다 디스크에 파일기록을 하나 스파크는 메모리에 기록한다(메모리 부족시에만 디스크에 저장)
    • 하드 드라이브 대신 램에서 데이터를 읽고 기록하는 것이 타당함

 

스파크는 데이터프레임 기반의 문법을 차용하는 쪽으로 가고 있음

  • RDD는 데이터가 물리적으로 정리되는 방법이라 보고, 사용자가 작업하는 관련 구문만이 데이터프레임이라고 생각하면 된다.

 

 

학습 환경

  • 다양한 방법들이 나오는데 처음엔 스파크 창조자가 세운 회사인 Databricks를 사용할까 했으나 학습 단계에서 유료 서비스를 사용하기 번거로울 것 같아 Kaggle의 노트북을 활용하다 추후 고급작업을 하게 될 경우 해당 서비스를 사용해보기로 했다.
반응형

'Programming > Data' 카테고리의 다른 글

PySpark : 2. Spark Dataframe Basics 1, 2  (0) 2024.02.01
Kaggle - Intro to Machine Learning  (0) 2020.02.24
Datacamp SQL Fundamentals <1>  (0) 2019.09.24
Numpy <1>  (0) 2019.01.03
댓글