SlideShare a Scribd company logo
Hadoop Tutorial



    충남대학교 데이터네트워크 연구실
                이 연 희


             2012. 04. 05




1
차례
   Hadoop 이란
   Hadoop 아키텍쳐
   HDFS
   MapReduce
   Hadoop 어플리케이션 개발
Data Explosion




3
What is MapReduce?




   텍스트 검색 라이브러리 아파치 루씬 창시자 '더그 커팅'에
    의해 시작
       오픈소스 웹 검색엔진 아파치 너치(Apache Nutch)에서 탄생
   구글 MapReduce 프로그래밍 모델을 제안
    •   소스를 공개를 하지 않음
HDFS와 MapReduce
   오픈소스 분산 어플리케이션 프레임워크
       파일시스템: HDFS
       컴퓨팅 프레임워크: MapReduce
   수천 대의 클러스터까지 확장 가능
   대용량 데이터의 처리에 적합
   Google에 의해 MapReduce 모델 제안




                  HDFS           MapReduce
Hadoop
   Open Source in Java
   Yahoo에서 구현하여 공개




                                             Hadoop

                     HDFS
        ( Hadoop Distributed File System )
                                                           MapReduce



                                    Java Virtual Machine
HDFS
   클러스터 파일 시스템 (Cluster File System)


일반 파일 시스템                     클러스터 파일 시스템


                           Network            Network




    물리 디스크        물리 디스크             물리 디스크             물리 디스크




    논리 디스크                           논리 디스크
MapReduce
   분산 처리 모델 (Distributed Computing Model)


    일반 처리 모델                        분산 처리 모델




                          Network              Network
Hadoop의 물리적 구성


                           Hadoop HDFS




Job Tracker   Task Tracker          Task Tracker       Task Tracker
              ( Map & Reduce )      ( Map & Reduce )   ( Map & Reduce )
Hadoop Architecture
                                 Master
                                                                 HDFS

                      Namenode                                   MapReduce
                                          Jobtracker




      Worker 1      Worker 2         Worker 3                 Worker n

     Tasktracker   Tasktracker     Tasktracker
                                                       …….   Tasktracker

     Datanode      Datanode         Datanode                 Datanode




10
HDFS: Architecture
HDFS: Metadata

   파일의 위치 + 파일 이름 + 복제 수
   메모리에 상주하면서 빠르게 정보를 전달


              /home/test/test_file
                 어디에 있나?
                                              Name Node
      CLIEN
                    X 노드, Y 블럭
        T

                                               Metadata

                                     /home/root/test, 3 …..
                                     /home/test/test_file,3 …..
                                     /home/micle/miracle, 3 ….
HDFS: Block
   저장 공간의 단위
       사용자의 설정에 의해 변경될 수 있다.
   저장공간 보다 작은 다 수의 파일은?
          40M 128M
                 88M

          40M 128M
                 88M
                         기본 블록 사이즈는 128MB 라고 가정
              128M       40MB 크기의 파일 2 개를 복사

   저장공간 보다 큰 파일은?
              128M

           72M128M 56M
                         기본 블록 사이즈는 128MB 라고 가정
              128        200MB 크기의 파일 1 개를 복사
HDFS: Replication
   Replication  복제

   왜 복제를 하는가?

                        DATA




                  복제가 존재하는 서버
                   복제가 없는 서버
Hadoop and MapReduce

MapReduce 처리 흐름




     Map(k1, v1)  list(k2, v2)
     Reduce(k2, list[v2])  (K2, v3)

                                  -15 -
MapReduce

                Split Data
                                        (key, value)                  (key, value)

              Data Split 1    Mapper    Temp Disk
                                                            Reducer
Large
Data          Data Split 2    Mapper    Temp Disk                       Result
                                                            Reducer

              Data Split 3    Mapper    Temp Disk




        1.   (Key,Value) 로 자료를 가져온다.          1.       (Key,Value) 로 자료를 가져온다.
        2.   분석 후 (Key,Value) 를 생성한다.         2.       같은 key 값에 대한 분석을 진행한다.
        3.   분석 된 (Key,Value) 를 저장한다          3.       최종 결과 (Key,Value) 를 저장한다.
Hadoop의 하위 프로젝트들



       Pig     Chukwa   Hive      HBase

                                   Zoo
       MapReduce        HDFS
                                  Keeper

             Core              Avro




17
Hadoop의 하위 프로젝트
•   Avro
    –   직렬화 시스템
•   Chukwa
    –   분산된 데이터를 수집 시스템
•   Hbase
    –   큰 테이블을 지원하는 데이터 베이스 시스템
•   Hive
    –   데이터를 통합하고 SQL-like 쿼리 지원
•   Pig
    –   흐름제어를 위한 Script 언어 지원
•   Zookeeper
    –   분산 어플리케이션을 위한 coordination 서비스
사례: Amazon EC2, S3 서비스
   왜 Amazon의 서비스를 이용하는가?

       성능 향상
           다수의 컴퓨터를 이용한 성능 향상


       비용 절감
           수 백대 혹은 그 이상의 컴퓨터를 유지하는 비용 절감


       설치가 필요 없음
           기본적인 MapReduce를 제공
뉴욕타임즈 사례
1851年 – 1981年 12月
  1100만매의 신문
                               Amazon S3 Service


             TIFF Image ( 4TB )                        PDF File ( 1.5TB )


                                              Amazon EC2 Service
          Hadoop AMI
   (Hadoop Amazon Machine Image)
              X 100




                                   소요 비용
             S3                            EC2
     Storage – 5.5TB                                           $ 1465
    Data Transfer – 4TB            Instances 100 x 24 Hour
사례 : Facebook 로그 분석
   Scribe 를 이용한 로그 수집 후

   MapReduce를 이용한 분석
       Hadoop의 하위 프로젝트 Hive를 이용
사례 : 트래픽 분석
   Snort 로그 분석
       방화벽 로그 분석


   Flow Data 분석
       대용량의 플로우 데이터를 분석

   http://wiki.apache.org/hadoop/PoweredBy#G
MapReduce 프로그래밍 구성요소




 InputFormat      Mapper   Key1     Combiner      Key1     Reducer   OutputFormat

                           Value1   Partitioner   Value1
RecorderReader                                                       RecorderWriter

     InputSplit
                                                                     Key2    Value2


                              맵리듀스 프레임워크
     입력 데이터                                                           출력 데이터




23
MapReduce 프로그래밍 구성요소
1.       InputFormat
        입력데이터를 map() 메소드로 전달
        몇 개의 맵 태스크로 분리해야 하는지에 대한 정보
            getSplit()
        하나의 레코드 씩 map() 메소드로에 전달
            RecordReader가 담당


2.       Mapper
        RecordReader에 의해 전달된 각 레코드를 읽어 새로운 키-값 생성

3.       Combiner
        맵의 결과로 생성된 임시 로컬 데이터에 대한 리듀스 작업 수행
        리듀스로 전달되는 데이터의 양을 줄임으로써 네트워크 성능 문제
         해결

 24
MapReduce 프로그래밍 구성요소
4.       Partitioner
        키를 이용해 맵의 출력 데이터를 각 리듀스로 분배하는 규칙 적용


5.       Reducer
        새로운 키를 기준으로 의미있는 결과 생성


6.       OutputFormat
        리듀스의 결과를 출력




 25
MR 애플리케이션 작성 절차
    데이터 흐름 설계
    InputFormat/OutputFormat 구현
    Mapper 구현
    Partitioner 구현
    Reducer 구현
    Driver 구현




    26
MapReduce Programming
    Mapper 클래스
        키-값의 쌍을 생성


    Reduce 클래스
        입력은 키와 값 목록
        키를 기준으로 여러 개의 값을 출력


    메인 클래스(Driver)
        작업의 설정과 실행   map (k1, v1)  list (k2, v2)
                      Reduce (k2, list (v2)  list (v2)



    27
MapReduce 예제: WordCount




28
MapReduce: WordCount 예제
public static class Map extends 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, Context context) {
      String line = value.toString();
      StringTokenizer tokenizer = new StringTokenizer(line);


      while (tokenizer.hasMoreTokens()) {
          word.set(tokenizer.nextToken());
          context.write(word, one);
      }
  }

 29
MapReduce: WordCount 예제
public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable>
  {


    public void reduce(Text key, Iterable<IntWritable> values, Context context)
         throws IOException, InterruptedException {
          int sum = 0;
          for (IntWritable val : values) {
              sum += val.get();
          }
          context.write(key, new IntWritable(sum));
    }
}




    30
MapReduce: WordCount 예제
public static void main(String[] args) throws Exception {
     Configuration conf = new Configuration();
     Job job = new Job(conf, "wordcount");


     job.setOutputKeyClass(Text.class);
     job.setOutputValueClass(IntWritable.class);
     job.setMapperClass(Map.class);
     job.setReducerClass(Reduce.class);
     job.setInputFormatClass(TextInputFormat.class);
     job.setOutputFormatClass(TextOutputFormat.class);


     FileInputFormat.addInputPath( job, new Path(args[0]));
     FileOutputFormat.setOutputPath( job, new Path(args[1]));


     job.waitForCompletion(true);
}
    31
Partitioner
public class HashPartitioner<K2, V2> implements Partitioner<K2, V2> {


     public void configure(JobConf job) {}


     public int getPartition(K2 key, V2 value, int numPartitions) {
           return (key.hashCode() & Integer.MAX_VALUE) % numPartitions ;
     }
}




    32
Combiner
public static void main(String[] args) throws Exception {
   Configuration conf = new Configuration();
   Job job = new Job(conf, "wordcount");


   job.setOutputKeyClass(Text.class);
   job.setOutputValueClass(IntWritable.class);
   job.setMapperClass(Map.class);
   job.setCombinerClass(Reduce.class);
   job.setReducerClass(Reduce.class);
   job.setInputFormatClass(TextInputFormat.class);
   job.setOutputFormatClass(TextOutputFormat.class);


   FileInputFormat.addInputPath( job, new Path(args[0]));
   FileOutputFormat.setOutputPath( job, new Path(args[1]));


   job.waitForCompletion(true);
} 33
Hadoop Wiki 참고
    http://wiki.apache.org/hadoop/FrontPage




    34
Thank you!




35

More Related Content

KEY
Distributed Programming Framework, hadoop
PDF
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
PDF
HDFS Overview
PDF
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
PPT
Hadoop Introduction (1.0)
PDF
Hadoop overview
PDF
서울 하둡 사용자 모임 발표자료
PPTX
An introduction to hadoop
Distributed Programming Framework, hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
HDFS Overview
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop Introduction (1.0)
Hadoop overview
서울 하둡 사용자 모임 발표자료
An introduction to hadoop

What's hot (20)

PPTX
about hadoop yes
PDF
하둡 좋은약이지만 만병통치약은 아니다
PDF
hadoop ch1
PDF
HBase 훑어보기
PPTX
Hadoop administration
PDF
Expanding Your Data Warehouse with Tajo
PPTX
Tajo and SQL-on-Hadoop in Tech Planet 2013
PDF
하둡 (Hadoop) 및 관련기술 훑어보기
PPTX
하둡 타입과 포맷
PPTX
하둡 설치(의사분산모드)
PDF
Apache hive
PDF
Hadoop발표자료
PPTX
빅데이터 구축 사례
PDF
PPTX
5일차.map reduce 활용
PDF
하둡완벽가이드 Ch9
PDF
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
PDF
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-Hadoop
PDF
Hive begins
PDF
하둡 HDFS 훑어보기
about hadoop yes
하둡 좋은약이지만 만병통치약은 아니다
hadoop ch1
HBase 훑어보기
Hadoop administration
Expanding Your Data Warehouse with Tajo
Tajo and SQL-on-Hadoop in Tech Planet 2013
하둡 (Hadoop) 및 관련기술 훑어보기
하둡 타입과 포맷
하둡 설치(의사분산모드)
Apache hive
Hadoop발표자료
빅데이터 구축 사례
5일차.map reduce 활용
하둡완벽가이드 Ch9
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-Hadoop
Hive begins
하둡 HDFS 훑어보기
Ad

Viewers also liked (9)

PDF
Deview2013 SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
PDF
PostgreSQL Deep Internal
PPTX
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
PPTX
YARN overview
PPTX
Intro to r & hadoop
PDF
[Open Technet Summit 2014] 쓰기 쉬운 Hadoop 기반 빅데이터 플랫폼 아키텍처 및 활용 방안
PDF
빅데이터, big data
PDF
20141111 파이썬으로 Hadoop MR프로그래밍
PDF
빅데이터 기술 현황과 시장 전망(2014)
Deview2013 SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
PostgreSQL Deep Internal
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
YARN overview
Intro to r & hadoop
[Open Technet Summit 2014] 쓰기 쉬운 Hadoop 기반 빅데이터 플랫폼 아키텍처 및 활용 방안
빅데이터, big data
20141111 파이썬으로 Hadoop MR프로그래밍
빅데이터 기술 현황과 시장 전망(2014)
Ad

Similar to Hadoop 제주대 (20)

PPTX
introduce of Hadoop map reduce
PDF
Bog data 설명
PDF
3 빅데이터기반비정형데이터의실시간처리방법 원종석
PDF
7가지 동시성 모델 람다아키텍처
PPTX
Apache spark 소개 및 실습
PPTX
Map reduce 기본 설명
PDF
Spark 소개 2부
PPTX
2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)
PDF
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
PDF
Cloud 기반 Big Data 분석 엔진 서비스
PPT
구글의 분산데이터 처리
PDF
Spark Day 2017@Seoul(Spark Bootcamp)
PDF
log-monitoring-architecture.pdf
PDF
Apache hbase overview (20160427)
PPTX
빅데이터 플랫폼 진화 공개용
PDF
[246] foursquare데이터라이프사이클 설현준
PDF
2012 빅데이터 big data 발표자료
PPTX
Spark 소개 1부
PPT
Google 4
PDF
Spark and Shark
introduce of Hadoop map reduce
Bog data 설명
3 빅데이터기반비정형데이터의실시간처리방법 원종석
7가지 동시성 모델 람다아키텍처
Apache spark 소개 및 실습
Map reduce 기본 설명
Spark 소개 2부
2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
Cloud 기반 Big Data 분석 엔진 서비스
구글의 분산데이터 처리
Spark Day 2017@Seoul(Spark Bootcamp)
log-monitoring-architecture.pdf
Apache hbase overview (20160427)
빅데이터 플랫폼 진화 공개용
[246] foursquare데이터라이프사이클 설현준
2012 빅데이터 big data 발표자료
Spark 소개 1부
Google 4
Spark and Shark

Hadoop 제주대

  • 1. Hadoop Tutorial 충남대학교 데이터네트워크 연구실 이 연 희 2012. 04. 05 1
  • 2. 차례  Hadoop 이란  Hadoop 아키텍쳐  HDFS  MapReduce  Hadoop 어플리케이션 개발
  • 4. What is MapReduce?  텍스트 검색 라이브러리 아파치 루씬 창시자 '더그 커팅'에 의해 시작  오픈소스 웹 검색엔진 아파치 너치(Apache Nutch)에서 탄생  구글 MapReduce 프로그래밍 모델을 제안 • 소스를 공개를 하지 않음
  • 5. HDFS와 MapReduce  오픈소스 분산 어플리케이션 프레임워크  파일시스템: HDFS  컴퓨팅 프레임워크: MapReduce  수천 대의 클러스터까지 확장 가능  대용량 데이터의 처리에 적합  Google에 의해 MapReduce 모델 제안 HDFS MapReduce
  • 6. Hadoop  Open Source in Java  Yahoo에서 구현하여 공개 Hadoop HDFS ( Hadoop Distributed File System ) MapReduce Java Virtual Machine
  • 7. HDFS  클러스터 파일 시스템 (Cluster File System) 일반 파일 시스템 클러스터 파일 시스템 Network Network 물리 디스크 물리 디스크 물리 디스크 물리 디스크 논리 디스크 논리 디스크
  • 8. MapReduce  분산 처리 모델 (Distributed Computing Model) 일반 처리 모델 분산 처리 모델 Network Network
  • 9. Hadoop의 물리적 구성 Hadoop HDFS Job Tracker Task Tracker Task Tracker Task Tracker ( Map & Reduce ) ( Map & Reduce ) ( Map & Reduce )
  • 10. Hadoop Architecture Master HDFS Namenode MapReduce Jobtracker Worker 1 Worker 2 Worker 3 Worker n Tasktracker Tasktracker Tasktracker ……. Tasktracker Datanode Datanode Datanode Datanode 10
  • 12. HDFS: Metadata  파일의 위치 + 파일 이름 + 복제 수  메모리에 상주하면서 빠르게 정보를 전달 /home/test/test_file 어디에 있나? Name Node CLIEN X 노드, Y 블럭 T Metadata /home/root/test, 3 ….. /home/test/test_file,3 ….. /home/micle/miracle, 3 ….
  • 13. HDFS: Block  저장 공간의 단위  사용자의 설정에 의해 변경될 수 있다.  저장공간 보다 작은 다 수의 파일은? 40M 128M 88M 40M 128M 88M 기본 블록 사이즈는 128MB 라고 가정 128M 40MB 크기의 파일 2 개를 복사  저장공간 보다 큰 파일은? 128M 72M128M 56M 기본 블록 사이즈는 128MB 라고 가정 128 200MB 크기의 파일 1 개를 복사
  • 14. HDFS: Replication  Replication  복제  왜 복제를 하는가? DATA 복제가 존재하는 서버 복제가 없는 서버
  • 15. Hadoop and MapReduce MapReduce 처리 흐름  Map(k1, v1)  list(k2, v2)  Reduce(k2, list[v2])  (K2, v3) -15 -
  • 16. MapReduce Split Data (key, value) (key, value) Data Split 1 Mapper Temp Disk Reducer Large Data Data Split 2 Mapper Temp Disk Result Reducer Data Split 3 Mapper Temp Disk 1. (Key,Value) 로 자료를 가져온다. 1. (Key,Value) 로 자료를 가져온다. 2. 분석 후 (Key,Value) 를 생성한다. 2. 같은 key 값에 대한 분석을 진행한다. 3. 분석 된 (Key,Value) 를 저장한다 3. 최종 결과 (Key,Value) 를 저장한다.
  • 17. Hadoop의 하위 프로젝트들 Pig Chukwa Hive HBase Zoo MapReduce HDFS Keeper Core Avro 17
  • 18. Hadoop의 하위 프로젝트 • Avro – 직렬화 시스템 • Chukwa – 분산된 데이터를 수집 시스템 • Hbase – 큰 테이블을 지원하는 데이터 베이스 시스템 • Hive – 데이터를 통합하고 SQL-like 쿼리 지원 • Pig – 흐름제어를 위한 Script 언어 지원 • Zookeeper – 분산 어플리케이션을 위한 coordination 서비스
  • 19. 사례: Amazon EC2, S3 서비스  왜 Amazon의 서비스를 이용하는가?  성능 향상  다수의 컴퓨터를 이용한 성능 향상  비용 절감  수 백대 혹은 그 이상의 컴퓨터를 유지하는 비용 절감  설치가 필요 없음  기본적인 MapReduce를 제공
  • 20. 뉴욕타임즈 사례 1851年 – 1981年 12月 1100만매의 신문 Amazon S3 Service TIFF Image ( 4TB ) PDF File ( 1.5TB ) Amazon EC2 Service Hadoop AMI (Hadoop Amazon Machine Image) X 100 소요 비용 S3 EC2 Storage – 5.5TB $ 1465 Data Transfer – 4TB Instances 100 x 24 Hour
  • 21. 사례 : Facebook 로그 분석  Scribe 를 이용한 로그 수집 후  MapReduce를 이용한 분석  Hadoop의 하위 프로젝트 Hive를 이용
  • 22. 사례 : 트래픽 분석  Snort 로그 분석  방화벽 로그 분석  Flow Data 분석  대용량의 플로우 데이터를 분석  http://wiki.apache.org/hadoop/PoweredBy#G
  • 23. MapReduce 프로그래밍 구성요소 InputFormat Mapper Key1 Combiner Key1 Reducer OutputFormat Value1 Partitioner Value1 RecorderReader RecorderWriter InputSplit Key2 Value2 맵리듀스 프레임워크 입력 데이터 출력 데이터 23
  • 24. MapReduce 프로그래밍 구성요소 1. InputFormat  입력데이터를 map() 메소드로 전달  몇 개의 맵 태스크로 분리해야 하는지에 대한 정보  getSplit()  하나의 레코드 씩 map() 메소드로에 전달  RecordReader가 담당 2. Mapper  RecordReader에 의해 전달된 각 레코드를 읽어 새로운 키-값 생성 3. Combiner  맵의 결과로 생성된 임시 로컬 데이터에 대한 리듀스 작업 수행  리듀스로 전달되는 데이터의 양을 줄임으로써 네트워크 성능 문제 해결 24
  • 25. MapReduce 프로그래밍 구성요소 4. Partitioner  키를 이용해 맵의 출력 데이터를 각 리듀스로 분배하는 규칙 적용 5. Reducer  새로운 키를 기준으로 의미있는 결과 생성 6. OutputFormat  리듀스의 결과를 출력 25
  • 26. MR 애플리케이션 작성 절차  데이터 흐름 설계  InputFormat/OutputFormat 구현  Mapper 구현  Partitioner 구현  Reducer 구현  Driver 구현 26
  • 27. MapReduce Programming  Mapper 클래스  키-값의 쌍을 생성  Reduce 클래스  입력은 키와 값 목록  키를 기준으로 여러 개의 값을 출력  메인 클래스(Driver)  작업의 설정과 실행 map (k1, v1)  list (k2, v2) Reduce (k2, list (v2)  list (v2) 27
  • 29. MapReduce: WordCount 예제 public static class Map extends 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, Context context) { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); context.write(word, one); } } 29
  • 30. MapReduce: WordCount 예제 public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } context.write(key, new IntWritable(sum)); } } 30
  • 31. MapReduce: WordCount 예제 public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = new Job(conf, "wordcount"); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); job.setMapperClass(Map.class); job.setReducerClass(Reduce.class); job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); FileInputFormat.addInputPath( job, new Path(args[0])); FileOutputFormat.setOutputPath( job, new Path(args[1])); job.waitForCompletion(true); } 31
  • 32. Partitioner public class HashPartitioner<K2, V2> implements Partitioner<K2, V2> { public void configure(JobConf job) {} public int getPartition(K2 key, V2 value, int numPartitions) { return (key.hashCode() & Integer.MAX_VALUE) % numPartitions ; } } 32
  • 33. Combiner public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = new Job(conf, "wordcount"); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); job.setMapperClass(Map.class); job.setCombinerClass(Reduce.class); job.setReducerClass(Reduce.class); job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); FileInputFormat.addInputPath( job, new Path(args[0])); FileOutputFormat.setOutputPath( job, new Path(args[1])); job.waitForCompletion(true); } 33
  • 34. Hadoop Wiki 참고  http://wiki.apache.org/hadoop/FrontPage 34