关于hadoop的用处什么我就不说了,在这里记录下在eclipse上第一次跑hadoop遇到的问题吧~

hadoop的安装我就不说啦,网上教程一大堆~我直接用的公司的Linux上的hadoop。

eclipse用的是mars,JDK1.8,win7,hadoop是公司的Linux上的hadoop 1.2.1,关联的JDK是1.7.

首先下载hadoop关联eclipse的插件hadoop-eclipse-plugin-1.2.1。最好下载相同版本的,不然容易出问题(我就是典型)。把插件放到eclipse安装目录的plugins下(hadoop-eclipse-plugin-2.2.0放到dropins目录下是可以的,但是1.2.1是不行的),重启eclipse,在eclipse的页面上出现这个东东~

          

接下来配置hadoop,点击图上的大象,在eclipse下面出现这个。点击右边蓝色小象,进入hadoop的配置页面。

     

关于配置的详细信息在图上都标注出来了。Linux的命令这在这里就不说了,连Linux推荐用secureCRT。 

点击finish,等待完成。完成后,在eclipse的左边,project explorer下面会出现DFS location。成功的话会把hadoop的文件加载出来,相当于hadoop fs -ls这个命令出现的结果。这里如果出现连接失败,检查一下是不是地址或端口写错了,可以在cmd中telnet端口看是不是可以连通,telnet 192.168.0.201 49000。如果出现提示“你的电脑一个软件阻止访问”,那么可能就是hadoop-eclipse的插件版本不对了~

都OK得那么就可以写helloworld了。

package com.qldhlbs.hadoop.helloworld;

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; public class WordCount { public static class WordCountMap extends
Mapper<LongWritable, Text, Text, IntWritable> { private final IntWritable one = new IntWritable(1);
private Text word = new Text(); public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
StringTokenizer token = new StringTokenizer(line);
while (token.hasMoreTokens()) {
word.set(token.nextToken());
context.write(word, one);
}
}
} public static class WordCountReduce extends
Reducer<Text, IntWritable, Text, IntWritable> { 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));
}
} public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = new Job(conf);
job.setJarByClass(WordCount.class);
job.setJobName("wordcount"); job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class); job.setMapperClass(WordCountMap.class);
job.setReducerClass(WordCountReduce.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);
}
}

主意要导入的包。其中hadoop包和Jackson包在下载的hadoop文件里面都有,几个commons包也要导入,不然会报错,其中commons-cli-1.3.1.jar是一个处理命令的工具。比如main方法输入的string[]需要解析。你可以预先定义好参数的规则,然后就可以调用CLI来解析。上面的代码不到这个包会报错。

                      

接下来在hadoop中创建文件。命令hadoop fs -mkdir /user/qldhlbs/input创建文件夹。这些hadoop命令和Linux的差不多~后面的/user/qldhlbs/input是创建的文件夹目录。在eclipse上右键DFS location刷新或者重连,就会看到在user目录下出现qldhlbs/input目录。把要count的文件放到input中去,可以用简单的方法,就是右键创建的input,选择upload file to DFS。不出意外的话会提醒没有权限,那么就赋予权限。命令 hadoop fs -chmod 777 /user/qldhlbs/input。其中777是读写执行权限(因为它对应的二进制是4,2,1),/user/qldhlbs/input是给予权限的目录。在eclipse刷新一下就可以上传文件了~上传成功后再input目录下可以看到你上传的文件。

接下来右键run configurations,配置参数。hdfs://192.168.0.201:49000/user/qldhlbs/input   hdfs://192.168.0.201:49000/user/qldhlbs/output,它会自动帮你建output目录,如果自己创建会报错,文件已存在。点击apply,run。参数地址不要写错了,原来我写错了找了半天错误没找到~zzZ。这里会提示qldhlbs这个目录没有权限,和前面一样赋予全县就行了。如果用1.2.1这个版本不出意外的话还会提示一个tmp/hadoop-Administrator/xxxx没有权限的错误,改一下hadoop-core-1.2.1.jar文件的源码就行了,反编译一下这个jar,在fs包下的fileUtil类中的checkReturnValue方法,把里面的内容注释掉就行了。

          

把改了的文件重新打包成jar放到工程中,跑一下就可以了。运行成功会在output下面出现两个文件。

到这儿hadoop的helloworld就完成了~当初做的时候没仔细看,出了一些不该出的小错误,浪费很多时间~

在eclipse上跑hadoop的helloworld的更多相关文章

  1. linux下在eclipse上运行hadoop自带例子wordcount

    启动eclipse:打开windows->open perspective->other->map/reduce 可以看到map/reduce开发视图.设置Hadoop locati ...

  2. mac上eclipse上配置hadoop

    在mac上安装了eclipse之后,配置hadoop其实跟在linux上配置差不多,只是mac上得eclipse和界面和linux上得有点不同. 一:安装eclipse eclipse得安装比较简单, ...

  3. 关于在Eclipse上运行Hadoop程序的日志输出问题

    在安装由Eclipse-Hadoop-Plugin的Eclipse中, 可以直接运行Hadoop的MapReduce程序, 但是如果什么都不配置的话你发现Eclipse控制台没有任何日志输出, 这个问 ...

  4. win系统下的eclipse连接和使用linux上的hadoop集群

    准备工作 先在win系统的hosts文件中加入下面内容 10.61.6.164master     //hadoop集群的master节点 一.首先在eclipse上安装hadoop插件 下载hado ...

  5. 在 Windows 上安装 Hadoop 教程(转)

    在 Windows 上安装 Hadoop 教程 一见 2010.1.6 www.hadoopor.com/hadoopor@foxmail.com 1. 安装 JDK 不建议只安装 JRE,而是建议直 ...

  6. 让python在hadoop上跑起来

    duang~好久没有更新博客啦,原因很简单,实习啦-好吧,我过来这边上班表示觉得自己简直弱爆了.第一周,配置环境:第二周,将数据可视化,包括学习了excel2013的一些高大上的技能,例如数据透视表和 ...

  7. 使用Windows上Eclipse远程调试Linux上的Hadoop

    一.设置Eclipse运行用户     如果以与Hadoop运行用户名(比如grid)不同的用户运行Eclipse,则无法对Hadoop运行用户所属的文件进行管理,运行Map/Reduce程序也会报& ...

  8. Windows用Eclipse来开发hadoop的WordCount的helloworld

    [学习笔记] 2.Win7用Eclipse来开发hadoop的WordCount的helloworld网上下载hadoop-eclipse-plugin-2.7.4.jar,将该jar包拷贝到Ecli ...

  9. Hadoop3 在eclipse中访问hadoop并运行WordCount实例

    前言:       毕业两年了,之前的工作一直没有接触过大数据的东西,对hadoop等比较陌生,所以最近开始学习了.对于我这样第一次学的人,过程还是充满了很多疑惑和不解的,不过我采取的策略是还是先让环 ...

随机推荐

  1. 如何解决google ping不通的问题。

    1. 用http://ping.chinaz.com/ ping google的域名. 2. 会ping出很多ip,但是chinaz用的是测试网点去ping的,不是你本地宽带, 所以把ping出ip拷 ...

  2. NeoKylin5.6下安装部署达梦(DM7)数据库

    1.准备操作系统 1.1 系统登录界面 1.2 操作系统版本信息 [root@jdbh ~]# uname -ra Linux jdbh -.el5xen # SMP Fri Jul :: EDT x ...

  3. bzoj3083 遥远的国度 && bzoj3626 LCA (树链剖分)

    今早刷了两道树剖的题目,用时两小时十五分钟= = 树剖的题目代码量普遍120+ 其实打熟练之后是很容易调的,不熟练的话代码量大可能会因为某些小细节调很久 3083:裸树剖+"换根" ...

  4. webrtc初识

    最近由于项目的需求,开始接触了webrtc这个东西.没想到这东西的门槛还是蛮高的,接下来分享一下我所踩过的坑,希望对以后初次接触这个东西的人有所帮助. webrtc官网 第一步当然是看官方主页了(ww ...

  5. MySQL运行状态show status详解

    状态名 作用域 详细解释 Aborted_clients Global 由于客户端没有正确关闭连接导致客户端终止而中断的连接数 Aborted_connects Global 试图连接到MySQL服务 ...

  6. .NET .ashx 文件 用Session 是需要注意的问题

    .ashx 文件,默认不可使用 Session ,需要使用Session 时, 需要引用 接口 IRequiresSessionState 例如:  public class AddHouseInfo ...

  7. 在命令行下使用perl

    http://blog.sina.com.cn/s/blog_4af3f0d20100g9oz.html aaa@domain.com  2aaa@domain.com 111bbb@home.com ...

  8. 弱网测试IOS

    IOS测弱网非常方便,在设置-开发者-NETWORK LINK CONDITIONER的Status 进入后可以看到IOS自带了100%LOSS.3G.WiFi等常见场景 可以点击图标i进行查看或编辑 ...

  9. java.util.ConcurrentModificationException --map

    key:3-key key:/v1.02-key Exception in thread "main" java.util.ConcurrentModificationExcept ...

  10. IIS 7.5 + PHP-5.6.3 + mysql-5.6.21.1

    禅道项目管理软件源码下载:http://sourceforge.net/projects/zentao/files/6.3/ZenTaoPMS.6.3.stable.zip/download Stp1 ...