SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
Hadoop & 관련 기술 훑어
보기
최범균 (2013-12-02)
목표
● 하둡 및 관련 기술들 개요 수준으로 알아보기
○ 깊게 파기 위한 사전 준비 (이런 게 있다…)
■ 용어/이름 정도는 알고 가자
○ 각 기술들의 정확한 동작 원리 등은 앞으로 파야 함

● 훑어볼 것들
○
○
○
○
○

Hadoop (HDFS, MR)
Pig / Hive
Flume / Sqoop
Oozie
HBASE
시작은 Hadoop 부터
● 두 가지 목적
○ 정말 매우 큰 데이터를 저장할 수 있어야 하고
○ 그 데이터를 이용해서 연산을 수행할 수 있어야 함

● 이를 위한 두 가지
○ HDFS(Hadoop Distributed File System)
○ MapReduce (2버전에는 YARN)
HDFS: 분산 파일 시스템
접근할
데이터 노드 문의

네임노드

Heart Beat, 블록 정보 전송

하둡 클라이언트

파일 읽기/쓰기

파일(블록)-데이터노드 메타 정보
SPOF

데이터
노드

데이터
노드

데이터
노드

파일 쓰기 시에 데이터 노드 간 블록 복사
MapReduce 1: 병렬 연산 수행
잡(Job)
실행 요청
잡 클라이언트

복사
- 잡 파일
- 잡 스플릿 정보

잡트래커

잡 정보 조회

잡 파일 조회
HDFS

잡을 태스크로 분리
작은 규모는 네임노드 프로세
스와 동일 노드 위치

주기적 상태 보고
태스크 할당 받음

태스크
트래커
프로세스
생성

맵: 파일 읽기
리듀스: 결과 저장

태스크JVM

데이터노드 프로세스와
동일 노드
MapReduce 1 흐름

태스크JVM
맵 실행

맵 결과

맵 결과
태스크JVM
맵 실행

맵 결과

맵 결과
맵 결과

태스크JVM
맵 실행

맵 결과

맵 결과
병합

태스크JVM
리듀스 실행
HDFS/MR과 관련된 난관
● 맵리듀스 프로그램을 직접 하려면 머리 빠짐
● 외부 데이터를 하둡에 밀어넣기 위해 코드 만
들기 귀찮다.
● 데이터 처리 흐름을 직접 만들자니, 귀찮다.
● 서비스 어플리케이션의 데이터 보관소로 사
용하고 싶다.
HDFS/MR 관련 기술들
상황

기술

MR을 쉽게

Pig: 전용 스크립트로 데이터 처리
Hive: SQL을 이용한 데이터 처리

데이터 이동을 쉽게

Flume: 로그를 HDFS에 복사
Sqoop: RDB와 HDFS간의 데이터 복
사

데이터 처리 흐름을 쉽
게

Oozie

NoSQL처럼

HBASE
Pig
● 분석 위한 고수준 언어 지원 (Pig Latin)
○
○
○
○
○

HDFS 파일을 PigStorage()로 추상화해서 접근
AVG, COUNT, MAX, SUM, ...
JOIN, DISTINCT, GROUP, ORDER BY ...
FOREACH, CASE, FILTER, ...
LOAD, STORE로 HDFS 파일 접근

● 대용량 데이터셋 분석 플랫폼
○ 스크립트를 MR로 변환해서 하둡에서 실행

● 스크립트 실행 방식
○ grunt: 대화형 쉘에서 스크립트 입력
○ script: 스크립트 파일을 실행
Pig vs MR
MR

public class WordCount {
public static class Map extends MapReduceBase
implements Mapper<LongWritable, Text, Text, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(LongWritable key, Text value,
OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
word.set(tokenizer.nextToken());
output.collect(word, one);
}
}
}
public static class Reduce extends MapReduceBase
implements Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce(Text key, Iterator<IntWritable> values,
OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {
int sum = 0;
while (values.hasNext()) sum += values.next().get();
output.collect(key, new IntWritable(sum));
}
}
public static void main(String[] args) throws Exception {
JobConf conf = new JobConf(WordCount.class);
conf.setJobName("wordcount");
conf.setOutputKeyClass(Text.class);
conf.setOutputValueClass(IntWritable.class);
conf.setMapperClass(Map.class);
conf.setCombinerClass(Reduce.class);
conf.setReducerClass(Reduce.class);
conf.setInputFormat(TextInputFormat.class);
conf.setOutputFormat(TextOutputFormat.class);
FileInputFormat.setInputPaths(conf, new Path(args[0]));
FileOutputFormat.setOutputPath(conf, new Path(args[1]));
JobClient.runJob(conf);
}

Pig

A = load './input.txt';
B = foreach A generate flatten(TOKENIZE((chararray)$0)) as word;
C = group B by word;
D = foreach C generate COUNT(B), group;
store D into './wordcount';

}
Hive
● 마치 RDBS처럼
○ SQL과 매우 유사한 HQL
○ DB/테이블 제공

● 데이터 보관/쿼리 실행을 하둡에서
○ HDFS에 데이터 보관
○ HQL을 MR로 변환해서 실행

● 별도의 RDB에 DB/테이블 메타정보 저장
● 제약
○ 행 단위 수정/삭제 불가 (HDFS 파일의 제약)
○ 트랜잭션 X
Hive의 구성
메타스토어
CLI

Hive Web
Interface
Hive JDBC
Driver

Driver

Session,
Compiler
Execution Engine

Hive
Server

Hive Thrift
Client
하둡
클러스터
Sqoop
● RDBMS와 HDFS/Hive/HBase 간 데이터 이
동을 처리해주는 도구
○ MR을 생성해서 하둡을 통해 실행
하둡 클래스터
Sqoop
(CLI 도구)

MR 태스크

데이터 복사
메타 정보 로딩

RDB

HDFS
Hive
HBase
Flume
● 로그를 하둡에 보관하기 위한 목적으로 사용
● 일반적인 구성
Agent
Agent
Agent
Agent
Agent

tail, syslog 등에서 로그 수집

하둡
클러스터
(HDFS,
HBASE)
Oozie
● Hadoop 관련 워크플로우 엔진
○ 워크플로우 정의 (XML)
■ 작업 (Hive, Pig, Sqoop 등을 이용한 작업 정의)
■ 작업 간 의존(실행 순서) 설정
○ 워크플로우 실행 및 모니터링
Oozie
클라이언트

Oozie
서버

CLI, Java API, Rest API
웹브라우저(읽기 전용)

RDB

하둡
클러스터
HBase
● 실시간 서비스 위한 하둡 기반 데이터 저장소
클러스터 코디네이터
ROOT 테이블 위치 조회

Zookeeper

Client

- 한 개 이상의 리전을 가짐
- 클라이언트의 읽기/쓰기 요
청 처리
- 리전은 메모리에 일정 크기
데이터 보관 (캐시 효과)

HMaster

Region
Server

Region
Server

하둡 클러스터 HDFS

리전 관리

Region
Server

- 커밋 로그 보관
- 데이터 보관
HBase
● 주요 특징
○
○
○
○
○
○

데이터를 HDFS에 저장
컬럼 기반 형태의 NoSQL DB
데이터 크기가 커지면 자동 분리(auto sharding)
높은 쓰기 처리량
rowkey 기반 접근
행 단위 Consistency 보장
■ 즉, 여러 행에 대한 트랜잭션 보장 없음
정리
Oozie
(워크플로우)

데이터 적재
Flume
(로그 복사)

Sqoop
(RDB 복사)

데이터 처리
Pig
(스크립트)

하둡 클러스터
(HDFS/MR)

Hive
(SQL)

HBase
클러스터
(NoSQL)
기타: 관련 기술 너무 많음 ^^;
●
●
●
●
●

SQL on Hadoop: Impala, Tajo, Dremel
Machine Learing, 검색: Mahout, Elastic Search
분산 코디네이터: Zookeeper
Streaming 분석: Storm, S4 등
배포판
○ NDAP (NexR Data Analysis Platform)
○ CHD (Cloudera’s Distribution including Apache
Hadoop)
○ HDP (Hortonworks Data Platform)
● 시각화: D3

Weitere ähnliche Inhalte

Was ist angesagt?

하둡 타입과 포맷
하둡 타입과 포맷하둡 타입과 포맷
하둡 타입과 포맷
진호 박
 
하둡완벽가이드 Ch9
하둡완벽가이드 Ch9하둡완벽가이드 Ch9
하둡완벽가이드 Ch9
HyeonSeok Choi
 
알고 쓰자! HBase | Devon 2012
알고 쓰자!  HBase | Devon 2012알고 쓰자!  HBase | Devon 2012
알고 쓰자! HBase | Devon 2012
Daum DNA
 

Was ist angesagt? (20)

HBase 훑어보기
HBase 훑어보기HBase 훑어보기
HBase 훑어보기
 
about hadoop yes
about hadoop yesabout hadoop yes
about hadoop yes
 
Hive 입문 발표 자료
Hive 입문 발표 자료Hive 입문 발표 자료
Hive 입문 발표 자료
 
하둡관리
하둡관리하둡관리
하둡관리
 
Distributed Programming Framework, hadoop
Distributed Programming Framework, hadoopDistributed Programming Framework, hadoop
Distributed Programming Framework, hadoop
 
하둡 타입과 포맷
하둡 타입과 포맷하둡 타입과 포맷
하둡 타입과 포맷
 
Hive begins
Hive beginsHive begins
Hive begins
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대
 
Hadoop overview
Hadoop overviewHadoop overview
Hadoop overview
 
Apache hive
Apache hiveApache hive
Apache hive
 
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
 
하둡완벽가이드 Ch9
하둡완벽가이드 Ch9하둡완벽가이드 Ch9
하둡완벽가이드 Ch9
 
HDFS Overview
HDFS OverviewHDFS Overview
HDFS Overview
 
알고 쓰자! HBase | Devon 2012
알고 쓰자!  HBase | Devon 2012알고 쓰자!  HBase | Devon 2012
알고 쓰자! HBase | Devon 2012
 
하둡 설치(의사분산모드)
하둡 설치(의사분산모드)하둡 설치(의사분산모드)
하둡 설치(의사분산모드)
 
서울 하둡 사용자 모임 발표자료
서울 하둡 사용자 모임 발표자료서울 하둡 사용자 모임 발표자료
서울 하둡 사용자 모임 발표자료
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
 
20140522 uc집계 정민철_발표자료_최종
20140522 uc집계 정민철_발표자료_최종20140522 uc집계 정민철_발표자료_최종
20140522 uc집계 정민철_발표자료_최종
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with Tajo
 

Ähnlich wie 하둡 (Hadoop) 및 관련기술 훑어보기

빅데이터 기본개념
빅데이터 기본개념빅데이터 기본개념
빅데이터 기본개념
현주 유
 
3 빅데이터기반비정형데이터의실시간처리방법 원종석
3 빅데이터기반비정형데이터의실시간처리방법 원종석3 빅데이터기반비정형데이터의실시간처리방법 원종석
3 빅데이터기반비정형데이터의실시간처리방법 원종석
Saltlux Inc.
 

Ähnlich wie 하둡 (Hadoop) 및 관련기술 훑어보기 (20)

Hadoop administration
Hadoop administrationHadoop administration
Hadoop administration
 
Hadoop Overview 1
Hadoop Overview 1Hadoop Overview 1
Hadoop Overview 1
 
Big data application architecture 요약2
Big data application architecture 요약2Big data application architecture 요약2
Big data application architecture 요약2
 
빅데이터, big data
빅데이터, big data빅데이터, big data
빅데이터, big data
 
log-monitoring-architecture.pdf
log-monitoring-architecture.pdflog-monitoring-architecture.pdf
log-monitoring-architecture.pdf
 
Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with Tajo
 
하둡-rhive
하둡-rhive하둡-rhive
하둡-rhive
 
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
Apache hbase overview (20160427)
Apache hbase overview (20160427)Apache hbase overview (20160427)
Apache hbase overview (20160427)
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)
 
빅데이터 기본개념
빅데이터 기본개념빅데이터 기본개념
빅데이터 기본개념
 
Spark은 왜 이렇게 유명해지고 있을까?
Spark은 왜 이렇게  유명해지고 있을까?Spark은 왜 이렇게  유명해지고 있을까?
Spark은 왜 이렇게 유명해지고 있을까?
 
빅데이터 구축 사례
빅데이터 구축 사례빅데이터 구축 사례
빅데이터 구축 사례
 
[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준
 
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [하둡메이트 팀] : 하둡 설정 고도화 및 맵리듀스 모니터링
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [하둡메이트 팀] : 하둡 설정 고도화 및 맵리듀스 모니터링제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [하둡메이트 팀] : 하둡 설정 고도화 및 맵리듀스 모니터링
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [하둡메이트 팀] : 하둡 설정 고도화 및 맵리듀스 모니터링
 
3 빅데이터기반비정형데이터의실시간처리방법 원종석
3 빅데이터기반비정형데이터의실시간처리방법 원종석3 빅데이터기반비정형데이터의실시간처리방법 원종석
3 빅데이터기반비정형데이터의실시간처리방법 원종석
 
Intro to r & hadoop
Intro to r & hadoopIntro to r & hadoop
Intro to r & hadoop
 
분산데이터 저장 기술
분산데이터 저장 기술분산데이터 저장 기술
분산데이터 저장 기술
 

Mehr von beom kyun choi

ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료
beom kyun choi
 

Mehr von beom kyun choi (20)

옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기
 
TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나
 
keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)
 
DDD 준비 서문래
DDD 준비 서문래DDD 준비 서문래
DDD 준비 서문래
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksug
 
MVP 패턴 소개
MVP 패턴 소개MVP 패턴 소개
MVP 패턴 소개
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유
 
Spring Boot 소개
Spring Boot 소개Spring Boot 소개
Spring Boot 소개
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰
 
ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
리뷰의 기술 소개
리뷰의 기술 소개리뷰의 기술 소개
리뷰의 기술 소개
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개
 
Zookeeper 소개
Zookeeper 소개Zookeeper 소개
Zookeeper 소개
 

Kürzlich hochgeladen

Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
Wonjun Hwang
 

Kürzlich hochgeladen (7)

Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption
 

하둡 (Hadoop) 및 관련기술 훑어보기

  • 1. Hadoop & 관련 기술 훑어 보기 최범균 (2013-12-02)
  • 2. 목표 ● 하둡 및 관련 기술들 개요 수준으로 알아보기 ○ 깊게 파기 위한 사전 준비 (이런 게 있다…) ■ 용어/이름 정도는 알고 가자 ○ 각 기술들의 정확한 동작 원리 등은 앞으로 파야 함 ● 훑어볼 것들 ○ ○ ○ ○ ○ Hadoop (HDFS, MR) Pig / Hive Flume / Sqoop Oozie HBASE
  • 3. 시작은 Hadoop 부터 ● 두 가지 목적 ○ 정말 매우 큰 데이터를 저장할 수 있어야 하고 ○ 그 데이터를 이용해서 연산을 수행할 수 있어야 함 ● 이를 위한 두 가지 ○ HDFS(Hadoop Distributed File System) ○ MapReduce (2버전에는 YARN)
  • 4. HDFS: 분산 파일 시스템 접근할 데이터 노드 문의 네임노드 Heart Beat, 블록 정보 전송 하둡 클라이언트 파일 읽기/쓰기 파일(블록)-데이터노드 메타 정보 SPOF 데이터 노드 데이터 노드 데이터 노드 파일 쓰기 시에 데이터 노드 간 블록 복사
  • 5. MapReduce 1: 병렬 연산 수행 잡(Job) 실행 요청 잡 클라이언트 복사 - 잡 파일 - 잡 스플릿 정보 잡트래커 잡 정보 조회 잡 파일 조회 HDFS 잡을 태스크로 분리 작은 규모는 네임노드 프로세 스와 동일 노드 위치 주기적 상태 보고 태스크 할당 받음 태스크 트래커 프로세스 생성 맵: 파일 읽기 리듀스: 결과 저장 태스크JVM 데이터노드 프로세스와 동일 노드
  • 6. MapReduce 1 흐름 태스크JVM 맵 실행 맵 결과 맵 결과 태스크JVM 맵 실행 맵 결과 맵 결과 맵 결과 태스크JVM 맵 실행 맵 결과 맵 결과 병합 태스크JVM 리듀스 실행
  • 7. HDFS/MR과 관련된 난관 ● 맵리듀스 프로그램을 직접 하려면 머리 빠짐 ● 외부 데이터를 하둡에 밀어넣기 위해 코드 만 들기 귀찮다. ● 데이터 처리 흐름을 직접 만들자니, 귀찮다. ● 서비스 어플리케이션의 데이터 보관소로 사 용하고 싶다.
  • 8. HDFS/MR 관련 기술들 상황 기술 MR을 쉽게 Pig: 전용 스크립트로 데이터 처리 Hive: SQL을 이용한 데이터 처리 데이터 이동을 쉽게 Flume: 로그를 HDFS에 복사 Sqoop: RDB와 HDFS간의 데이터 복 사 데이터 처리 흐름을 쉽 게 Oozie NoSQL처럼 HBASE
  • 9. Pig ● 분석 위한 고수준 언어 지원 (Pig Latin) ○ ○ ○ ○ ○ HDFS 파일을 PigStorage()로 추상화해서 접근 AVG, COUNT, MAX, SUM, ... JOIN, DISTINCT, GROUP, ORDER BY ... FOREACH, CASE, FILTER, ... LOAD, STORE로 HDFS 파일 접근 ● 대용량 데이터셋 분석 플랫폼 ○ 스크립트를 MR로 변환해서 하둡에서 실행 ● 스크립트 실행 방식 ○ grunt: 대화형 쉘에서 스크립트 입력 ○ script: 스크립트 파일을 실행
  • 10. Pig vs MR MR public class WordCount { public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one); } } } public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) sum += values.next().get(); output.collect(key, new IntWritable(sum)); } } public static void main(String[] args) throws Exception { JobConf conf = new JobConf(WordCount.class); conf.setJobName("wordcount"); conf.setOutputKeyClass(Text.class); conf.setOutputValueClass(IntWritable.class); conf.setMapperClass(Map.class); conf.setCombinerClass(Reduce.class); conf.setReducerClass(Reduce.class); conf.setInputFormat(TextInputFormat.class); conf.setOutputFormat(TextOutputFormat.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf); } Pig A = load './input.txt'; B = foreach A generate flatten(TOKENIZE((chararray)$0)) as word; C = group B by word; D = foreach C generate COUNT(B), group; store D into './wordcount'; }
  • 11. Hive ● 마치 RDBS처럼 ○ SQL과 매우 유사한 HQL ○ DB/테이블 제공 ● 데이터 보관/쿼리 실행을 하둡에서 ○ HDFS에 데이터 보관 ○ HQL을 MR로 변환해서 실행 ● 별도의 RDB에 DB/테이블 메타정보 저장 ● 제약 ○ 행 단위 수정/삭제 불가 (HDFS 파일의 제약) ○ 트랜잭션 X
  • 12. Hive의 구성 메타스토어 CLI Hive Web Interface Hive JDBC Driver Driver Session, Compiler Execution Engine Hive Server Hive Thrift Client 하둡 클러스터
  • 13. Sqoop ● RDBMS와 HDFS/Hive/HBase 간 데이터 이 동을 처리해주는 도구 ○ MR을 생성해서 하둡을 통해 실행 하둡 클래스터 Sqoop (CLI 도구) MR 태스크 데이터 복사 메타 정보 로딩 RDB HDFS Hive HBase
  • 14. Flume ● 로그를 하둡에 보관하기 위한 목적으로 사용 ● 일반적인 구성 Agent Agent Agent Agent Agent tail, syslog 등에서 로그 수집 하둡 클러스터 (HDFS, HBASE)
  • 15. Oozie ● Hadoop 관련 워크플로우 엔진 ○ 워크플로우 정의 (XML) ■ 작업 (Hive, Pig, Sqoop 등을 이용한 작업 정의) ■ 작업 간 의존(실행 순서) 설정 ○ 워크플로우 실행 및 모니터링 Oozie 클라이언트 Oozie 서버 CLI, Java API, Rest API 웹브라우저(읽기 전용) RDB 하둡 클러스터
  • 16. HBase ● 실시간 서비스 위한 하둡 기반 데이터 저장소 클러스터 코디네이터 ROOT 테이블 위치 조회 Zookeeper Client - 한 개 이상의 리전을 가짐 - 클라이언트의 읽기/쓰기 요 청 처리 - 리전은 메모리에 일정 크기 데이터 보관 (캐시 효과) HMaster Region Server Region Server 하둡 클러스터 HDFS 리전 관리 Region Server - 커밋 로그 보관 - 데이터 보관
  • 17. HBase ● 주요 특징 ○ ○ ○ ○ ○ ○ 데이터를 HDFS에 저장 컬럼 기반 형태의 NoSQL DB 데이터 크기가 커지면 자동 분리(auto sharding) 높은 쓰기 처리량 rowkey 기반 접근 행 단위 Consistency 보장 ■ 즉, 여러 행에 대한 트랜잭션 보장 없음
  • 18. 정리 Oozie (워크플로우) 데이터 적재 Flume (로그 복사) Sqoop (RDB 복사) 데이터 처리 Pig (스크립트) 하둡 클러스터 (HDFS/MR) Hive (SQL) HBase 클러스터 (NoSQL)
  • 19. 기타: 관련 기술 너무 많음 ^^; ● ● ● ● ● SQL on Hadoop: Impala, Tajo, Dremel Machine Learing, 검색: Mahout, Elastic Search 분산 코디네이터: Zookeeper Streaming 분석: Storm, S4 등 배포판 ○ NDAP (NexR Data Analysis Platform) ○ CHD (Cloudera’s Distribution including Apache Hadoop) ○ HDP (Hortonworks Data Platform) ● 시각화: D3