Hadoop overview

3,400 views

Published on

Published in: Technology
0 Comments
15 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,400
On SlideShare
0
From Embeds
0
Number of Embeds
212
Actions
Shares
0
Downloads
177
Comments
0
Likes
15
Embeds 0
No embeds

No notes for slide

Hadoop overview

  1. 1. Hadoop Overview Cecil (hyeonseok.c.choi@gmail.com) 13년 10월 21일 월요일
  2. 2. 이런것들이 대체 무엇이냐? PIG 13년 10월 21일 월요일
  3. 3. What is Big Data? 13년 10월 21일 월요일
  4. 4. 데이터의 규모에 맞춘 단순한 정의 기존 데이터 관리 도구로는 감당할 수 없을 정도 규모의 데이터 13년 10월 21일 월요일
  5. 5. TDWI에서 정의한 BIG Data의 3대요소 • Volume ✓ 수십 TB or 수십 PB 이상 ✓ 기존의 솔루션으로 처리하기 힘든 정도의 크기 • Velocity ✓ 대용량의 데이터에 대해 서비스의 요구사항에 맞게 실시간/배치 처리 가능 • Variety ✓ 정형, 반정형 뿐만 아니라 비정형 데이터를 핸들링 이 중 2가지 이상을 만족하면 Big data 이미지 출처: What is Big Data?, Datameer, <http://www.datameer.com/product/big-data.html> 13년 10월 21일 월요일
  6. 6. 왜 빅 데이터인가? 13년 10월 21일 월요일
  7. 7. “일반적으로 더 많은 데이터가 더 좋은 알고리즘보다 낫다” -아난드 라자라만 ex) 자동 번역 프로그램 IBM vs. Google 13년 10월 21일 월요일
  8. 8. IBM의 자동 번역 프로그램 컴퓨터가 명사, 형용사, 동사 등 단어와 어문의 문법적 구조를 인식하여 번역하는 방식 13년 10월 21일 월요일
  9. 9. IBM의 자동 번역 프로그램 컴퓨터가 명사, 형용사, 동사 등 단어와 어문의 문법적 구조를 인식하여 번역하는 방식 지난 40년간 개발하였으나 실패!! 13년 10월 21일 월요일
  10. 10. Google 번역 수억건의 문장과 번역문을 데이터베이스화하여 번역시 유사한 문장과 어구를 데이터베이스에서 추론해나가는 통계적 기법을 적용 13년 10월 21일 월요일
  11. 11. Google 번역 수억건의 문장과 번역문을 데이터베이스화하여 번역시 유사한 문장과 어구를 데이터베이스에서 추론해나가는 통계적 기법을 적용 전 세계 58개의 언어간의 자동 번역 프로그램 개발에 성공 13년 10월 21일 월요일
  12. 12. 그럼 빅 데이터를 시작해 볼까? 13년 10월 21일 월요일
  13. 13. 빅 데이터를 처리하기 위해서는... 단일 장비로는 한계가 있다 13년 10월 21일 월요일
  14. 14. 빅 데이터를 처리하기 위해서는... 단일 장비로는 한계가 있다 분산 처리가 답임!! 13년 10월 21일 월요일
  15. 15. 분산처리에 따른 이슈 ✓ 처리할 작업을 어떻게 나눌 것인가? ✓ 데이터를 어떻게 나누어 처리할 것인가? ✓ Failure는 어떻게 다룰 것인가? 13년 10월 21일 월요일
  16. 16. 분산 처리 분산 처리를 위한 여러가지 방법이 존재 13년 10월 21일 월요일
  17. 17. 분산 처리 But, 너무 복잡!! 13년 10월 21일 월요일
  18. 18. MapReduce 분산 처리와 장애에 대한 투명성을 제공하기 위한 MapReduce라는 제한된 프로그래밍 모델을 논문으로 공개 13년 10월 21일 월요일
  19. 19. 더그 커팅(Doug Cutting)이 구글이 논문으로 발표한 GFS(Google File System), MapReduce를 구현한 결과물 http://hadoop.apache.org/ Hadoop = HDFS(GFS) + MapReduce 13년 10월 21일 월요일
  20. 20. 그럼 Hadoop으로... 13년 10월 21일 월요일
  21. 21. 대용량 파일을 안전하게 저장하고, 처리하기 위한 하둡 분산 파일 시스템 (Hadoop Distributed File System) 13년 10월 21일 월요일
  22. 22. HDFS의 설계의 특징 • 대용량 파일을 주로 저장 ✓ FAT32: 4G, NTFS: 4~64G, EXT3: 2TB ~ 64TB • 랜덤 접근 보다는 스트리밍 접근 방식을 선호 ✓ 순차적인 파일 연산 • 고가의 장비보다는 여러대의 저가의 장비에서 실행됨 ✓ 장비의 고장이 일반적인 상황으로 고려되어야 함 • 한번 쓰여진 파일은 내용이 변경되기 보다는 추가됨 ✓ 제공되는 파일 연산: create/delete/append/modify(x) 13년 10월 21일 월요일
  23. 23. HDFS Architecture 13년 10월 21일 월요일
  24. 24. 주요 컨포넌트 • Name-node ✓ 파일 및 블록에 대한 메타 데이터 관리 ✓ HDFS에 전체에 대한 동작을 관리 • Data-node ✓ 블록 단위의 데이터가 저장되는 곳 • Client ✓ HDFS API를 이용해서 작성된 클라이언트 13년 10월 21일 월요일
  25. 25. 블록 기반 파일 시스템 • Block ✓ 모든 파일은 블록 단위로 저장됨 ✓ 하나의 파일은 여러개의 블록으로 이루어짐 ✓ 기본 블록의 사이즈: 64M • Replication ✓ 블록은 장애에 대비하여 여러개의 복제본을 가짐 ✓ 기본 복제 계수: 3 ✓ 각각의 파일별로 복제 계수 설정 가능 13년 10월 21일 월요일
  26. 26. Metadata 관리 • 모든 Metadata는 Name-node의 메모리에 저장 • Name-node는 3가지 주요 데이터를 저장 ✓ 파일에 대한 네임스페이스 정보 ✓ 파일과 블록의 맵핑 정보 ✓ 각 블록에 대한 데이터 노드 위치 정보 • 파일에 대한 네임스페이스 정보와 파일과 블록의 맵핑 정보는 Name-node에서 영구적으로 관리 ✓ 파일 시스템에 대한 이미지 및 변경 로그(FSImage, Edit log) • 각 블록에 대한 위치 정보는 Name-node에서 임시적으로 관리 ✓ 데이터 노드 시작시 Name-node로 전송, Name-node는 해당 정보를 메모리에 유지 13년 10월 21일 월요일
  27. 27. FSImage & EditLog • Name-node는 FSImage와 EditLog를 사용해서 파일 시스템 이미지를 구성 ✓ EditLog가 클수록 파일 시스템 갱신시 시간이 오래 걸림. ✓ 이러한 이슈를 해결하기 위하여, 보조 네임노드는 주기적으로 파일 시스템 이미지를 갱신 Secondary Name-node Name-node Memory FileSystem Storage Edit Log / 저장 /user A B /etc C /var D E 병합 Edit Log 1. Add File 2. Delete File 3. Append File : 다운 로드 : + FS Image FS Image 전송 13년 10월 21일 월요일 New FS Image
  28. 28. FSDataOutputStream DFSOutput Flow - Write Operation Stream DFSOutputStream Data Streamer DataStreamer • 클라이언트는 Name-node로 해당 파일 생성을 요청 • Name-node는 해당 파일 블록을 저장할 Data-node의 목록을 전달 • 클라이언트는 첫번째 Data-node에게 데이터를 전송 ✓ 데이터 복제는 Data-node간의 파이프 라인을 통해 이루어짐 13년 10월 21일 월요일
  29. 29. Flow - Read Operation • 클라이언트는 Name-node로 해당 파일의 블록 위치를 요청 • Name-node는 복제 블록이 저장된 곳을 확인 후, 클라이언트에서 가까운 순서로 정렬해서 반환 • 클라이언트는 Data-node에게 블록 데이터를 요청 ✓ Best case: 클라이언트와 해당 블록이 저장된 Data-node가 같은 장비일 경우 13년 10월 21일 월요일
  30. 30. 일반적인 하드웨어로 구성된 클러스터 상에서 많은 양의 데이터를 병렬로 처리하는 어플리케이션을 쉽게 작성할 수 있도록 하는 소프트웨어 프레임워크 13년 10월 21일 월요일
  31. 31. Map-Reduce Overview Map-Reduce는 입력 데이터를 Split으로 분할하여 각각의 노드에서 병렬적으로 처리 13년 10월 21일 월요일
  32. 32. Map & Reduce read a book write a book <1, read a book> <2, write a book> 키,값 Map-Reduce는 Map과 Reduce라는 Map Map 2개의 메서드로 구성 <read, 1> <a, 1> <book, 1> <write, 1> <a, 1> <book, 1> 정렬과 병합 <read, (1)> <a, (1,1)> <book, (1,1)> <write, (1)> Reduce <read, 1> < a, 2> <book, 2> <write, 1> 13년 10월 21일 월요일 Map: (k1, v1) -> list(k2, v2) Reduce: (k2, list(v2)) -> list(k3, v3) ex) 단어 수 세기 Reduce : 직접 소스 개발 : 프레임워크에서 동작
  33. 33. Example WordCount-Mapper Map: (k1, v1) -> list(k2, v2) public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); } 13년 10월 21일 월요일 public void map(Object key, Text value, Context context ) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } }
  34. 34. Example WordCount-Reducer Reduce: (k2, list(v2)) -> list(k3, v3) public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> { private IntWritable result = new IntWritable(); } 13년 10월 21일 월요일 public void reduce(Text key, Iterable<IntWritable> values, Context context ) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); }
  35. 35. Example WordCount-Driver main함수가 있는 구동 Class public class WordCount { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); String[] otherArgs = new GenericOptionsParser(conf, args) .getRemainingArgs(); if (otherArgs.length != 2) { System.err.println("Usage: wordcount <in> <out>"); System.exit(2); } Job job = new Job(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } } 13년 10월 21일 월요일
  36. 36. Map-Reduce Architecture 13년 10월 21일 월요일
  37. 37. Map-Reduce-I • JobClient ✓ 공통 파일을 분산 파일 시스템에 복사 ✓ JobTracker에 Map-Reduce 잡을 제출 • JobTracker ✓ 제출된 맵 리듀스 잡을 스케쥴링 ✓ 태스크 트래커에 태스크(Map/Reduce)를 할당 • TaskTracker ✓ 할당된 태스크를 수행 ✓ 수행되는 태스크는 별도의 JVM에서 실행됨 ✓ 일반적으로 HDFS의 Data-node와 같은 곳에서 실행됨. - 데이터 지역성 극대화 13년 10월 21일 월요일 JobClient submitJob()
  38. 38. Map-Reduce-II(YARN) • Job ✓ 공통 파일을 분산 파일 시스템에 복사 ✓ JobTracker에 Map-Reduce 잡을 제출 • Resource Manager ✓ 클러스터 상의 컴퓨터 리소스를 할당 • Application Master ✓ 맵 리듀스 잡을 수행 ✓ Node Manager에게 태스크 수행을 요청 • Node Manager ✓ 컨테이너의 리소스를 관리 ✓ 리소스 허용 범위 내의 태스크를 실행 13년 10월 21일 월요일
  39. 39. Map-Reduce-II(YARN) • Job ✓ 공통 파일을 분산 파일 시스템에 복사 ✓ JobTracker에 Map-Reduce 잡을 제출 • Resource Manager ✓ 클러스터 상의 컴퓨터 리소스를 할당 • Application Master ✓ 맵 리듀스 잡을 수행 ✓ Node Manager에게 태스크 수행을 요청 • Node Manager ✓ 컨테이너의 리소스를 관리 ✓ 리소스 허용 범위 내의 태스크를 실행 확장성 문제를 해결하기 위해 잡트래커의 책임을 분리 13년 10월 21일 월요일
  40. 40. 이전 버전과의 차이 (2/2) Map-Reduce I vs YARN 출처: Hortonworks, http://hortonworks.com/hadoop/yarn 13년 10월 21일 월요일
  41. 41. Hadoop Echo System 13년 10월 21일 월요일
  42. 42. Apache HBase 하둡 기반의 NoSQL 시스템(컬럼기반), Google Big Table 과 유사 - MasterServer와 RegionServer로 구성됨. - HA를 위해 Apache Zookeer 사용 13년 10월 21일 월요일
  43. 43. Apache PIG • 대규모의 데이터를 쉽게 분석할 수 있도록 스크립트 수준의 언어를 제공하는 분석 플랫폼 ✓ Hadoop 상에서 구동시 스크립트가 내부적으로 맵리듀스 잡으로 수행 됨 <WordCount Example> 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'; 13년 10월 21일 월요일
  44. 44. Apache Hive Hive clients 하둡에 저장된 데이터를 쉽게 처리할 수 있도록 하는 데이터 웨어하우스 솔루션 hive --service hiveserver - SQL 호환의 스크립트 구조를 제공 - 메타 정보를 저장하기 위해 별도의 메타 스토어가 필요 13년 10월 21일 월요일
  45. 45. Apache Sqoop 하둡과 RDBMS 사이에서 데이터를 전송하기 위한 Tool Import Export 이미지 출처: siliconweek, <http://www.siliconweek.es/noticias/apache-sqoop-se-convierte-en-proyecto-prioritario-para-big-data-21558> 13년 10월 21일 월요일
  46. 46. Apache Flume • 분석을 위해 많은 양의 로그 데이터를 효과적으 로 수집하여 HDFS에 저장하는 시스템 • 노드 ✓ Logical: 데이터의 흐름을 담당 ✓ Physical: 단일 자바 프로세스, 즉 단일 JVM 인스턴스 Logical 노드를 담는 컨테이너 • 컨포넌트 ✓ Master: Logical, Physical 노드를 제어 ✓ Agent: 로그를 수집하여 Collector에 전송하는 역할 ✓ Collector: 로그를 수집하여 더 큰 스트림으로 묶어 HDFS에 저장 출처: cloudera, http://archive.cloudera.com/cdh/3/flume-0.9.0+1/UserGuide.html 13년 10월 21일 월요일
  47. 47. Apache Zookeeper 분산 환경에서 필요한 여러가지 기능을 구현할수 있도록 하는 분산 코디네이터 - Google Chubby의 구현제 - 세션 기반의 파일 시스템과 유사한 데이터 저장 구조를 제공 - 분산 락, 캐시, 맴버쉽 관리에 용이 - HA를 위해 과반수 알고리즘을 사용 13년 10월 21일 월요일
  48. 48. References • 정재화. 시작하세요! 하둡 프로그래밍. 경기도 파주: 위키북스, 2012 • 위키피디아. 빅데이터. http://ko.wikipedia.org/wiki/%EB%B9%85_%EB%8D%B0%EC%9D %B4%ED%84%B0 . • Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung. The Google le system. In 19th Symposium on Operating Systems Principles, pages 2943, Lake George, New York, 2003. • 아파치. 하둡. http://hadoop.apache.org/ • Hadoop YARN “A next-generation framework for Hadoop data processing”, Hortonworks, http://hortonworks.com/hadoop/yarn • Flume User Guide, Cloudera, http://archive.cloudera.com/cdh/3/flume-0.9.0+1/ UserGuide.html 13년 10월 21일 월요일

×