版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenpengjia006/article/details/63368283
记录下自己在搭建Eclipse开发环境中踩过的坑,感谢@fxsdbt520的无私帮助。在此不再重复Hadoop安装,需要了解的朋友可以移步centos安装hadoop2.7.2伪分布式观摩。
- 首先需要声明,由于其中的Jar包是经过Eclipse MARS版本编译的,为了保险起见,最好使用相同版本的Eclipse,否则可能出现一些兼容性问题。
- 准备工作
- 安装好Hadoop
- 在开发机器安装JDK及Eclipse MARS
- 下载百度网盘中的文件,里面包含了Hadoop2.7.2版本及所需插件包以及Hadoop版本的Hello World。
- 将Hadoop解压到任意目录,然后配置Hadoop环境变量。
- HADOOP_HOME Hadoop解压目录
- HADOOP_PREFIX Hadoop解压目录
- HADOOP_BIN_PATH 指定值 %HADOOP_HOME%\bin
- 在path变量最后中添加“;%HADOOP_HOME%\bin”。
- 命令行中输入hadoop version,若出现Hadoop版本消息,说明环境变量配置成功。
- 替换相关文件
- 将hadoop-eclipse-plugin-2.7.2.jar复制到Eclipse中plugins目录下。打开Eclipse(如果已打开清重启..),如果左边栏出现DFS Loctaions,则说明插件添加成功。如下图所示:
- 将hadoop-common-2.2.0-bin-master压缩包中的文件解压出来,替换掉hadoop-2.7.2/bin目录下的重复文件。
- 将hadoop.dll文件复制到系统文件夹下的system32目录下
- 设定Eclipse中关于Hadoop配置。
- 指定Eclipse中的Hadoop本地安装路径
- Eclipse中Winddow–>Show View–>MapReduce Tools–>Map/Reduce Locations
- 在Map/Reduce Locations中右键New Hadoop Location,开始配置Hadoop位置。
- 此处不再赘述,修改相关配置就Ok。
- 如果配置正确的话,刷新下就可以看到你的HDFS中的文件啦。
- 注意:需要预先在HDFS中创建一个文件夹,连接才不会报错,切记!
- 导入示例demo。
- 新建Map/Reduce项目,将SRC下面目录全部引入。
- 导出Hadoop服务端的core-site.xml、hdfs-site.xml以及mapred-site.xml导出,覆盖项目中的配置文件。
- 将SRC目录下的wordcount1.txt、wordcount2.txt上传到HDFS中
- 由于包里附带的demo是在服务器上运行的版本,所以需要对Main方法做一些改动。改动如下:
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
// conf.set("hbase.zookeeper.quorum", "master");
// conf.set("hbase.zookeeper.property.clientPort", "2181");
// String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
// if (otherArgs.length < 1) {
// System.err.println("Usage: wordcount <in> [<in>...] <out>");
// System.exit(2);
// }
Job job = Job.getInstance(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("hdfs://hadoop-master:9000/test/input"));
FileOutputFormat.setOutputPath(job, new Path("hdfs://hadoop-master:9000/test/output"));
// 删除输出目录
HDFSUtils.deleteDir(new Path("hdfs://hadoop-master:9000/test/output"));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
注意:我这边是配置了hosts,所以直接写的域名,具体路径需要根据你的HDFS上传路径做对应的修改。
7. 激动人心的时刻就要到了,右键项目 Run As –> Run On Hadoop,在疯狂的一段日志输出后,大功告成。
现在你可以查看指定的Hadoop输出目录了,输出结果如下:
注意:如果MapReduce所指定输出结果路径在执行前就已经存在的话同样会报错,这一点请注意。