반응형
요약: 05.스파크로 빅데이터 다루기
하둡과 맵리듀스 프레임워크의 발전 과정과 개념
- 하둡 프레임워크는 크게 스토리지와 프롸세싱을 제공한다.
- 스토리지는 hdfs로 데이터를 block으로 분할해서 관리한다.
- 이때 메타데이터를 관리하는 네임노드와 실제 분할된 데이터를 관리하는 데이터노드라는 개념으로 전체 파일을 관리한다.
- 프로세싱에는 맵리듀스 프레임워크가 있는데 입력데이터를 분할하고 분할된 데이터를 복사해서 처리된다.
- 이때 자원관리자와 여러 노드관리자로 구성되어 작업이 진행되며 작업절차는 yarn이라는 프레임워크에서 관리한다.
- 그러나 느리고 실시간 이벤트도 안되며 복잡해서 한계점이 있다. 이런 기술적 한계를 아파치 스파크에서 해결하였다.
하둡 맵리듀스의 문제점
- 디스크 기반 처리로 인한 성능 병목이 있다.
- 일괄 처리는 모든 요구를 충족시키지 못한다.
- 프로그램 코드는 많고 복잡하다.
- 태스크 스케쥴링이 느리다.
- 실시간 이벤트 처리가 안된다.
- 머신러닝을 잘 지원 못한다. 느릴 수 있다.
스파크의 발전과정과 가치
- 다양한 패러다임과 다양한 API를 제공하는 통합 분산 인메모리 방식의 컴퓨팅 엔진
- 빠르고 실시간을 지원하고 호환성이 좋다.
- 클러스터 관리자, 코어, 컴포넌트로 구성되어 컴포넌트를 통해 ML, Graph, SQL, 스트리밍 등 다양한 지원을 받을 수 있다.
정리
더보기
하둡과 맵리듀스 프레임워크의 발전 과정
클라우드 컴퓨팅
- 클라우드 컴퓨팅의 출현으로 엄청난 자원을 사용해 모든 종류의 비즈니스 목표 달성이 가능해졌다.
- 클라우드 컴퓨팅은 Iaas, PaaS, SaaS개념을 도입했다.
분산 컴퓨팅
- 이러한 클라우드 컴퓨팅PB(peta byte)를 저장하고 처리할 수 있는 분산 컴퓨팅 환경이 뒷받침 해주었다.
- 기존부터 MPP는 해양학, 지진 모니터링, 우주 탐사 분야에서 사용되던 패러다임이다.
- 구글이 MR(맵리듀스)와 GFS(구글 파일 시스템)에 대한 논문발표로 분산 컴퓨팅의 원칙이 정립되었다.
- 더그 커팅이 이를 통해 온 세계에 하둡을 소개했다.
하둡 프레임워크
- 하둡 프레임워크는 자바로 작성된 오픈소스 소프트웨어 프레임워크이고 스토리지와 프로세싱 영역을 제공한다.
- 스토리지의 경우, 하둡 프레임워크는 GFS기반의 HDFS(하분 분산 파일 시스템)를 사용한다.
- 프로세싱의 경우, MR기반의 구글 논문 기반의 맵리듀스에 의존한다.
HDFS
- 기본 개념은 파일 전체를 block(블록)으로 분할해서 처리한다는 것이다.
- 1024MB파일이면 128MB(블록사이즈)로 나뉘어지고 복제가 3개 생긴다.
- 내결함성과 장애 복구 기능을 갖춘 DFS이다.
- name node(네임노드)와 data node(데이터노드)라는 2가지 주요 컴포넌트가 있다.
- 네임노드는 파일 시스템의 모든 내용에 대한 모든 메타데이터를 포함하고 있다.
- 모든 메타데이터를 메모리에 저장
- 모든 클라이언트의 요청을 처리
- 에디트 로그라는 트랜잭션 로그를 사용, 모든 변경 사항을 기록한다.
- FsImage에 파일과 파일 시스템 속성데 대한 블록 매핑, 전체 파일 네임스페이스가 저장되어 있다.
- 시작시 에디트 로그가 로드되고 hdfs를 설정하기 위해 fsImage가 초기화된다.
- 1.0 보조네임노드 지원, 복제본을 유지.
- 2.0 고가용성기능(high Availability)를 추가지원, active-passive로 2개의 네임노드 사용.
- 데이터노드는 네임노드에 의존한다.
- 디렉토리와 피을 가진 전통적인 계층적 파일 시스템을 지원한다.
- 여러 물리 서버로 구성된 분산 방식으로 클러스터(데이터 노드로 구성됨)ㄹ를 저장하게 설계
- 복제, 결함 허용, 분산 컴퓨팅을 처리하기 위해 블록으로 저장된다.
- hdfs 퍼더레이션: 여러 네임 노드를 사용해 파일 시스템 네임스페이스를 분산, 네임 노드 수평 확장 가능
- hdfs 스냅샷: 2.0 데이터 노드에 저장된 팡리 시스템의 스냅샤을 생성하는 기능 추가
- hdfs 읽기: 네임노드는 읽기 위치만 알려주고 데이터노드에서 필요한 블록 읽기 가능
- hdfs 저장: 네임노드는 저장 위치와 복제수를 알려주고 클라이언트에서 데이터 노드에 저장한다. 복제는 데이터노드간에 완료된다.
맵리듀스 프레임워크
- 분산 처리를 수행하기 위해 하둡 프레임워크에서 생성되었다.
- hsfs와 같은 파일 시스템에서 대량의 데이터를 안정성과 내결함성을 유지하며 처리할 수 있다.
- job을 생성한 후 해당 잡을 실행시켜 필요한 테스크를 수행
- 입력 데이터를 병렬로 분할: Mapper태스크가 동작 중인 워커 노드에서 입력 데이터를 병렬로 분할하면서 동작
- 다른 시스템으로 결과 복사: 네트워크를 통해 결과는 Reducer 태스크가 실행 중인 다른 시스템으로 복사된다.
- 하나의 자원관리자와 여러 노드관린자로 구성된다.
- 일반적으로 노드 관리자는 hdfs의 데이터 노드와 함께 존재한다.
Yarn(Yet Another Resource Negotiator) 프레임워크
- 애플리케이션을 실행하려 하면 클라이언트는 애플리케이션 마스터를 실행하고 컨테이너 형태의 자원을 클러스터에서 얻기 위해 자원관리자와 협상한다.
- 매퍼로 일부 컨테이너를 할당하고, 일부는 리듀서가 되도록 지정된다. 이런걸 조정하는 프레임워크는 Yarn이라 부른다.
- 입력 - 분할 - 매핑 - 셔플링 - 리듀싱 순서로 처리된다.
- Hive, Pig처럼 맵리듀스를 쉽게 사용할 수 있는 기술이 여럿 등장했다.
맵리듀스의 제한 사항
- 디스크 기반 처리로 인한 성능 병목이 있다.
- 일괄 처리는 모든 요구를 충족시키지 못한다
- 프로그램 코드는 많고 복잡하다
- 태스크 스케쥴링이 느리다
- 실시간 이벤트 처리가 안된다.
- 머신러닝을 지원 못한다.
아파치 스파크
스파크
- 스파크는 서로 다른 작업 부하와 플랫폼에 걸친 통합 분산 컴퓨팅 엔진이다.
- 다양한 플랫폼에 연결할 수 있다.
- 다양한 패러다임을 품고 있다.
- 빠른 인메모리 데이터 처리 엔진이다.
- 스파크 코어와 관련 라이브러리로 구성된다.
- 실시간 스트리밍, 쿼리, 머신 러닝, 그래프 처리 기능을 제공한다.
스파크 기능과 장점
- 가능한 한 많이 인메모리에서 처리하여 빠르다.
- 배치, 실시간 작업 둘다 사용가능하다.
- 얀과 메소스와 호환가능하다.
- HBase, 카산드라, 몽고DB, HDFS, 아마존 S3 등의 파일시스템 및 데이터 소스와 잘 연결된다.
- 간단한 API를 통해 여러 노드의 데이터를 퉁명하게 처리한다.
- 장애를 탄력적으로 처리한다.
- 필요에 따라 데이터를 디스크에 저장한다.
- 자바, 스칼라, 파이썬, R, SQL API를 지원한다.
- 동일한 스파크 코드를 하둡 얀, 메소스, 클라우드에서 독립형으로 실행할 수 있다.
하둡과 스파크의 관계
- 스파크는 스토리지 레이어를 제공하지 않으며 기존 스토리지와 함께 사용한다. hdfs와 사용되기도 한다.
- 아파치 쿠두는 hdfs 대안 기술이며, 스파크와 쿠두 저장소 레이러를 통합해 스파크와 하둡 생태계를 더욱 분리 가능하다.
- 스파크는 데이터 처리 프레임워크이기에 하둡과 사용 목적이 다르다.
- 맵리듀스는 디스크 연산을 사용하는 스플릿에서 동작하는데 스파크는 맵리듀스보다 데이터셋 기반 위에서 훨씬 효율적으로 동작
- 스파크는 디스크기반이라기보다는 효율적인 오프라인 힙 인메모리 처리방식을 적용하고 있다.
스파크 구성
- 3개의 레이어: 클러스터 관리자, 스파크 코어, 라이브러리 모듈
- 클러스터 관리자
- 독립형, 얀, 메소스를 사용할 수 있다.
- 로컬모드에서는 클러스터 관리자가 필요가 없다.
- 스파크 코어
- 작업 기본 설정을 수행하고 저장소와 상호작용할 수 있는 모든 기본 API제공
- 외부 스토리지 시스템에서 인메모리 컴퓨팅과 참조 데이터 셋으 ㄹ제공
- RDD
- RDB, hdfs, hbase 등등의 다양한 FS에 접근할 수 잇는 로직 포함
- 네트워킹, 보안, 스케쥴링, 고확장성, 데이터 셔플링 기능 제꽁
- 라이브러리 모듈
- 스파크 SQL, 스파크 스트리밍, 스파크 ML, GraphX
- 스파크 SQL
- 데이터 프레임/데이터셋은 RDD를 기반으로 만들어졌고 스파크 SQL에 도입
- SchemaRDD라는 새로운 데이터 추상화를 도입해 구조화/반구조화 데이터 ㅣ원
- 구조화된 포멧, 데이터소스, 파일, 파퀘이, orc rdb, hive 등의 데이터의 읽기/저장 기능을 지원
- 카탈리스트라고 하는 쿼리 최적화 프레임 워크를 제공한다
- thrift 서버를 포함하여 외부 시스템에서 스파크 SQL의 thrift서버를 사용해 jdbc와 odbc프로토콜로 데이터 쿼리를 할 수 있다.
- 스파크 스트리밍
- hdfs, kafka, flume, twitte, 키네시스 등 당양한 실시간 스트리밍 데이터 수집해 분석하는 스파크 코어의 스케쥴링 기능을 활용
- 마이크로 배치를 이용해 chunk로 데이터 처리
- DStreams 개념을 사용
- RDD에서 동작,
- 다른 스파크 컴포넌트와 결합해 머신러닝, SQL, 그래프 연산과 실시간 처리를 통합할 수 있다.
- GraphX
- 분산 그래프 처리 프레임워크
- 버텍스와 에지(버텍스 연결)로 구성된 데이터 구조
- 그래프 RDD로 표현될 수 있는 그래프 생성하는 기능을 제공한다.
- 프레젤 추상화 API를 사용
- 스파크 ML
- RDD의 형태로 데이터셋을 변환하는 데 사용되는 머신 러닝 모델을 처리한다.
- 로지스틱 회귀, 나이브 베이즈 분류
- PySpark
- SparkR
주석
EXA (Exploratory Data Analysis)
- 데이터에서 패턴을 찾을 때 의미있는 데이터를분석하고 데이터의 여러 엘리멘트 간의관계를찾기 위해사용되는 방법론,툴,기법
CDA (Confirmatory Data Analysis)
- 가설, 통계 기법 또는 간단히 살펴본 데이터를 기반으로특정 질문에 대한 통찰력이나 결과를 제공하는데 사용되는 방법론,툴,기법
ROI (Return On Investment)
- 투자 수익
'책 요약정리' 카테고리의 다른 글
.summary(도메인 주도 설계 철저 입문) (0) | 2022.05.06 |
---|