본문 바로가기
Programming/Spark

[Spark] 1장 - 빅데이터, 하둡 및 스파크 소개

by HouseDust 2022. 8. 19.
반응형

1장 - 빅데이터, 하둡 및 스파크 소개

 

하둡(Hadoop)의 등장 배경

2000년대 초, 검색엔진 제공 업체에서 인터넷 규모 문제에 직면하고 이를 해결하기 위해 새로운 기능을 독자적으로 개발함.

  • 2003, '더 구글 : 파일 시스템'
  • 2004, '맵리듀스 : 대형 클러스터에서의 단순화된 데이터 처리'

이 과정에서 Lucene 프로젝트 기반 Nutch 웹 크롤러 프로젝트를 마무리하며 저장 처리 원칙을 통합하게 되는데,

이 결과물이 바로 하둡(Hadoop)이다.

  • 하둡이 시작된 시기에 발생한 기술혁신
    • 전자 상거래의 급속한 팽창
    • 모바일 인터넷의 탄생과 빠른 성장
    • 블로그 및 사용자 중심 웹 콘텐츠
    • 소셜 미디어
    위와 같은 기술 혁신은 데이터 생성량의 급격한 증가를 초래했고 스파크, 카프카, HBase, 카산드라와 같은 기술이 등장했다.

하둡(Hadoop)?

데이터 지역성이라는 개념에 바탕을 둔 데이터 저장 및 처리 플랫폼

→ 데이터 지역성(Data Locality) : 요청한 데이터를 보내서 처리하는 것이 아니라, 데이터가 있는 곳으로 이동해서 계산하는 데이터 처리방식. 빅데이터의 경우, 많은 양의 데이터를 이동하는 것은 비효율적이다.

대용량 데이터가 비공유 접근을 사용하는 클러스터의 노드에서 지역적으로 처리될 수 있게 한다. 각 노드는 다른 노드들과 통신할 필요 없이, 전체 데이터의 훨씬 작은 부분을 독립적으로 처리할 수 있다.

하둡에는 기록연산과 관련된 스키마가 없다. => 스키마-온-리드(Schema-on-read)

→ 비구조화 문서, 반구조화 문서, 구조화 문서까지 광범위한 데이터를 저장하고 처리할 수 있다는 의미

↔ schema-on-write

하둡 구성

  • HDFS(Hadoop Distributed File System) : 하둡의 스토리지 서브시스템
  • YARN(Yet Another Resource Negotiator) : 하둡의 프로세싱 또는 리소스 스케줄링 서브시스템

위 두 가지가 합쳐진 조합을 하둡 클러스터라고 한다. 각 구성요소는 클러스터에서 서로 독립적으로 작동할 수 있다.

  • 클러스터 ? 연산이나 프로세싱함수를 수행하기 위해 함께 작동하는 시스템 모음. 클러스터 내 개별 서버를 **노드(Node)**라 한다.

하둡과 상호작용하거나 통합하는 프로젝트 => 하둡 에코시스템 프로젝트 (ex. 플룸, 스쿱, 피그, 하이브 등)

HDFS(Hadoop Distributed File System) : 하나 이상의 노드에 파일이 분산되어 있는 블록으로 구성된 가상 파일 시스템.

*인제션(ingestion)*이라는 프로세스는 파일시스템에 데이터를 업로드할 때 구성된 블록의 크기에 따라 무작위로 파일을 나눈다.

YARN

아파치 스파크(Apache Spark)

Mesos연구 프로젝트의 일환으로 만들어졌으며, 맵리듀스를 대체할 수있는 리소스 스케줄링 및 오케스트레이션 시스템을 검토하도록 설계됨. 맵리듀스 방식의 단점 : 맵과 리듀스 처리 단계 사이에 중간 데이터가 디스크에 잔류하는 것

대화형 쿼리나 실시간 대기시간이 짧은 응용 프로그램에는 적합하지 않음

탄력적인 분산 데이터 집합(RDD, Resilient Distributed Dataset)

→ 분산형, 내결함성, 인메모리 구조

메모리 사용을 극대화하여 성능을 향상시킴

반복적인 머신러닝 작업, 대화형 쿼리에 적합

인프라나 환경문제가 아닌 논리에 집중할 수 있도록 높은 수준의 API 및 내결함성 프레임워크를 제공

  • 지원 기능
    • ETL(Extract-Transform-Load)연산
    • 예측 분석 및 머신러닝
    • SQL 쿼리 및 시각화와 같은 데이터 엑세스 작업
    • 텍스트 마이닝 및 텍스트 처리
    • 실시간 이벤트 처리
    • 그래프 응용 프로그램
    • 패턴 인식
    • 추천 엔진

스파크는 스칼라로 작성되었으며, JVM위에서 실행된다.

스칼라, 파이썬, 자바, SQL, R 언어 인터페이스를 제공한다.

대화식 또는 미니배치 및 마이크로배치 작업을 포함한 배치 작업으로 실행(spark-submit)이 가능하다.

파이썬과 스칼라로 대화형 프로그래밍 shell을 사용할 수 있다.

  • python 자료형
    • 리스트
    • 튜플
    • 딕셔너리

객체 직렬화(Serialization)

  • json
  • pickle

익명함수 lambda

함수를 인수로 받고, 반환값으로 함수를 넘기는 고차원 함수

클로저(closure) - 참고자료


추가로 확인해 볼 용어 및 개념

데이터 지역성(Data Locality) : 데이터 지역성(Data Locality) : 요청한 데이터를 보내서 처리하는 것이 아니라, 데이터가 있는 곳으로 이동해서 계산하는 데이터 처리방식.

비공유(Shared Nothing) : 아무것도 공유하지않는다. 네트워크 이외 자원을 모두 분리하는 것. 병렬처리를 가능하게하여 선형적으로 성능이 향상된다는 장점이 있다. 구글의 샤딩(sharding) (출처 : 티스토리)

맵리듀스(Map Reduce) : Map(분할연산) - Reduce(조인) (출처 : 티스토리)

네트워크 토폴로지(Network Topology) : 컴퓨터 네트워크의 요소들을 물리적으로 연결해 놓은 것, 또는 그 연결 방식 (출처 : 위키백과)

내결함성(fault tolerance) : 시스템의 일부 구성 요소가 작동하지 않더라도 계속 작동할 수 있는 기능. 내장된 중복 기능이라고 볼 수 있다. (출처 : AUSG)

데몬(daemon) : 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램 (출처 : 위키백과)

RDD(Resilient Distributed Dataset) : 스파크의 기본 데이터 구조, 분산 변경 불가능한 객체 모음 (출처 : bomwo)

셔플링(shuffling) : 동일한 Key 를 가진 튜플 데이터를 동일한 파티션에 두기 위해, 데이터의 위치를 재조정하는 방법이 Shuffle (출처 : wooono)


참고 자료

 

교재 : 파이썬을 활용한 스파크 프로그래밍

 

파이썬을 활용한 스파크 프로그래밍

스파크는 빅데이터 분석을 위한 가장 핵심적인 기술 중 하나다. 이 책에서는 스파크의 개념 및 설치, 활용법의 상세한 설명으로 독자들의 이해를 돕는다. 또한 스파크와 통합되는 타 기술들과

www.aladin.co.kr

 

 

반응형

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

[Spark] 2장 - 스파크 배포  (0) 2022.08.30

댓글