-
[빅데이터 전문가의 하둡관리] 1. 하둡 소개 및 하둡의 주변 환경Software Development/Big Data 2022. 8. 20. 18:15
http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788931555752
위 책의 내용을 읽으며 공부한 내용을 요약 및 정리한 글입니다. 자세한 내용은 위 책에서 알 수 있습니다.
하둡과 하둡의 생태계에 대한 개요
하둡은 빅데이터를 다루기 위해 만들어졌다.
하둡은 대부분 리눅스에서 운영된다.
하둡은 직접 설치 또는 특정 회사의 하둡 배포판을 이용한다. 일반적으로 클라우데라, 호튼웍스, 피보탈 맵알 등의 하둡 배포판을 이용한다.
하둡은 매력적인 시스템이지만, 하둡 환경에서 운영되는 많은 제품으로 인해 엄청나게 복잡하다.
하둡의 핵심은 HDFS와 YARN이다.
하둡의 특징들
대용량 데이터 처리 능력
장애 허용
높은 장애 대응력
간단한 데이터 일관성 모델: Write Once Many Access model
빅데이터와 하둡
하둡이 갖고 있는 데이터를 효과적으로 처리하는 능력의 핵심은 데이터 지역성이다.
데이터 지역성이란 네트워크를 통해서 데이터를 처리하지 않고 데이터가 저장된 곳에서 프로세싱하는 방식이다.
기존 방식은 네트워크나 대역폭의 병목 현상으로 인해 훨씬 더 속도가 느린 경향이 있다.
하둡을 사용하는 일반적인 시나리오
맵리듀스는 데이터를 정렬하고 합치는 작업을 위해 키/값 쌍을 사용한다.
전통적인 데이터베이스 시스템
하둡은 대용량 데이터셋을 분석하는 데 적합하고, 관계형 디비는 빠른 검색과 데이터 갱신에 최적화돼 있기는 하지만, 데이터 저장에 있어 이 두 시스템의 차이가 줄어들고 있다.
HDFS 데이터에 관계형 디비와 같은 추상화를 제공하는 하이브에 인덱스와 트랜잭션과 같은 특징들이 추가된 점을 들 수 있다. 단 제한적인 부분이 있다.(커밋 롤백 안됨)
- 데이터 레이크
조직의 모든 데이터를 중심부에 저장하도록 하는 것을 의미한다.
기업에 들어오는 모든 데이터의 종착지로 활용할 수 있다.
하둡을 적용하기 쉬운 이유
6~12개의 작은 클러스터를 이용해 POC를 하거나 사업의 시작점으로 삼고 있다. 클라우드를 사용해 저렴한 비용으로 하둡을 이용할 수도 있다.
클러스터 컴퓨팅과 하둡 클러스터
클러스터 컴퓨팅
각각의 노드 작업이 실패해도 전체 작업에 영향이 미치지 않아야 한다. 이를 해결하기 위한 방식은 아래이다.
데이터 블록들을 여러 벌 만들어 각각 다른 랙에 있는 서버에 저장한다.
작업을 작은 단위의 작업들로 나눈다.
하둡 클러스터들
하둡 클러스터는 하둡이 실행되는 머신들과 그 머신이 데이터를 저장하고 프로세싱하도록 하는 운영 시스템인 데몬, 소프트웨어 프로세스들로 구성된다.
- 하둡 프레임워크를 운영하는 데몬이 실행될 마스터 노드들
- 스토리지(HDFS)와 프로세싱(YARN)을 담당하는 워커 노드들.
- 하나 이상의 엣지 서버들(하둡 시스템에 접근하는 서버들). 이 서버들은 하둡 클러스터에 접근하는 애플리케이션을 실행한다.
- 1개 또는 그 이상의 MYSQL 같은 관계형 디비. Hive, 스쿱, 휴 같은 프레임워크의 메타데이터를 저장.
- Kafka 같은 특정 프레임워크를 위한 전용 서버들
데이터 중복을 통해 하드웨어 오류를 해결.
저렴한 서버들을 사용할 수 있으면서 다른 비싼 네트워크 환경을 구성하지 않아도 된다.
데이터를 네트워크로 이동시키지 않는다.
하둡 컴포넌트들과 하둡 생태계
- 하둡 공통: 하둡 환경에서 나머지 모듈들을 지원하는 기본 유틸리티
- 운영 시스템 인증이나 파일 시스템과 같은 하둡 클러스터를 위한 필수 서비스
- 클러스터 시작 스크립트들이나 그 스크립트를 위해 필요한 자바 파일
- 문서
- 하둡 프레임워크 소스 코드
- HDFS: 데이터에 접속해 높은 처리량을 보여주는 파일 시스템
- YARN: 작업을 스케줄링하고 리소스를 관리하는 프레임웤
- 맵리듀스: 데이터셋 병렬처리 프레임웤
하둡 관련 프로젝트들 분류
- 하둡 공통
- 데이터 스토리지: HDFS, HBase
- 운영 시스템: YARN
- 데이터 프로세싱: 맵리듀스, 스파크
- 관리 툴 및 코디네이터 서비스: 암바리(하둡의 관리 및 모니터링 툴), 주키퍼(분산 애플리케이션의 작업을 조직화하는 컴포넌트)
HDFS는 필수고 그 위에 하려는 일에 특화된 컴포넌트들이 있는 구조이다.
- Avro: 데이터를 간단한 바이너리 형태로 변형할 수 있는 프레임웤
- Flume: 스트리밍 데이터를 하둡으로 이동하는 데이터 이동 툴
- HBase: HDFS를 스토리지에 사용하는 분산 컬럼 지향 데이터베이스
- Hive: HDFS 데이터를 위한 데이터 웨어하우스. SQL 기반 쿼리
- Kafka: 메세지 브로커
- Mahout: 맵리듀스를 이용해 개발된 ML 라이브러리
- Pig: 데이터 파이프라인 생성 및 데이터셋 분석
- Sqoop: RDB에서 HDFS로 데이터 이동 툴
- Storm: 실시간 프로세싱을 지원하는객체 관계형 매핑 라이브러리
- Zookeeper: 분산 애플리케이션에 의해 사용되는 코디네이터
하둡 관리자들이 하는 일
하둡 관리 - 새로운 패러다임
시스템 설치 및 업그레이드: 환경 설정할 것이 엄청 많다.
개발자 지원: 관리자는 사용자들을 위해 하둡으로 작업할 수 있도록 ID 제공 및 저장공간 제공 및 확인
성능 튜닝: 파티셔닝과 병렬 실행등 최적화. 메모리 CPU 네트워크 및 서버 레벨의 문제 해결.
모니터링 및 트러블 슈팅
백업과 복구: 백업은 현실적으로 불가능. 하둡 스냅샷
하둡을 관리하기 위해 알아야 할 것
자바: 필요 조건은 아니지만 트러블 슈팅 및 성능 튜닝에 도움이 된다. 하지만 스택 트레이스 분석 정도의 실력은 있어야 한다.
하둡 1과 하둡 2의 주요 차이점
yarn 유무
고가용성 기능들
하둡 2는 고가용성이 가능. 네임노드와 리소스 매니저를 운영할 수 있다.
다중 처리 엔진들
다양한 프로세싱 애플리케이션 사용 가능.
프로세싱과 스케줄링의 분리
얀은 분산 애플리케이션 관리 프레임워크라는 일반적인 목적으로 설계됐다.
리소스 할당 방식
FIFO에서 Fair 스케줄러와 Capacity 스케줄러라는 잡 스케줄러로 전환
분산형 데이터 처리
맵리듀스
아파치 스파크: 인터랙티브 쿼리 지원. 인메모리 스토리지 모드 및 FA
아파치 하이브: 데이터베이스가 아님. HDFS 디렉토리들을 테이블로 보여줌.
'Software Development > Big Data' 카테고리의 다른 글
[빅데이터 전문가의 하둡관리] 3. 간단한 하둡 클러스터 생성 및 환경 설정 (1) 2022.09.25 [빅데이터 전문가의 하둡관리] 2. 하둡 아키텍처 개요 (1) 2022.08.31 [스파크 완벽 가이드] 1. 아파치 스파크란 (0) 2022.05.08 [Spark] 튜닝, 디버깅, 그리고 개발자가 신경 쓰지 않는 것들 (2) 2021.03.28 [Spark] 효율적인 트랜스포메이션 (0) 2021.02.14