on
하둡이란??
하둡이란??
빅데이터의 정의
디지털 환경에서 발생하는 대량의 모든 데이터
기존 데이터베이스 관리도구의 데이터 수집, 저장, 관리, 분석 역량을 넘어서는 비정형 데이터
용량은 수십 TB에서부터 수십 PB까지도 존재할 수 있다. 즉, 기존 데이터베이스 시스템에서 처리할 수 없는 방대한 양의 데이터이다.
=> 조직은 내/외부에 존재하는 다양한 형태의 데이터를 수집하고 처리하고 분석해서 데이터에서 의미있는 가치를 추출해 조직에 전략적 의사결정에 활용하고, 비즈니스에 적용하는 행위를 한다.
= 빅데이터의 처리단계
: 수집 → 정제 → 적재 → 분석 → 시각화
하둡이란?
간단한 프로그래밍 모델을 사용하여 여러 대의 컴퓨터 클러스터에서 대규모 대용량 데이터를 분산 처리할 수 있는 빅데이터의 처리가 목표인 자바 기반의 오픈 소스 프레임워크
HDFS(Hadoop Distributed File System)라는 데이터 저장소와 MapReduce라는 분석 시스템을 통해 분산 프로그래밍을 수행하는 프레임워크
분산처리(계산)와 분산저장
= 장점
오픈소스로 라이선스에 대한 비용 부담이 적음 (Open Source)
저렴한 구축 비용과 비용대비 빠른 데이터 처리 (Distributed)
가정용 PC로도 구축이 가능할 정도.
일부 장애 발생시에도 전체 시스템 영향도가 적음 (Fault-tolerant)
시스템을 중단하지 않고도 Scale Out(확장)이 쉽다 (Scalable)
= 단점
HDFS에 한번 저장이 되면 데이터 변경이 불가 (파일 이동, 삭제, 복사로 수행)
실시간 데이터 분석에는 부적절할 수 있는 프레임워크
설정이 어렵다
데이터 무결성을 보장해야하는 데이터처리에는 부적합하다
= 특징
데이터 스키마를 정의할 필요 없음
데이터는 주로 줄 단위의 나누어진 텍스트 파일
원본 저장 -> 정보 필터링
대량의 데이터를 수많은 머신에서 분할 병렬 처리하는 데에 특화되어있음
SQL(문법) 지원 프로젝트가 꾸준히 증가, 실시간 처리하는 분야가 발전중
HDFS(Hadoop Distributed File System) - 하둡 분산 파일 시스템
: 수십 TB 혹은 수십 PB까지의 대용량 파일을 분산된 서버에 저장하고, 그 저장된 데이터를 빠르게 처리할 수 있게 하는 파일시스템.
블록 구조의 파일 시스템
블록의 크기는 64MB (하둡 2.0부터는 128MB로 증가)
파일을 특정크기의 블록에 나누어 분산된 서버에 저장
파일은 블록에 나누어져 저장되며, 각 블록은 서로 다른 머신에 3개의 복사본을 유지
= NameNode(네임노드)와 DataNode(데이터노드)
Hadoop 클러스터는 하나의 네임 노드(마스터)와 여러 개의 데이터 노드(슬레이브)로 구성.
NameNode(네임노드) 파일 시스템을 유지하기 위한 메타데이터 관리 (파일의 체크섬 생성일 및 저장된 블록정보 등) 데이터 노드 모니터링 데이터노드는 3초마다 heartbeat를 네임노드로 전송하고, heartbeat를 받지 못한 데이터노드는 장애가 발생한 것으로 판단 데이터 블록 관리 (장애가 발생한 데이터 노드의 블록을 새로운 데이터 노드로 복사)
DataNode(데이터노드) 파일을 블록 단위로 쪼개서 저장 블록들은 복제(Replication)를 통해 여러 개의 DataNode에 저장 신뢰성 보장 - 하나의 복제본이 손실되어도 아무런 결함 없이 사용될 수 있도록 함 데이터 지역성 향상 - 실행을 위해 데이터 이동 없이 블록이 저장된 곳에서 수행할 수 있도록 함
HDFS의 Node 구조
맵리듀스(MapReduce)
: Hadoop의 기본 데이터 처리 방식.
Map + Reduce 단계로 나뉘며, Hadoop의 계산을 담당
많은 양의 데이터를 나누어서 볼 수 있게 해준다
= Map
Input 데이터를 가공하여 데이터를 연관성 있는 데이터로 분류하여 Key-Value로 묶어준다
= Reduce
Map단계의 Key를 중심으로 필터 및 정렬한다
중복 데이터를 제거하고 원하는 데이터를 추출
Map의 결과를 정렬하고 하나로 합쳐 Reduce Task를 만든다
사용자 정의 Reduce함수로 전달 결과물을 HDFS에 저장
1] Splitting: 문자열 데이터를 라인별로 나눈다.
2] Mapping: 라인별로 문자열을 입력받아 형태로 출력
3] Shuffling: 같은 Key를 가지는 데이터끼리 분류
4] Reducing: 각 Key별로 빈도수를 합산해서 출력
5] Final Result: Reduce 메소드의 출력 데이터를 합쳐서 HDFS에 저장
MapReduce Architecture
: MapReduce 시스템은 Client, JobTracker, TaskTracker로 구성된다.
Client : 사용자가 실행한 MapReduce 프로그램과 Hadoop에서 제공하는 MapReduce API를 의미한다. (개발자가 코드를 정의)
: 사용자가 실행한 MapReduce 프로그램과 Hadoop에서 제공하는 MapReduce API를 의미한다. (개발자가 코드를 정의) JobTracker : Client가 Hadoop으로 실행을 요청하는 MapReduce 프로그램은 Job이라는 하나의 작업 단위로 관리된다. Hadoop 클러스터에 등록된 전체 Job의 Scheduling을 관리하고 모니터링한다.
: Client가 Hadoop으로 실행을 요청하는 MapReduce 프로그램은 Job이라는 하나의 작업 단위로 관리된다. Hadoop 클러스터에 등록된 전체 Job의 Scheduling을 관리하고 모니터링한다. TaskTracker : 사용자가 설정한 MapReduce 프로그램을 실행하며, Hadoop의 DataNode에서 실행되는 Demon
(JobTracker의 요청을 받고, JobTracker가 요청한 Map과 Reduce 개수만큼 Map Task와 Reduce Task를 생성)
from http://xggames.tistory.com/16 by ccl(A) rewrite - 2021-09-14 02:00:39