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

24,608 views

Published on

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

Published in: Technology
2 Comments
76 Likes
Statistics
Notes
No Downloads
Views
Total views
24,608
On SlideShare
0
From Embeds
0
Number of Embeds
1,666
Actions
Shares
0
Downloads
683
Comments
2
Likes
76
Embeds 0
No embeds

No notes for slide

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

  1. 1. Hadoop & 관련 기술 훑어 보기 최범균 (2013-12-02)
  2. 2. 목표 ● 하둡 및 관련 기술들 개요 수준으로 알아보기 ○ 깊게 파기 위한 사전 준비 (이런 게 있다…) ■ 용어/이름 정도는 알고 가자 ○ 각 기술들의 정확한 동작 원리 등은 앞으로 파야 함 ● 훑어볼 것들 ○ ○ ○ ○ ○ Hadoop (HDFS, MR) Pig / Hive Flume / Sqoop Oozie HBASE
  3. 3. 시작은 Hadoop 부터 ● 두 가지 목적 ○ 정말 매우 큰 데이터를 저장할 수 있어야 하고 ○ 그 데이터를 이용해서 연산을 수행할 수 있어야 함 ● 이를 위한 두 가지 ○ HDFS(Hadoop Distributed File System) ○ MapReduce (2버전에는 YARN)
  4. 4. HDFS: 분산 파일 시스템 접근할 데이터 노드 문의 네임노드 Heart Beat, 블록 정보 전송 하둡 클라이언트 파일 읽기/쓰기 파일(블록)-데이터노드 메타 정보 SPOF 데이터 노드 데이터 노드 데이터 노드 파일 쓰기 시에 데이터 노드 간 블록 복사
  5. 5. MapReduce 1: 병렬 연산 수행 잡(Job) 실행 요청 잡 클라이언트 복사 - 잡 파일 - 잡 스플릿 정보 잡트래커 잡 정보 조회 잡 파일 조회 HDFS 잡을 태스크로 분리 작은 규모는 네임노드 프로세 스와 동일 노드 위치 주기적 상태 보고 태스크 할당 받음 태스크 트래커 프로세스 생성 맵: 파일 읽기 리듀스: 결과 저장 태스크JVM 데이터노드 프로세스와 동일 노드
  6. 6. MapReduce 1 흐름 태스크JVM 맵 실행 맵 결과 맵 결과 태스크JVM 맵 실행 맵 결과 맵 결과 맵 결과 태스크JVM 맵 실행 맵 결과 맵 결과 병합 태스크JVM 리듀스 실행
  7. 7. HDFS/MR과 관련된 난관 ● 맵리듀스 프로그램을 직접 하려면 머리 빠짐 ● 외부 데이터를 하둡에 밀어넣기 위해 코드 만 들기 귀찮다. ● 데이터 처리 흐름을 직접 만들자니, 귀찮다. ● 서비스 어플리케이션의 데이터 보관소로 사 용하고 싶다.
  8. 8. HDFS/MR 관련 기술들 상황 기술 MR을 쉽게 Pig: 전용 스크립트로 데이터 처리 Hive: SQL을 이용한 데이터 처리 데이터 이동을 쉽게 Flume: 로그를 HDFS에 복사 Sqoop: RDB와 HDFS간의 데이터 복 사 데이터 처리 흐름을 쉽 게 Oozie NoSQL처럼 HBASE
  9. 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. 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. 11. Hive ● 마치 RDBS처럼 ○ SQL과 매우 유사한 HQL ○ DB/테이블 제공 ● 데이터 보관/쿼리 실행을 하둡에서 ○ HDFS에 데이터 보관 ○ HQL을 MR로 변환해서 실행 ● 별도의 RDB에 DB/테이블 메타정보 저장 ● 제약 ○ 행 단위 수정/삭제 불가 (HDFS 파일의 제약) ○ 트랜잭션 X
  12. 12. Hive의 구성 메타스토어 CLI Hive Web Interface Hive JDBC Driver Driver Session, Compiler Execution Engine Hive Server Hive Thrift Client 하둡 클러스터
  13. 13. Sqoop ● RDBMS와 HDFS/Hive/HBase 간 데이터 이 동을 처리해주는 도구 ○ MR을 생성해서 하둡을 통해 실행 하둡 클래스터 Sqoop (CLI 도구) MR 태스크 데이터 복사 메타 정보 로딩 RDB HDFS Hive HBase
  14. 14. Flume ● 로그를 하둡에 보관하기 위한 목적으로 사용 ● 일반적인 구성 Agent Agent Agent Agent Agent tail, syslog 등에서 로그 수집 하둡 클러스터 (HDFS, HBASE)
  15. 15. Oozie ● Hadoop 관련 워크플로우 엔진 ○ 워크플로우 정의 (XML) ■ 작업 (Hive, Pig, Sqoop 등을 이용한 작업 정의) ■ 작업 간 의존(실행 순서) 설정 ○ 워크플로우 실행 및 모니터링 Oozie 클라이언트 Oozie 서버 CLI, Java API, Rest API 웹브라우저(읽기 전용) RDB 하둡 클러스터
  16. 16. HBase ● 실시간 서비스 위한 하둡 기반 데이터 저장소 클러스터 코디네이터 ROOT 테이블 위치 조회 Zookeeper Client - 한 개 이상의 리전을 가짐 - 클라이언트의 읽기/쓰기 요 청 처리 - 리전은 메모리에 일정 크기 데이터 보관 (캐시 효과) HMaster Region Server Region Server 하둡 클러스터 HDFS 리전 관리 Region Server - 커밋 로그 보관 - 데이터 보관
  17. 17. HBase ● 주요 특징 ○ ○ ○ ○ ○ ○ 데이터를 HDFS에 저장 컬럼 기반 형태의 NoSQL DB 데이터 크기가 커지면 자동 분리(auto sharding) 높은 쓰기 처리량 rowkey 기반 접근 행 단위 Consistency 보장 ■ 즉, 여러 행에 대한 트랜잭션 보장 없음
  18. 18. 정리 Oozie (워크플로우) 데이터 적재 Flume (로그 복사) Sqoop (RDB 복사) 데이터 처리 Pig (스크립트) 하둡 클러스터 (HDFS/MR) Hive (SQL) HBase 클러스터 (NoSQL)
  19. 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

×