SlideShare a Scribd company logo
1 of 19
Download to read offline
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

More Related Content

What's hot

Apache Tez - A New Chapter in Hadoop Data Processing
Apache Tez - A New Chapter in Hadoop Data ProcessingApache Tez - A New Chapter in Hadoop Data Processing
Apache Tez - A New Chapter in Hadoop Data Processing
DataWorks Summit
 
Cloud DW technology trends and considerations for enterprises to apply snowflake
Cloud DW technology trends and considerations for enterprises to apply snowflakeCloud DW technology trends and considerations for enterprises to apply snowflake
Cloud DW technology trends and considerations for enterprises to apply snowflake
SANG WON PARK
 

What's hot (20)

Apache Tez - A New Chapter in Hadoop Data Processing
Apache Tez - A New Chapter in Hadoop Data ProcessingApache Tez - A New Chapter in Hadoop Data Processing
Apache Tez - A New Chapter in Hadoop Data Processing
 
Apache Hadoop YARN
Apache Hadoop YARNApache Hadoop YARN
Apache Hadoop YARN
 
Cloud DW technology trends and considerations for enterprises to apply snowflake
Cloud DW technology trends and considerations for enterprises to apply snowflakeCloud DW technology trends and considerations for enterprises to apply snowflake
Cloud DW technology trends and considerations for enterprises to apply snowflake
 
データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
データインターフェースとしてのHadoop ~HDFSとクラウドストレージと私~ (NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
 
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
 
Apache Calcite: One planner fits all
Apache Calcite: One planner fits allApache Calcite: One planner fits all
Apache Calcite: One planner fits all
 
Ankara Spark Meetup - Big Data & Apache Spark Mimarisi Sunumu
Ankara Spark Meetup - Big Data & Apache Spark Mimarisi SunumuAnkara Spark Meetup - Big Data & Apache Spark Mimarisi Sunumu
Ankara Spark Meetup - Big Data & Apache Spark Mimarisi Sunumu
 
Modern ETL Pipelines with Change Data Capture
Modern ETL Pipelines with Change Data CaptureModern ETL Pipelines with Change Data Capture
Modern ETL Pipelines with Change Data Capture
 
1. Apache HIVE
1. Apache HIVE1. Apache HIVE
1. Apache HIVE
 
Elastic search Walkthrough
Elastic search WalkthroughElastic search Walkthrough
Elastic search Walkthrough
 
Introduction to Big Data and hadoop
Introduction to Big Data and hadoopIntroduction to Big Data and hadoop
Introduction to Big Data and hadoop
 
How to Manage Scale-Out Environments with MariaDB MaxScale
How to Manage Scale-Out Environments with MariaDB MaxScaleHow to Manage Scale-Out Environments with MariaDB MaxScale
How to Manage Scale-Out Environments with MariaDB MaxScale
 
What's New in Apache Hive
What's New in Apache HiveWhat's New in Apache Hive
What's New in Apache Hive
 
VMware ESXi トラブルシューティング
VMware ESXi トラブルシューティングVMware ESXi トラブルシューティング
VMware ESXi トラブルシューティング
 
Apache Spark : Genel Bir Bakış
Apache Spark : Genel Bir BakışApache Spark : Genel Bir Bakış
Apache Spark : Genel Bir Bakış
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
 
Presto
PrestoPresto
Presto
 
Hadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返りHadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返り
 
Upgrading HDFS to 3.3.0 and deploying RBF in production #LINE_DM
Upgrading HDFS to 3.3.0 and deploying RBF in production #LINE_DMUpgrading HDFS to 3.3.0 and deploying RBF in production #LINE_DM
Upgrading HDFS to 3.3.0 and deploying RBF in production #LINE_DM
 
Sqoop
SqoopSqoop
Sqoop
 

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

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

Distributed Programming Framework, hadoop
Distributed Programming Framework, hadoopDistributed Programming Framework, hadoop
Distributed Programming Framework, hadoop
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대
 
Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Hadoop Introduction (1.0)
Hadoop Introduction (1.0)
 
Hadoop administration
Hadoop administrationHadoop administration
Hadoop administration
 
하둡 알아보기(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
 
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
 
Hadoop overview
Hadoop overviewHadoop overview
Hadoop overview
 
An introduction to hadoop
An introduction to hadoopAn introduction to hadoop
An introduction to hadoop
 
log-monitoring-architecture.pdf
log-monitoring-architecture.pdflog-monitoring-architecture.pdf
log-monitoring-architecture.pdf
 
Apache hive
Apache hiveApache hive
Apache hive
 
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
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with Tajo
 
HDFS Overview
HDFS OverviewHDFS Overview
HDFS Overview
 
하둡-rhive
하둡-rhive하둡-rhive
하둡-rhive
 
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 

More from beom kyun choi

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

More from 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 소개
 

하둡 (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