Eclipse环境搭建并且运行wordcount程序
一、安装Hadoop插件
1. 所需环境
hadoop2.0伪分布式环境平台正常运行
所需压缩包:eclipse-jee-luna-SR2-linux-gtk-x86_64.tar.gz
在Linux环境下运行的eclipse软件压缩包,解压后文件名为eclipse
hadoop2x-eclipse-plugin-master.zip
在eclipse中需要安装的Hadoop插件,解压后文件名为hadoop2x-eclipse-plugin-master
如图所示,将所有的压缩包放在同一个文件夹下并解压。
2.编译jar包
编译hadoop2x-eclipse-plugin-master的plugin 的插件源码,需要先安装ant工具
接着输入命令(注意ant命令在什么路径下使用,具体路径在下一张截图中,不然这个命令会用不了):
- ant jar -Dversion=2.6.0 -Declipse.home='/home/xiaow/hadoop2.0/eclipse' # 刚才放进去的eclipse软件包的路径 -Dversion=2.6.0 hadoop的版本号
- -Dhadoop.home='/home/xiaow/hadoop2.0/hadoop-2.6.0' # hadoop安装文件的路径
等待一小会时间就好了
编译成功后,找到放在 /home/xiaow/ hadoop2.0/hadoop2x-eclipse-pluginmaster/build/contrib/eclipse-plugin下, 名为hadoop-eclipse-plugin-2.6.0.jar的jar包, 并将其拷贝到/hadoop2.0/eclipse/plugins下
输入命令:
- cp -r /home/xiaow/hadoop2.0/hadoop2x-eclipse-plugin-master/build/contrib/eclipse-plugin/hadoop-eclipse-plugin-2.6.0.jar /home/xiaow/hadoop2.0/eclipse/plugins/
二、Eclipse配置
接下来打开eclipse软件
一定要出现这个图标,没有出现的话前面步骤可能错了,或者重新启动几次Eclipse
然后按照下面的截图操作:
如此,Eclipse环境搭建完成。
三、wordcount程序
建工程:
输入如下代码:
- package wordcount;
- 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.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.mapreduce.lib.reduce.IntSumReducer;
- import org.apache.hadoop.util.GenericOptionsParser;
- public class wordcount {
- // 自定义的mapper,继承org.apache.hadoop.mapreduce.Mapper
- public static class WordCountMap extends Mapper<LongWritable, Text, Text, IntWritable> {
- private final IntWritable one = new IntWritable(1);
- private Text word = new Text();
- // Mapper<LongWritable, Text, Text, LongWritable>.Context context
- public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
- String line = value.toString();
- System.out.println(line);
- // split 函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回,这里按照“\t”来分割text文件中字符,即一个制表符
- // ,这就是为什么我在文本中用了空格分割,导致最后的结果有很大的出入
- StringTokenizer token = new StringTokenizer(line);
- while (token.hasMoreTokens()) {
- word.set(token.nextToken());
- context.write(word, one);
- }
- }
- }
- // 自定义的reducer,继承org.apache.hadoop.mapreduce.Reducer
- public static class WordCountReduce extends Reducer<Text, IntWritable, Text, IntWritable> {
- // Reducer<Text, LongWritable, Text, LongWritable>.Context context
- public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
- System.out.println(key);
- System.out.println(values);
- int sum = 0;
- for (IntWritable val : values) {
- sum += val.get();
- }
- context.write(key, new IntWritable(sum));
- }
- }
- // 客户端代码,写完交给ResourceManager框架去执行
- public static void main(String[] args) throws Exception {
- Configuration conf = new Configuration();
- Job job = new Job(conf,"word count");
- // 打成jar执行
- job.setJarByClass(wordcount.class);
- // 数据在哪里?
- FileInputFormat.addInputPath(job, new Path(args[0]));
- // 使用哪个mapper处理输入的数据?
- job.setMapperClass(WordCountMap.class);
- // map输出的数据类型是什么?
- //job.setMapOutputKeyClass(Text.class);
- //job.setMapOutputValueClass(LongWritable.class);
- job.setCombinerClass(IntSumReducer.class);
- // 使用哪个reducer处理输入的数据
- job.setReducerClass(WordCountReduce.class);
- // reduce输出的数据类型是什么?
- job.setOutputKeyClass(Text.class);
- job.setOutputValueClass(IntWritable.class);
- // job.setInputFormatClass(TextInputFormat.class);
- // job.setOutputFormatClass(TextOutputFormat.class);
- // 数据输出到哪里?
- FileOutputFormat.setOutputPath(job, new Path(args[1]));
- // 交给yarn去执行,直到执行结束才退出本程序
- job.waitForCompletion(true);
- /*
- String[] otherArgs = new GenericOptionsParser(conf,args).getRemainingArgs();
- if(otherArgs.length<2){
- System.out.println("Usage:wordcount <in> [<in>...] <out>");
- System.exit(2);
- }
- for(int i=0;i<otherArgs.length-1;i++){
- FileInputFormat.addInputPath(job, new Path(otherArgs[i]));
- }
- System.exit(job.waitForCompletion(tr0ue)?0:1);
- */
- }
- }
将准备到的文档导入进去
目录结构如下:
运行mapreduce程序
OK,搞定收工!!!
Eclipse环境搭建并且运行wordcount程序的更多相关文章
- (三)配置Hadoop1.2.1+eclipse(Juno版)开发环境,并运行WordCount程序
配置Hadoop1.2.1+eclipse(Juno版)开发环境,并运行WordCount程序 一. 需求部分 在ubuntu上用Eclipse IDE进行hadoop相关的开发,需要在Eclip ...
- 021_在Eclipse Indigo中安装插件hadoop-eclipse-plugin-1.2.1.jar,直接运行wordcount程序
1.工具介绍 Eclipse Idigo.JDK1.7-32bit.hadoop1.2.1.hadoop-eclipse-plugin-1.2.1.jar(自己网上下载) 2.插件安装步骤 1)将ha ...
- 《从0到1学习Flink》—— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门
准备工作 1.安装查看 Java 的版本号,推荐使用 Java 8. 安装 Flink 2.在 Mac OS X 上安装 Flink 是非常方便的.推荐通过 homebrew 来安装. brew in ...
- OSGI企业应用开发(二)Eclipse中搭建Felix运行环境
上篇文章介绍了什么是OSGI以及使用OSGI构建应用的优点,接着介绍了两款常用的OSGI实现,分别为Apache Felix和Equinox,接下来开始介绍如何在Eclipse中使用Apache Fe ...
- scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...
- eclipse连hadoop2.x运行wordcount 转载
转载地址:http://my.oschina.net/cjun/blog/475576 一.新建java工程,并且导入hadoop相关jar包 此处可以直接创建mapreduce项目就可以,不用下面折 ...
- Java学习不走弯路教程(7.Eclipse环境搭建)
7.Eclipse环境搭建 在前几章,我们熟悉了DOS环境下编译和运行Java程序,对于大规模的程序编写,开发工具是必不可少的.Java的开发工具比较常用的是Eclipse.在接下来的教程中,我们将基 ...
- scala 入门Eclipse环境搭建
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/downloa ...
- Cesium入门2 - Cesium环境搭建及第一个示例程序
Cesium入门2 - Cesium环境搭建及第一个示例程序 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 验 ...
随机推荐
- centos7 端口3306无法连接问题
MySQL建用户的时候会指定一个host,默认是127.0.0.1/localhost,那么这个用户就只能本机访问,其它机器用这个用户帐号访问会提示没有权限,host改为%,表示允许所有机器访问. G ...
- Pyjwt ,python jwt ,jwt
pip install Pyjwt 不错的jwt 文章: https://www.cnblogs.com/wayneiscoming/p/7513487.html Sampleimport jwt i ...
- MongoDB、PyMongo数据操作
MongoDB 命令 C:\Program Files\MongoDB\Server\4.0\bin mongo 客户端 mongod 服务端 mongoexport 导出 普通格式,每条记录一行,整 ...
- 面试简单整理之zookeeper
157.zookeeper 是什么? ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现. 分布式应用程序可以基于 ZooKeeper 实现诸如数据 ...
- [Git] 拉开发分支的代码报错
Git拉开发分支的代码报错: fatal: The remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed ...
- IEC2017级_1-2班2次博客作业成绩说明
一.博客作业内容 2018上IEC计算机高级语言(C)作业 第2次作业 二.评分规则说明 1.程序调试题,要描述出调试所遇到问题及修改内容,并表述清楚程序功能.流程图不规范的会减1-2分: 2.知识点 ...
- cookie存储
cookie就是用来存储数据的 cookie先分装函数 这是用来存数据的函数 function setCookie(name,value,iDay){ if(iDay){ var oDate = ne ...
- RNQOJ 21 FBI数
如果字符串全是0输出B,全是1输出I,01混合输出F,如果字符串分解到只剩下一个字符的时候我们可以很简单的判断出来是B串还是I串,如果处在父节点的位置,这里运用递归,通过子节点的返回值来判断子节点是混 ...
- 对 JSON 数据进行序列化和反序列化
如何:对 JSON 数据进行序列化和反序列化 2017/03/30 作者 JSON(JavaScript 对象符号)是一种高效的数据编码格式,可用于在客户端浏览器和支持 AJAX 的 Web 服务之间 ...
- node-sass 不能正常安装解决办法
web前端在安装node包时,总是报错,究其原因是node-sass没有被正常安装. 根本原因是国内网络的原因. 最终的解决方法是通过淘宝的npm镜像安装node-sass 首先安装cnpm npm ...