1장 - 빅데이터, 하둡 및 스파크 소개
하둡(Hadoop)의 등장 배경
2000년대 초, 검색엔진 제공 업체에서 인터넷 규모 문제에 직면하고 이를 해결하기 위해 새로운 기능을 독자적으로 개발함.
- 2003, '더 구글 : 파일 시스템'
- 2004, '맵리듀스 : 대형 클러스터에서의 단순화된 데이터 처리'
이 과정에서 Lucene 프로젝트 기반 Nutch 웹 크롤러 프로젝트를 마무리하며 저장 처리 원칙을 통합하게 되는데,
이 결과물이 바로 하둡(Hadoop)이다.
- 하둡이 시작된 시기에 발생한 기술혁신
- 전자 상거래의 급속한 팽창
- 모바일 인터넷의 탄생과 빠른 성장
- 블로그 및 사용자 중심 웹 콘텐츠
- 소셜 미디어
하둡(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 |
---|
댓글