Hadoop——跑wordcount demo

  wordcount有自带的jar,也可以自己写了上传

一、跑自带的example

 1.创建输入文件

  touch /usr/hadoop/tmp/words

   然后vim修改内容,我写了两行

   hello world

   hello zzm 

2.在 HDFS 上创建目录,并上传到hdfs分布式中

(1)[hadoop@Mmaster hadoop]$ bin/hadoop fs -mkdir /wordcount_input

  本来以为很简单一件事,没想到虚拟机网络这边又出了问题

  执行在HDFS里生成子目录命令,报 failed on socket exception network is unreachable错误,那肯定是网络问题

  因为是之前配置好的192.168.138.128和192.168.138.130不生效了,用service network restart之后,有自动分配了192.168.138.193和192.168.138.192两个IP,只好再去修改/etc/hosts里的映射关系,成功了,但是还是报connection refuse错误

突然发现我还没有启动Hadoop进程,赶紧./start-all.sh 然后查看jps,再执行上面的命令,成功!

(2)put 然后可以ls看一下

(3)跑jar程序

这条指令指定了jar的目录,类入口,以及输入输出文件目录

用法:hadoop jar <jar> [mainClass] args…

然后输出一下结果,注意output后面必须接/*

二、跑自己上传的jar

1.问题是Hadoop的一些用法在eclipse中无法编译成功,会报错

应该是库的问题,还没有导入Hadoop的包,参考这篇博客建立了user library,再项目右键build path-configure,导入这些library,然后源代码中就有提示import了。比较坑的是一般他会提示可以import好几个,但是只有一个是对的,我根据推理加试错终于试对啦。

但是在重新执行jar命令时又遇到了一个class not found问题

因为我是将一个工程打包成jar,所以指定main函数入口的java程序时,也需指定包的路径,如下就可以成功了

2.补充:尝试在eclipse中搭建Hadoop环境

参考这篇博客进行配置,不过版本不一样,我自己在githup上找的对应plugin

这个放入指定目录下后,在Windows也需要解压Hadoop文件夹,然后配置环境变量

这是与原文中配置不同的地方,贴出来。其中,Location name自定义一个名字就行,配置Map/Reduce Master和DFS Mastrer,Host和Port配置成与core-site.xml的设置一致即可(Host为hadoop节点的hostname,DFS Mastrer下的port为HDFS端口号,User name为安装Hadoop节点用户名称,如下图)

è¿éåå¾çæè¿°

但是报了个错误,我怀疑可能是上面设置的HDFS端口号的问题,最后还是没有解决。

猜你喜欢

转载自blog.csdn.net/zhiman_zhong/article/details/84333609