Eclipse配置hadoop開發環境

Hadoop 踩坑記(三)java

Eclipse配置hadoop開發環境node

環境

windows 10git

java 1.8github

namenode(hadoop1-ali) 阿里雲(CentOS 7.3) 120.26.173.104apache

hadoop 版本 2.8.5windows

Eclipse 安裝

須要安裝 Enterprise 版本,因爲網絡緣由,建議使用離線安裝包網絡

https://www.eclipse.org/downl...app

固然在此以前先要安裝 java 在此不作贅述eclipse

配置 hadoop 插件

把下載好的 Hadoop 解壓到本地目錄。添加系統環境變量:新建變量名 HADOOP_HOME,值爲Hadoop 的解壓路徑,如 D:\Program Files\hadoop-2.7.5ide

添加到 path 中:%HADOOP_HOME%\bin

hadoop-eclipse-plugin-2.8.5.jar 包複製到 Eclipse 目錄下的 plugins 目錄中。重啓Eclipse。

打開 Window->Prefences 能夠看到左側多出了 Hadoop Map/Reduce

插件配置1

點擊多出的 Hadoop Map/Reduce 項,在右側添加 Hadoop 解壓路徑 如 D:\Program Files\hadoop-2.7.5

解壓 hadoop-common-2.8.5-bin-master 包(本人是直接從 github 上找的,要尋找對應版本的文件),把解壓獲得的 bin 目錄下的 hadoop.dll、hadoop.exp、hadoop.lib、winutils.exe 這四個文件複製到 hadoop-2.8.5bin 目錄下。

再把 hadoop.dllwinutils.exe 複製到 C:\Windows\System32 目錄下

配置hadoop鏈接

Eclipse 中依次點擊:Window->Open Perspective->Map/Reduce,項目左側中出現 DFS Locations 結構。

若是沒有,直接新建一個 map/reduce 項目便可

鏈接配置1

Eclipse 中依次點擊:Window->Show View ->Other->MapReduce Tools->Map/Reduce Locations 點擊肯定(open)

鏈接配置2

控制檯多出了 Map/Reduce Locations 視圖。

右鍵 Map/Reduce Locations 視圖的空白處,選擇新建,定義 Hadoop 集羣的連接。

鏈接配置3

其中 location name 和 user name 隨意

Map/Reduce(V2) Master 配置要與 hadoop 配置中 mapred-site.xml 內容保持一致

DFS Master 配置要與 core-site.xml 內容保持一致

點擊 Finish 後 DFS Locations 下就會出現相關的鏈接信息

在配置正確的狀況下,點開就能看到 hdfs 文件系統中的文件內容,即鏈接成功

鏈接配置4

運行wordcount示例

項目 src 下建立 Package(本文名爲 wit),Package 下建立 WordCount.java

粘貼以下 java 代碼

package wit;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
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.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser; 
public class WordCount {
    public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
        private final static IntWritable one = new IntWritable(1);
        private Text word = new Text();
        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);
            }
        }
    }
    public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
        private IntWritable result = new IntWritable();
        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);
        }
    }
    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);
        }
        @SuppressWarnings("deprecation")
        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);
    }
}

右鍵項目,依次 Run as ->Run Configurations...->Java Application

Java Application 後點擊左上角的 New launch application,配置 Main 標籤參數。

填寫Name(任起),Search...往下拉,找到 WordCount,肯定。

示例配置1

配置 Arguements

示例配置2

(此部分圖來自https://blog.csdn.net/u010185...)

右鍵 WordCount 類,選擇 Build Path -> configure build path 添加 jar 包

示例配置3

點擊 Add External JARs 將 hadoop 解壓文件夾中相關的 jar 包所有添加進來

配置完成,便可點擊 Run 來運行 WordCount 類

運行結果會生成在前面配置的 hdfs 文件系統的指定目錄中,能夠直接在 Eclipse 中查看

原文來自 陳十一的博客

相關文章
相關標籤/搜索