在Windows下用eclipse写MapReduce程序

来源:互联网 发布:淘宝二手闲鱼网站 编辑:程序博客网 时间:2024/05/16 11:43

DFS Location

我想使用hadoop-eclipse插件来处理DFS和写MR,于是今天就配置了一下。
基本上是按照“文献1”进行的,但是出现了这种问题(图是从别处扒来的,当时没截图):
问题

如果将Host设为一个不存在的地址,或者将端口改成一个其他的,会在稍长一段时间才提示不能连接,而现在的情况是在很快的时间里就提示了这个无法连接的消息。基本可以判断,是服务器拒绝服务了。

根据“文献2”的提示,在Windows上telnet服务器的9000端口,无法连接,然而,在服务器上telnet localhost 9000却可以连接,将localhost换成实际IP地址又无法连接了。基本可以判定是9000端口只对本地提供服务,用netstat -anp | grep 9000查看,果然如此:
netstat

了解原因就好解决了。

打开/etc/hosts,这样改动:
hosts

重启hadoop,就OK了。

参考文章
Hadoop集群(第7期)_Eclipse开发环境设置
http://www.cnblogs.com/xia520pi/archive/2012/05/20/2510723.html
使用eclipse连接hadoop失败情况
http://blog.csdn.net/yunlong34574/article/details/21331927

其他诸多问题

参考这些文章,最终定可以解决,主要参考第一篇文章
1. 解决Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z 等一系列问题
http://www.itnose.net/detail/6177732.html
2. win7 安装hadoop2.2.0
http://blog.csdn.net/jiutianhe/article/details/17709717
3. org.apache.hadoop.mapred.InvalidInputException: Input path does not exist问题
http://blog.csdn.net/duguduchong/article/details/8712733
log4j的警告问题

log4j:WARN No appenders could be found for logger (org.apache.hadoop.conf.Configuration.deprecation).log4j:WARN Please initialize the log4j system properly.log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

并且不显示日志信息。
解决方法
将hadoop-2.2.0\etc\hadoop\log4j.properties拷贝到java项目的bin目录下。
参考《关于eclipse中运行mapreduce不是在hadoop集群环境运行而是在本地运行的问题》。


我发现这样运行mr程序,比在shell里运行快很多啊!是直接用API的缘故吗?


补充

它为什么那么快?!因为它根本就没有提交到hadoop,MapReduce是在本地运行的,不过数据输入输出是HDFS而已!
根据《Hadoop学习三十二:Win7下无法提交MapReduce Job到集群环境》里提到的方法修改。
果然出现了no job control的问题。
从下面的文章中得知,解决这个问题需要修改源码什么的,算了,果然是在Windows上各种问题,本地调试也就罢了。

Eclipse调用Hadoop2.2运行MR程序
http://www.linuxidc.com/Linux/2014-04/99858.htm
hadoop2:no job control一般解决方法
http://blog.csdn.net/lanwenbing/article/details/33728129

0 0
原创粉丝点击