하둡 이클립스 플러그인 설치 $ 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 |