데이터레이크 기술 정리
# 기술 정리
https://brownbears.tistory.com/258
1. 오브젝트 스토리지
1-1. 정의
- 데이터 형태 변화
- 정형데이터는 특정 구조에 맞춰진 데이터, 비정형데이터는 이미지, 영상 등 복잡하고 대용량이며 구조화돼 있지 않은 데이터
- 현재 빠르게 늘어나는 기업 내 데이터 가운데 비정형데이터의 비중이 약 80~90%
- 데이터를 기반으로 하는 빅데이터 분석, AI, IoT 등의 기술들이 기업 비즈니스 성공을 위한 핵심으로 떠오르고 있음 => 이러한 기술들을 활용하기 위한 재료인 비정형데이터의 저장 관리 검색 기술에 대한 필요성 대두
- 블록 스토리지 : 데이터가 정해진 배열의 고정 크기 ‘블록’에 저장됨 / 엔터프라이즈 데이터베이스에 적합
- 파일 스토리지 : 데이터가 계층적으로 중첩된 ‘폴더’ 내의 ‘파일’로 저장 / 활성 문서에 적합
- 오브젝트 스토리지 : 데이터가 확장 가능한 ‘버킷’의 ‘오브젝트’로 저장 / 비정형데이터, 분석 및 아카이빙에 적합
- ‘비정형’ 데이터가 폭발적으로 증가, 이러한 데이터는 ‘정형화된’ 데이터베이스로 구성되지 않으므로 블록스토리지가 적합하지 않음
- 일부 비정형 데이터는 파일 및 문서와 관련되므로 파일스토리지에서 사용 가능하지만, 순수한 데이터 볼륨만으로도 파일 시스템이 처리할 수 있는 양을 넘어섬 / 데이터 양이 증가하면 파일 스토리지의 계층적 특성을 유지 관리하기 점점 복잡
- 파일을 오브젝트 단위로 처리하며 파일과 파일 속성을 정의해 주는 메타데이터를 이용해 관리
- 메타데이터를 통해 빠른 검색이 가능하기 때문에 PB 이상의 데이터에 대한 검색 속도 향상으로 빅데이터 분류, 관리, 분석에 유리
- 파일 단위로 백업, 보존주기 등의 데이터 관리 정책을 설정 가능하여 별도의 애플리케이션이 필요 없음
- 비정형 데이터의 증가에 맞춰 네임스페이스가 확장
- 네임스페이스 무제한(블록,파일은 제한)
- ‘추상화’로 복잡성을 처리하여 사용,관리 및 유지 보수 간편
- 3개 이상의 복제본으로 미러링되기 때문에 복구 능력 우수
- 빅데이터, 분석 및 데이터 과학에 적합(오브젝트 메타데이터)
- ‘메타데이터’ 또는 ‘데이터에 대한 데이터’를 사용
- 오브젝트에 대한 메타데이터가 해당 오브젝트에 고정되고 함께 저장되기 때문에, 별도의 데이터베이스를 유지할 필요 없음
- 메타데이터로 인해 정교한 데이터 검색 가능
- 메타데이터를 분석하여 사용자 및 고객의 기본 설정에 대한 새로운 정보 얻을 수 있음
- 오브젝트 장점
- 확장성 : 고도로 확장 가능하고 유연한 스토리지 용량
- 액세스 용이성 : 데이터를 쉽게 검색하고 클라우드에서 액세스하고 바로 분석 가능
- 비용 절감 : 온프레미스 오브젝트 스토리지의 TCO는 퍼블릭보다 최대 65% 낮음
- 오브젝트 스토리지가 아카이빙용으로 적합한 이유
- 메타데이터를 통해 파일 내 데이터의 성격을 분류, 검색을 쉽게
- 파일을 한번 쓴 후에 읽는 것만 가능하게 하거나(WORM: Write Once Read Many)
- 보존 기간을 지정하고 이후에는 자동으로 삭제되게 하는 등의 백업 관련 정책도 지정 가능하다. 기존에는 별도의 서드파티 애플리케이션이 필요했던 부분
1-2. 요건
- 내구성, 가용성, 확장성
- 빠른 검색
- SQL 표현식을 기반으로 하나의 오브젝트에서 부분 데이터 조회 (=빅데이터 분석 가속화)
- 신속한 데이터 추출 및 저장
- S3와 연동된 어플리케이션을 그대로 활용
2. 기술 정리
2-1. 이레이저 코딩
- HDFS, RAID 외의 스토리지에서 데이터 저장공간의 효율성을 위해 설계된 데이터 복제방식
- 순서
- 데이터 원본을 N 개로 나눔
- N개의 데이터를 가지고 연산과정(인코딩)을 통해 K개의 패리티 생성
- 데이터 손실시, N개의 데이터로 디코딩을 통해 원본 데이터 복구
- 최대 K 개의 데이터가 손실되어도 N개의 데이터만 살아 있으면 원본 데이터 복구 가능
3. 데이터 레이크
3-1. 정의
- 분석할 때 필요한 모든 원시 데이터를 저장하는 단일 저장소
3-2. 데이터 레이크 필수 요소
3-2-1. 저장과 분석이 분리된 아키텍처
- 데이터 레이크의 데이터를 저장하는 영역과 데이터를 분석하는 영역을 분리한 아키텍처
- 클라우드 기반 오브젝트 스토리지를 활용
- 저장 영역은 다양한 소스로부터 데이터를 받아 체계적이며 안정적으로 무한 저장하는 플랫폼에 집중
- 분석 영역은 다양한 분석 솔루션을 온 디멘드로 제공하는 플랫폼의 역할에 집중
- 스키마 온 리드(Schema on Read) : 데이터를 원천 형태 그대로 빠르게 저장하고 스키마의 변경은 데이터를 분석하기 위해 읽어서 이동할 때 수행
3-2-2. 분석 샌드박스
- 실험적 분석들을 자유롭게 할 수 있는 분석 샌드박스를 통해 인사이트를 수집하고, 이를 조직의 경쟁 우위를 확보하는데 활용
- 데이터의 분석 과정에서 발생하는 다양한 형태의 데이터 가공이나 변형 등을 대비해서 격리된 데이터 분석 공간을 제공해 주는 것
- 분석하는 대상 데이터의 속성에 맞는 분석 엔진을 버전별로 간단한 클릭으로 생성하고 삭제
- 데이터 과학자들이 지정한 분석 대상 데이터를 원천 저장소로부터 자동으로 이동하면서 반복적인 데이터의 기초 가공을 수행해서 분석 샌드박스에 저장해 줄 수 있도록 데이터 레이크 프로세스 디자인 필요
3-2-3. 현업 사용자를 위한 데이터 셀프 서비스
- DT의 과정에서 가장 중요하게 인식되는 것 중 하나가 고객의 변화를 빠르게 인지할수 있는 접점에서 의사 결정을 해야 하는 직원들이 얼마나 쉽고 빠르게 데이터에 접근해서 데이터에 기반을 둔 명확한 의사 결정을 내릴 수 있는가 이다
- 데이터 레이크에서 현업 사용자를 위한 셀프 서비스 환경은 필수 요소
- 셀프서비스 종류
- 데이터를 자유자재로 시각화하고 인사이트를 추출해낼 수 있는 BI 셀프 서비스
- 전사 데이터 레이크에 존재하는 전체 데이터를 쉽게 탐색하고 조회할 수 있는 데이터 탐색 셀프 서비스
- 탐색한 데이터를 목적에 맞게 스스로 가공하고 정제할 수 있는 데이터 가공 셀프 서비스
- 통계분석 알고리즘, 머신러닝 알고리즘 등을 스스로 적용할 수 있는 AI 셀프 서비스 등
4. 하둡
4-1. 요약
- 대용량 데이터를 분산 처리할수 있는 자바 기반의 오픈소스 프레임 워크
- 분산 저장 기술인 HDFS와 분산처리 기술인 맵리듀스
- 분산 처리 단계
- 클러스터에서 데이터 읽기 -> 동작 실행 -> 클러스터에 결과 기록 -> 데이터 업데이트 된 내용 읽기 -> 다음 동작 실행 -> 클러스터에 결과 기록
- 분산 컴퓨팅 방식으로 구축 비용이 저렴하며 그 비용 대비 데이처 처리가 굉장히 빠름
- 장애를 대비하여 매번 운영한 이후의 결과들을 디스크에 기록하기 때문에 문제가 발생 했을때 기록된 결과들을 활용하여, 그 문제를 파악하고 해결하기 쉬움
4-2. 동작 원리
하둡 프레임워크는 파일 시스템인 HDFS(Hadoop Distributed File System)과 데이터를 처리하는 맵리듀스(MapReduce) 엔진을 합친 것으로 대규모 클러스터 상의 데이터 처리를 다음과 같이 단순화
- 잡을 잘게 분할하고 클러스터의 모든 노드로 매핑(Map)
- 각 노드는 잡을 처리한 중간 결과를 생성하고
- 분할된 중간 결과를 집계(Reduce)해서 최종 결과를 냄
- 데이터를 여로 노드로 분산하고 전체 연산을 잘게 나누어 동시에 처리하는 병렬 처리가 가능하고, 부분적으로 장애가 발생할 경우 전체 시스템은 동작할 수 있는 장애 내성을 갖는 시스템
- 맵리듀스의 핵심은 최소한의 API(Map, reduce) 만 노출해 대규모 분산 시스템을 다루는 복잡한 작업을 감추고, 병렬 처리를 프로그래밍적 방법으로 지원
- 다루는 데이터가 크기 때문에 데이터를 가져와서 처리하는 것이 아닌, 데이터가 저장된 곳으로 프로그램을 전송
4-3. 한계
- 맵리듀스 잡의 결과를 다른 잡에서 사용하려면 이 결과를 HDFS에 저장해야 하기 때문에, 이전 잡의 결과가 다음 잡의 입력이 되는 반복 알고리즘에는 본질적으로 맞이 않음
- 하둡은 low-level 프레임워크, 데이터를 조작하는 high-level 프레임워크나 도구가 많아 환경이 복잡해짐
5. 스파크
- 빅데이터 워크로드에 주로 사용되는 오픈소스 분산처리 시스템
- 빠른 성능을 위해 인 메모리 캐싱과 최적화된 실행을 사용
- 일반 배치처리, 스트리밍 분석, 머신러닝, 그래프 데이터 베이스 및 임시 쿼리 지원
- 분산 처리 단계
- 클러스터에서 데이터 읽기 -> 애널리틱스 운영 수행 및 결과값 클러스터 입력 동작과 같은 전 과정이 동시 진행
5-1. 기능
- 맵리듀스와 유사한 일괄 처리 기능
- 실시간 데이터 처리 기능(Spark Streaming)
- SQL과 유사한 정형 데이터 처리 기능(Spark SQL)
- 그래프 알고리즘(Spark GraphX)
- 머신 러닝 알고리즘(Spark MLlib)
5-2. 장점
- 데이터를 메모리에 캐시로 저장하는 인-메모리 실행 모델로 성능 향상
- 머신 러닝, 그래프 알고리즘 등 반복 알고리즘과 기타 데이터를 재사용하는 모든 유형의 작업에 효과적
- 사용자가 클러스터를 다루고 있다는 사실을 인지할 필요가 없도록 설계된 컬렉션 기반의 API 제공
- 로컬 프로그램을 작성하는 것과 유사한 방식으로 분산 프로그램 작성 가능
- 여러 노드에 분산된 데이터를 참조하고 복잡한 병렬 프로그래밍으로 자동 변환
- 스칼라, 자바, 파이썬, R을 지원
- 스칼라를 사용하면 융통성, 유연성, 데이터 분석에 적합한 함수형 프로그래밍 개념 사용 가능
- 다양한 유형의 클러스터 매니저 사용 가능(스파크 standalone 클러스터, 하둡 YARN(Yet Another Resource Negotiator) 클러스터, 아파치 메소스(Mesos) 클러스터 등)