Hadoop SDK

하둡 이클립스 플러그인 설치


$ cd Downloads

$ wget http://ftp.daumkakao.com/apache/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz


오류가 나는경우

http://ftp.daumkakao.com/apache/hadoop/core/ 사이트를 들어가서 경로를 확인해보고 hadoop-2.6.0을 받으면 된다.


$ ls


$ tar xvzf hadoop-2.6.0.tar.gz

$ ls

/usr/local/로 옮깁니다.

$ sudo mv hadoop-2.6.0 /usr/local/


압축파일을 삭제합니다.

$ rm hadoop-2.6.0.tar.gz


eclipse를 실행합니다.

$ eclipse


우측 상단의 open perpective 버튼을 누르고 other버튼을 클릭합니다.

Java를 선택하고 OK 버튼을 클릭합니다.


File -> New -> Java Project 버튼을 클릭합니다.


Project name에 WordCount를 입력하고 JRE 설정을 JavaSE-1.7로 변경하고 Finish 버튼을 클릭합니다.


프로젝트가 생성된 것을 확인할수 있습니다.


New -> Package 버튼을 클릭합니다.


Name란에 “kr.ac.kookmin.cs.bigdata”을 입력합니다.


생성된 kr.ac.kookmin.cs.bigdata package에 마우스 오른쪽 클릭 후 New -> Class 버튼을 클릭합니다.


Class Name을 WordCount라 입력합니다.


class가 생성된 것을 확인할 수 있습니다.


WordCount project를 오른쪽 클릭하고 Build Path -> Configure Build Path버튼을 클릭합니다.


Libraries 탭을 클릭하고 Add External JARs 버튼을 클릭합니다.


/usr/local/hadoop-2.6.0/share/hadoop/mapreduce 에 있는 jar 파일들을 선택하고 OK 버튼을 클릭합니다.


/usr/local/hadoop-2.6.0/share/hadoop/common 에 있는 jar 파일들을 선택하고 OK 버튼을 클릭합니다.


/usr/local/hadoop-2.6.0/share/hadoop/common/lib 에 있는 jar 파일들을 선택하고 OK 버튼을 클릭합니다.


/usr/local/hadoop-2.6.0/share/hadoop/yarn 에 있는 jar 파일들을 선택하고 OK 버튼을 클릭합니다.


확인 버튼을 클릭합니다.



아래 코드를 붙여넣기 합니다.


package kr.ac.kookmin.cs.bigdata;


import java.io.IOException;

import java.util.Arrays;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.conf.Configured;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.Mapper;

import org.apache.hadoop.mapreduce.Reducer;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

import org.apache.hadoop.util.Tool;

import org.apache.hadoop.util.ToolRunner;


public class WordCount extends Configured implements Tool {

   public static void main(String[] args) throws Exception {

       System.out.println(Arrays.toString(args));

       int res = ToolRunner.run(new Configuration(), new WordCount(), args);

     

       System.exit(res);

   }


   @Override

   public int run(String[] args) throws Exception {

       System.out.println(Arrays.toString(args));


       Job job = Job.getInstance(getConf());

       job.setJarByClass(WordCount.class);

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

     

       return 0;

   }

  

   public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {

       private final static IntWritable ONE = new IntWritable(1);

       private Text word = new Text();


       @Override

       public void map(LongWritable key, Text value, Context context)

               throws IOException, InterruptedException {

           for (String token: value.toString().split("\\s+")) {

               word.set(token);

               context.write(word, ONE);

           }

       }

   }


   public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> {

       @Override

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

       }

   }

}



kr.ac.kookmin.cs.bigdata 를 마우스 오른쪽 클릭한 다음 Run As -> Run Configurations 버튼을 클릭합니다.


Java Application을 클릭하고 New launch configuration 버튼을 클릭합니다.


Name을 Driver로 변경하고 Main class란에 “kr.ac.kookmin.cs.bigdata.WordCount”를 입력합니다.


Arguments 탭을 클릭한 다음 Program arguments란에 “pg100.txt output” 을 입력합니다.

(pg100.txt는 input file name이므로 다른 file을 input 하고 싶은 경우 변경하면 됩니다.)


Classpath 탭을 클릭한 다음 User Entries를 선택하고 우측의 Add External JARs 버튼을 클릭합니다.


/usr/local/hadoop-2.6.0/share/hadoop/common/lib/ 경로에 있는 htrace-core-3.0.4.jar을 선택하고 OK 버튼을 클릭합니다.


터미널 창에 밑의 명령어를 입력합니다.

$ curl http://www.gutenberg.org/cache/epub/100/pg100.txt >  /home/bdlab/workspace/WordCount/pg100.txt

(만약 인터넷이 문제가 있는 경우 아무 문자를 입력하여 pg100.txt 파일을 만들으셔도 됩니다.)


package를 마우스 오른쪽 클릭하고 Run As -> Java Application 버튼을 클릭합니다.


콘솔 탭에서 작동을 확인할 수 있습니다.


output 폴더가 생성된 것을 확인할 수 있습니다.

$ ls /home/bdlab/workspace/WordCount/


$ cat /home/bdlab/workspace/WordCount/output/part-r-00000 | sort -t$'\t' -k2 -n -r | head


Comments