Hadoop?

좋은 약이지만 

만병통치약은 아니다
2014.04.19

정민철 (deajang@gmail.com)
내가 누구?
코난테크롤로지에서 4년 정도 일했고,
현재 네이버에서 2년정도 검색광고 집계 일
부를 담당. 기냥 흔히 보는 남자개발자
!
뭔가 간식비라도 벌어보고 싶어
회사 이외에 INDF 라는
지인들과 코딩품앗이 & 스...
빅데이터
BigTable MapReduce
NoSQL
구글
대용량처리
분산처리
HDFS
오픈소스
SNS
야후
더그커팅
아파치
발표순서
1장. 과거시스템의 이해
2장. 하둡
3장. 너네팀은 어떻게 써?
4장. 하둡 친구 소개
1장. 과거시스템의 이해
‘과거에는 데이터가 아니라 사용자가 많은게 문제였다’
–정민철
과거의 부하의 중심은 사용자 !!!
서버
사용자
DBMS 캐

쉬
사용자로드밸런싱
서버
서버
사용자
도서관의 모든 책 읽기 문제 ?!
왜 하둡이 큰 데이터를 처리 할 때 좋을까 ?
사실 DBMS에서도

분산 저장과 처리가능함
master
slave 1 slave 2 slave 3
Data
1/3
data
2/3
data
3/3
- 파티셔닝 / 샤딩- 마스터 / 슬레이브
데이터
Clone !!!
S...
심지어 Twitter에서는 MySql을 사용
http://www.slideshare.net/yousukehara/introduction-of-twitter-gizzard
그런데 뭐가 문제인거지?
프로그램네트워크data
데이터가 네트워크로 보내기엔 너무 큰게 함정
아까 이야기한
도서관으로 이야기로 생각하자.
도서관 나
도
서
관
의
모
든
책
을
대
출
?
DATA
App
size : 수백 기가이상
size : 몇 메가 수준
데이터를 가져오는 방식것보다

로직을 데이터가 있는곳으로 넘기는것이 훨씬 효율적임
2장. 하둡
하둡 소개
대용량의 데이터를 분산처리해줄수 있도록 하는 오픈소스 프로젝트

Nutch/Lucene 프로젝트의 서브프레임워크이며, 자바로 구현

크게 분산파일시스템(HDFS)와 맵리듀스(MapReduce)로 구성

소수의...
HDFS + MAP/REDUCE = Hadoop
한줄요약
하둡의 구조
JobTracker/TaskTracker
+ MapReduce
NameNode/DataNode
1. JobTracker에서는 우리가 만든 MapReduce로직을 복사하고 관리해줌.
!
2. HDFS는 파일저...
1.1 HDFS ?
2003년 구글랩에서 발표된 The Google FileSystem이란
논문을 바탕으로 작성된 파일시스템

특징

파일을 여러개의 블록으로 나눠서 저장 (기본 64mb)

하드웨어 고장에 견고 (다른...
1.2 HDFS 구조
NameNode
DataNode 1 DataNode 2 DataNode 3
samle.text
samle.text
datanode1 : 별, 세모
datanode2: 동그라미, 오각형
datanod...
2. Map/Reduce의 개념
함수형 언어에서 사용되는 Map함수와 Reduce함수에서 힌트를 얻어서 만들어짐
2. Map/Reduce의 분산처리
KEY 단위로 VALUE 를 묶어서 분산처리를 가능하게 하는 방법.
[MAP]
홀수 : 1
홀수 : 3
홀수 : 5
짝수 : 2
짝수 : 4
짝수 : 6
홀수 : [1,3,5]
짝수 ...
2. 하둡에서의 Map/Reduce 순서
3. JobTracker / TaskTracker
JobTracker
TaskTacker 1 TaskTacker 2 TaskTacker 3
MyLogic.jar
task1
task2
task…
task1
task2
ta...
사실 서버기준으로 보면,
데이터 저장되는 서버에 같이 세팅
하둡마스터 서버
하둡 서버1 하둡 서버2 하둡 서버3
NameNode
JobTracker
DataNode 1
TaskTracker 1
DataNode 2
Tas...
여기까지 세미나를 듣고 온 나의 생각
하지만…
단어세기 샘플소스
@SuppressWarnings("unused")

public class WordCount {

public static class Map extends MapReduceBase

implements...
설정파일
시스템 구조의 이해와
맵리듀스 처리에 대한 지식 필요함
잡트레커?
컴바인?
셔플?
네임노드?
태스크트레커?
데이타노드
투기적실행?
다시 강조하지만,
DB같은것이 아님 !!!
파일이고 배치작업에 목적이 있음.
http://freesearch.pe.kr/archives/1175
3장. 너네팀은 어떻게 써?
1. 구성
하둡클러스터 (1…N)
hadoop hadoop hadoop
hadoop hadoop hadoop
logic 실행서버 & 로그 스케쥴러
hadoop hadoop hadoop
hadoop hadoop hadoo...
2. 개발용 프레임워크 사용
Spring
Hadoop API
config + 랩핑 API
1. 여러개의 Map/Reduce 작업을 xml로 관리

2. 동일한 HDFS상의 input을 사용하는 여러개의

작업을 한번의 r...
4장. 하둡 친구 소개
부제 : 하둡 에코 시스템
출처:http://1004jonghee.tistory.com
MAP/REDUCE의
코드작성 불편함을 해결
SQL on Hadoop
랜덤 액서스 / 저장
실시간 처리
하나의 솔루션으로
해결하는건 어려움.
요즘 추세는 용도에 맞게 섞어써야 함.
!
예를 들어
하루동안 쌓인 몇백기가의 로그파싱과 1차집계는 하둡으로 하고
요약된 결과는 HBASE에서 관리한다거나,
실시간 처리를 위해 ka...
http://tedwon.com/display/dev/MapReduce+Programming
참고자료
http://hortonworks.com/blog/office-hours-qa-on-yarn-in-hadoop-2/
h...
이 발표는 끝.
혹시 궁금한거 있나요?
Upcoming SlideShare
Loading in...5
×

하둡 좋은약이지만 만병통치약은 아니다

3,043

Published on

열린세미나 첫번째 발표자료

과거시스템에서의 문제점
그리고 하둡에서는 어떻게 그런문제를 해결했는설명하고
사실 몇가지 불편한점에 대한 이야기

https://www.facebook.com/groups/576473599127259

Published in: Engineering

하둡 좋은약이지만 만병통치약은 아니다

  1. 1. Hadoop? 좋은 약이지만 만병통치약은 아니다 2014.04.19 정민철 (deajang@gmail.com)
  2. 2. 내가 누구? 코난테크롤로지에서 4년 정도 일했고, 현재 네이버에서 2년정도 검색광고 집계 일 부를 담당. 기냥 흔히 보는 남자개발자 ! 뭔가 간식비라도 벌어보고 싶어 회사 이외에 INDF 라는 지인들과 코딩품앗이 & 스터디 (?) 아무튼 정체 불명의 모임을 시도중 ! HTTP://BLOG.INDF.NET
  3. 3. 빅데이터 BigTable MapReduce NoSQL 구글 대용량처리 분산처리 HDFS 오픈소스 SNS 야후 더그커팅 아파치
  4. 4. 발표순서 1장. 과거시스템의 이해 2장. 하둡 3장. 너네팀은 어떻게 써? 4장. 하둡 친구 소개
  5. 5. 1장. 과거시스템의 이해
  6. 6. ‘과거에는 데이터가 아니라 사용자가 많은게 문제였다’ –정민철
  7. 7. 과거의 부하의 중심은 사용자 !!! 서버 사용자 DBMS 캐 쉬 사용자로드밸런싱 서버 서버 사용자
  8. 8. 도서관의 모든 책 읽기 문제 ?! 왜 하둡이 큰 데이터를 처리 할 때 좋을까 ?
  9. 9. 사실 DBMS에서도
 분산 저장과 처리가능함 master slave 1 slave 2 slave 3 Data 1/3 data 2/3 data 3/3 - 파티셔닝 / 샤딩- 마스터 / 슬레이브 데이터 Clone !!! Split !!!
  10. 10. 심지어 Twitter에서는 MySql을 사용 http://www.slideshare.net/yousukehara/introduction-of-twitter-gizzard
  11. 11. 그런데 뭐가 문제인거지? 프로그램네트워크data 데이터가 네트워크로 보내기엔 너무 큰게 함정
  12. 12. 아까 이야기한 도서관으로 이야기로 생각하자. 도서관 나 도 서 관 의 모 든 책 을 대 출 ?
  13. 13. DATA App size : 수백 기가이상 size : 몇 메가 수준 데이터를 가져오는 방식것보다 로직을 데이터가 있는곳으로 넘기는것이 훨씬 효율적임
  14. 14. 2장. 하둡
  15. 15. 하둡 소개 대용량의 데이터를 분산처리해줄수 있도록 하는 오픈소스 프로젝트 Nutch/Lucene 프로젝트의 서브프레임워크이며, 자바로 구현 크게 분산파일시스템(HDFS)와 맵리듀스(MapReduce)로 구성 소수의 비싼 서버보다는 다수의 저렴한 서버 사용 (스케일아웃)
 (장애 허용 구조, 3copy 로 데이터 유실 방지) 오프라인 배치에 최적화 맵리듀스를 통한 단순화된 병렬 프로그래밍 가능.
  16. 16. HDFS + MAP/REDUCE = Hadoop 한줄요약
  17. 17. 하둡의 구조 JobTracker/TaskTracker + MapReduce NameNode/DataNode 1. JobTracker에서는 우리가 만든 MapReduce로직을 복사하고 관리해줌. ! 2. HDFS는 파일저장소임, 파일 여러서버에 조각내서 저장함. text파일이나 바이너리 파일을 저장할 수 있음. 대용량처리 분산스토리지
  18. 18. 1.1 HDFS ? 2003년 구글랩에서 발표된 The Google FileSystem이란 논문을 바탕으로 작성된 파일시스템 특징 파일을 여러개의 블록으로 나눠서 저장 (기본 64mb) 하드웨어 고장에 견고 (다른 서버에 복제본 저장 보통 3copy) 스트리밍 데이터 액서스 (배치에 최적화)
  19. 19. 1.2 HDFS 구조 NameNode DataNode 1 DataNode 2 DataNode 3 samle.text samle.text datanode1 : 별, 세모 datanode2: 동그라미, 오각형 datanode3: 마름모, 사각형 데이터의 분배
  20. 20. 2. Map/Reduce의 개념 함수형 언어에서 사용되는 Map함수와 Reduce함수에서 힌트를 얻어서 만들어짐
  21. 21. 2. Map/Reduce의 분산처리 KEY 단위로 VALUE 를 묶어서 분산처리를 가능하게 하는 방법. [MAP] 홀수 : 1 홀수 : 3 홀수 : 5 짝수 : 2 짝수 : 4 짝수 : 6 홀수 : [1,3,5] 짝수 : [2,4,6] [REDUCE] 홀수 : 9
 짝수 : 12
  22. 22. 2. 하둡에서의 Map/Reduce 순서
  23. 23. 3. JobTracker / TaskTracker JobTracker TaskTacker 1 TaskTacker 2 TaskTacker 3 MyLogic.jar task1 task2 task… task1 task2 task… task1 task2 task… MyLogic.jar MyLogic.jar MyLogic.jar 로직의 분배
  24. 24. 사실 서버기준으로 보면, 데이터 저장되는 서버에 같이 세팅 하둡마스터 서버 하둡 서버1 하둡 서버2 하둡 서버3 NameNode JobTracker DataNode 1 TaskTracker 1 DataNode 2 TaskTracker 2 DataNode 3 TaskTracker 3
  25. 25. 여기까지 세미나를 듣고 온 나의 생각
  26. 26. 하지만…
  27. 27. 단어세기 샘플소스 @SuppressWarnings("unused") 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); } } 실행(main) 맵퍼 리듀서 간단하긴 개뿔… ! SQL로는 엄청 간단한것도 엄청 손이 많이감 단순히 단어 갯수 세는 샘플도 클래스가 3개필요함 ! 그나마 병렬처리를 단순화 한편이긴 하지만 이 구조에 맞춰서 개발해야 하고 Join같은걸 구현하려면 클래스 엄청 만들어야함 ! MR의 구조를 이해 못하면 엉뚱한 결과가 나올수 있음 !
  28. 28. 설정파일 시스템 구조의 이해와 맵리듀스 처리에 대한 지식 필요함 잡트레커? 컴바인? 셔플? 네임노드? 태스크트레커? 데이타노드 투기적실행?
  29. 29. 다시 강조하지만, DB같은것이 아님 !!! 파일이고 배치작업에 목적이 있음. http://freesearch.pe.kr/archives/1175
  30. 30. 3장. 너네팀은 어떻게 써?
  31. 31. 1. 구성 하둡클러스터 (1…N) hadoop hadoop hadoop hadoop hadoop hadoop logic 실행서버 & 로그 스케쥴러 hadoop hadoop hadoop hadoop hadoop hadoop 메모리서버 (1…N) 자체 개발 Hive hbase hbase hbase hbase hbase hbase Hbase클러스터 MongoDB + ROR 로그사이즈 모니터링 Strom 데이터 이상 감지 dbms exadata
  32. 32. 2. 개발용 프레임워크 사용 Spring Hadoop API config + 랩핑 API 1. 여러개의 Map/Reduce 작업을 xml로 관리
 2. 동일한 HDFS상의 input을 사용하는 여러개의
 작업을 한번의 read로 처리하도록 함 ! 3. 자주쓰는 패턴은 해당 프레임워크에 기능구현
 4. 데몬형태로 동작하여 네트워크로 작업요청가능 사내 네트워크통신 모듈
  33. 33. 4장. 하둡 친구 소개 부제 : 하둡 에코 시스템
  34. 34. 출처:http://1004jonghee.tistory.com
  35. 35. MAP/REDUCE의 코드작성 불편함을 해결
  36. 36. SQL on Hadoop
  37. 37. 랜덤 액서스 / 저장
  38. 38. 실시간 처리
  39. 39. 하나의 솔루션으로 해결하는건 어려움. 요즘 추세는 용도에 맞게 섞어써야 함. ! 예를 들어 하루동안 쌓인 몇백기가의 로그파싱과 1차집계는 하둡으로 하고 요약된 결과는 HBASE에서 관리한다거나, 실시간 처리를 위해 kafka 를 이용해 로그를 메시지큐에 넣고 스톰으로 처리 한다거나 이런 용도별로 섞는 기술이 필요함. ! 그전에, 데이터가 정말 커서 문제인것인지 판단필요.
  40. 40. http://tedwon.com/display/dev/MapReduce+Programming 참고자료 http://hortonworks.com/blog/office-hours-qa-on-yarn-in-hadoop-2/ http://www.openwith.net/?p=506 http://answers.oreilly.com/topic/2141-how-mapreduce-works-with-hadoop/ http://www.youtube.com/watch?v=5cKTP36HVgI http://www.cubrid.org/blog/dev-platform/database-sharding-platform-at-nhn/ http://www.slideshare.net/madvirus/ss-29075031#btnNext http://bcho.tistory.com/622 http://www.slideshare.net/hyunsikchoi/sqlonhadoop-tajo-tech-planet-2013 http://www.slideshare.net/kongbong/hadoop-15513713 http://dslab.konkuk.ac.kr/Class/2011/11CD2/T7/%5B%EC%A2%85%ED%95%A9%E %84%A4%EA%B3%842%5D_%EC%B5%9C%EC%A2%85%EB%B0%9C%ED%91%9
  41. 41. 이 발표는 끝. 혹시 궁금한거 있나요?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×