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

19
Hadoop & 관련 기술 훑어 보기 최범균 (2013-12-02)

description

하둡 관련 기술 발표 자료 (나 처럼 관련 지식이 없는 사람들을 위한 기술 소개 자료)

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

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

Hadoop & 관련 기술 훑어보기

최범균 (2013-12-02)

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

목표

● 하둡 및 관련 기술들 개요 수준으로 알아보기○ 깊게 파기 위한 사전 준비 (이런 게 있다…)

■ 용어/이름 정도는 알고 가자○ 각 기술들의 정확한 동작 원리 등은 앞으로 파야 함

● 훑어볼 것들○ Hadoop (HDFS, MR)○ Pig / Hive○ Flume / Sqoop○ Oozie○ HBASE

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

시작은 Hadoop 부터

● 두 가지 목적○ 정말 매우 큰 데이터를 저장할 수 있어야 하고○ 그 데이터를 이용해서 연산을 수행할 수 있어야 함

● 이를 위한 두 가지○ HDFS(Hadoop Distributed File System)○ MapReduce (2버전에는 YARN)

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

HDFS: 분산 파일 시스템

네임노드

데이터노드

데이터노드

데이터노드

하둡 클라이언트

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

Heart Beat, 블록 정보 전송

접근할 데이터 노드 문의

파일 읽기/쓰기

파일 쓰기 시에 데이터 노드 간 블록 복사

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

MapReduce 1: 병렬 연산 수행

잡트래커

태스크트래커

잡(Job) 실행 요청

잡 클라이언트

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

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

HDFS

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

잡 정보 조회

잡 파일 조회

태스크JVM

프로세스생성

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

데이터노드 프로세스와동일 노드

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

MapReduce 1 흐름

태스크JVM맵 실행 맵 결과

태스크JVM리듀스 실행

태스크JVM맵 실행 맵 결과

태스크JVM맵 실행 맵 결과

맵 결과

맵 결과

맵 결과

맵 결과병합

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

HDFS/MR과 관련된 난관

● 맵리듀스 프로그램을 직접 하려면 머리 빠짐● 외부 데이터를 하둡에 밀어넣기 위해 코드 만들기 귀찮다.

● 데이터 처리 흐름을 직접 만들자니, 귀찮다.● 서비스 어플리케이션의 데이터 보관소로 사용하고 싶다.

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

HDFS/MR 관련 기술들상황 기술

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

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

데이터 처리 흐름을 쉽게

Oozie

NoSQL처럼 HBASE

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

Pig

● 분석 위한 고수준 언어 지원 (Pig Latin)○ HDFS 파일을 PigStorage()로 추상화해서 접근○ AVG, COUNT, MAX, SUM, ...○ JOIN, DISTINCT, GROUP, ORDER BY ...○ FOREACH, CASE, FILTER, ...○ LOAD, STORE로 HDFS 파일 접근

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

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

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

Pig vs MRpublic 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); }}

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';

MR

Pig

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

Hive

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

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

● 별도의 RDB에 DB/테이블 메타정보 저장● 제약

○ 행 단위 수정/삭제 불가 (HDFS 파일의 제약)○ 트랜잭션 X

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

Hive의 구성

Driver

Session,Compiler

Execution Engine

메타스토어

하둡클러스터

HiveServer

Hive JDBCDriver

Hive ThriftClient

CLI

Hive WebInterface

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

Sqoop

● RDBMS와 HDFS/Hive/HBase 간 데이터 이동을 처리해주는 도구○ MR을 생성해서 하둡을 통해 실행

Sqoop(CLI 도구)

RDB

하둡 클래스터

MR 태스크HDFSHive

HBase

메타 정보 로딩

데이터 복사

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

Flume

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

Agent

Agent

Agent

Agent

Agent

하둡클러스터(HDFS, HBASE)

tail, syslog 등에서 로그 수집

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

Oozie

● Hadoop 관련 워크플로우 엔진○ 워크플로우 정의 (XML)

■ 작업 (Hive, Pig, Sqoop 등을 이용한 작업 정의)■ 작업 간 의존(실행 순서) 설정

○ 워크플로우 실행 및 모니터링

Oozie서버

하둡클러스터

RDB

Oozie클라이언트

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

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

HBase

● 실시간 서비스 위한 하둡 기반 데이터 저장소

HMaster

Zookeeper

Region Server

Region Server

Region Server

하둡 클러스터 HDFS

Client

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

ROOT 테이블 위치 조회

- 커밋 로그 보관- 데이터 보관

클러스터 코디네이터

리전 관리

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

HBase

● 주요 특징○ 데이터를 HDFS에 저장○ 컬럼 기반 형태의 NoSQL DB○ 데이터 크기가 커지면 자동 분리(auto sharding)○ 높은 쓰기 처리량○ rowkey 기반 접근○ 행 단위 Consistency 보장

■ 즉, 여러 행에 대한 트랜잭션 보장 없음

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

데이터 처리데이터 적재

정리

하둡 클러스터 (HDFS/MR)

Pig(스크립트)

Hive(SQL)

HBase클러스터(NoSQL)

Sqoop(RDB 복사)

Flume(로그 복사)

Oozie(워크플로우)

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

기타: 관련 기술 너무 많음 ^^;

● 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