文档章节

实战 windows7 下 eclipse 远程调试 linux hadoop

大数据之路
 大数据之路
发布于 2013/04/15 00:57
字数 1787
阅读 3.8W
收藏 147

恩,之所以有这篇博客,是因为最近又有童鞋咨询怎么在 windows 7 下用eclipse远程调试部署在linux下的hadoop,其实我自己不这么混搭的,既然有童鞋这么问了,那我就索性随着折腾一把了。

首先说明几点:

远程调试对于本地hadoop版本、远程hadoop版本、eclipse版本都有极为严格的兼容性要求,我所采用的版本如下:

(1)本地hadoop:0.20.203(如果客户端和服务端hadoop版本不匹配可能会有协议错误)

(2)远程hadoop:0.20.203(因为各个版本的ipc协议都有变化)

下载地址:http://archive.apache.org/dist/hadoop/core/hadoop-0.20.203.0/

(3)eclipse版本:indigo(这个也很重要,不匹配的话,可能eclipse压根就无法识别hadoop插件)

文件md5码以及下载地址:

 

9017a39354fa65375c6ee748963cf2ff  eclipse-jee-indigo-SR2-win32.zip

http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigosr2

 

(4)客户端操作系统:win7,远程操作系统:linux(ubuntu/centos等等,只要是linux均可)

 

上述搭配中如果有任意一项版本不匹配,均可能有异常发生,这都不在本文的讨论范畴,因此开始下文操作前,请务必核对你自己的版本。

第一步:先启动hadoop守护进程

具体参看:http://www.cnblogs.com/flyoung2008/archive/2011/11/29/2268302.html

第二步:在eclipse上安装hadoop插件

1.复制 hadoop安装目录/contrib/eclipse-plugin/hadoop-0.20.203.0-eclipse-plugin.jar 到 eclipse安装目录/plugins/ 下。 

2.重启eclipse,配置hadoop installation directory。 
如果安装插件成功,打开Window-->Preferens,你会发现Hadoop Map/Reduce选项,在这个选项里你需要配置Hadoop installation directory。配置完成后退出。

3.配置Map/Reduce Locations。 

在Window-->Show View中打开Map/Reduce Locations。 
在Map/Reduce Locations中新建一个Hadoop Location。在这个View中,右键-->New Hadoop Location。在弹出的对话框中你需要配置Location name,如Hadoop,还有Map/Reduce Master和DFS Master。这里面的Host、Port分别为你在mapred-site.xml、core-site.xml中配置的地址及端口。如:

Map/Reduce Master

192.168.1.101 9001

DFS Master

 

192.168.1.101 9000

配置完后退出。点击DFS Locations-->Hadoop如果能显示文件夹(2)说明配置正确,如果显示"拒绝连接",请检查你的配置。

如果这一步有问题,请看最后的注意事项(1)”。

第三步:新建项目。 
File-->New-->Other-->Map/Reduce Project 
项目名可以随便取,如WordCount。 
复制 hadoop安装目录/src/example/org/apache/hadoop/example/WordCount.java到刚才新建的项目下面。 或者参考:http://my.oschina.net/leejun2005/blog/83058
第四步:上传模拟数据文件夹。 
为了运行程序,我们需要一个输入的文件夹,和输出的文件夹。
在本地新建word.txt

 

java c++ python c
java c++ javascript 
helloworld hadoop
mapreduce java hadoop hbase

通过hadoop的命令在HDFS上创建/tmp/workcount目录,命令如下:bin/hadoop fs -mkdir /tmp/wordcount

通过copyFromLocal命令把本地的word.txt复制到HDFS上,命令如下:bin/hadoop fs -copyFromLocal /home/grid/word.txt  /tmp/wordcount/word.txt

第五步:运行项目

1.在新建的项目Hadoop,点击WordCount.java,右键-->Run As-->Run Configurations 
2.在弹出的Run Configurations对话框中,点Java Application,右键-->New,这时会新建一个application名为WordCount 
3.配置运行参数,点Arguments,在Program arguments中输入“你要传给程序的输入文件夹和你要求程序将计算结果保存的文件夹”,如:

 

hdfs://centos1:9000/tmp/wordcount/word.txt   hdfs://centos1:9000/tmp/wordcount/out

4.如果运行时报java.lang.OutOfMemoryError: Java heap space 配置VM arguments(在Program arguments下)

 

-Xms512m -Xmx1024m -XX:MaxPermSize=256m

关于jvm内存分配理解,请参考:http://my.oschina.net/leejun2005/blog/122963

5.点击Run,运行程序。 
点击Run,运行程序,过段时间将运行完成,等运行结束后,查看运行结果,使用命令: bin/hadoop fs -ls /tmp/wordcount/out查看例子的输出结果,发现有两个文件夹和一个文件,使用命令查看part-r-00000文件, bin/hadoop fs -cat /tmp/wordcount/out/part-r-00000可以查看运行结果。如果这一步有问题,请看最后的“注意事项(2)”。

截图如下:

 

注意事项:

(1)第2步eclipse可能会报无法连接的错:"Map/Reduce location status updater". org/codehaus/jackson/map/JsonMappingException

经过查询,是由于hadoop的eclipse 插件里面缺少了一些包

按照这篇文章的说明 修改包后 重新运行成功

http://hi.baidu.com/wangyucao1989/blog/item/279cef87c4b37c34c75cc315.html

关于这个eclipse插件的问题,我已经打包好了,请从如下地址下载:

http://vdisk.weibo.com/s/xEJGZ

(2)第5步,可能会报错:

12/04/24 15:32:44 ERROR security.UserGroupInformation: PriviledgedActionException as:Administrator cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.staging to 0700
    at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:682)
这是由于Windows下文件权限问题,在Linux下可以正常运行,不存在这样的问题。

参考:http://blog.csdn.net/keda8997110/article/details/8533633

解决方法是修改 F:\编程开发\hadoop\older\hadoop-0.20.203.0rc1\hadoop-0.20.203.0\src\core\org\apache\hadoop\fs\RawLocalFileSystem.java ,注释掉 checkReturnValue(有些粗暴,在Window下,可以不用检查)

private void checkReturnValue(boolean rv, Path p, FsPermission permission) 
  throws IOException {
    /*if (!rv) {
      throw new IOException("Failed to set permissions of path: " + p + " to " + 
                            String.format("%04o", permission.toShort()));
    }*/
  }

然后重新编译、打包 hadoop-core-0.20.203.0.jar ,再次运行即可成功。关于这个重新编译hadoop的方法我上面的压缩包里也有教程文档,为了方便起见,我把已经编译打包好的jar也上传了,你直接替换即可。http://vdisk.weibo.com/s/xEJGZ

ok,到此你现在应该可以在windows7下远程调试你的hadoop代码了,如果没有成功,请仔细核对各个步骤、各个配置项,Good Luck~

 

REF:

基于Eclipse的Hadoop应用开发环境配置

http://www.cnblogs.com/flyoung2008/archive/2011/12/09/2281400.html (本文参考此文)

http://blog.sina.com.cn/s/blog_62186b4601012acs.html

cygwin中安装hadoop+eclipse编译源码并调试

http://dl.iteye.com/topics/download/04aca317-2d9f-3a95-90bf-ec569eb38bbc

windows上编译eclipse-plugin for hadoop-0.20.2-cdh3u3

http://superlxw1234.iteye.com/blog/1749038

关于eclipse无法连接报错:

"Map/Reduce location status updater". org/codehaus/jackson/map/JsonMappingException

经过查询,是由于hadoop的eclipse 插件里面缺少了包

按照这篇文章的说明 修改包后 重新运行成功

http://hi.baidu.com/wangyucao1989/blog/item/279cef87c4b37c34c75cc315.html

如果已经安装了官方插件,发现没法连接的,需要先从eclipse中删除这个jar包.然后重启eclipse,(防止缓存)

然后再放入新jar包, 再重启eclipse.

windows下用eclipse连接linux中的hadoop,并执行mr

http://superlxw1234.iteye.com/blog/1583164

注意:myeclipse有2点需要注意:

 

cat eclipse.desktop # chmod 777 注意权限
[Desktop Entry]
Encoding=UTF-8
Name=Eclipse
Comment=Eclipse IDE
Exec=/home/june/soft/eclipse/eclipse
Icon=/home/june/soft/eclipse/icon.xpm
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;

(1)Icon=/home/june/download/myeclipse-8.4.200-linux-gtk-x86/icon.xpm  这里不能有空格、双引号等其它符号,空格转义即可。

(2)hadoop的jar包直接丢到 /home/june/Genuitec/MyEclipse 8.5 M2/dropins 即可,不需要找什么 plugins 目录。

Hadoop学习笔记(九):如何在windows上使用eclipse远程连接hadoop进行程序开发

http://www.cnblogs.com/beanmoon/archive/2013/01/05/2845579.html

Hadoop作业提交多种方案具体流程详解 

http://weixiaolu.iteye.com/blog/1402919

Hadoop集群(第7期)_Eclipse开发环境设置

http://www.cnblogs.com/xia520pi/archive/2012/05/20/2510723.html

© 著作权归作者所有

大数据之路
粉丝 1626
博文 514
码字总数 330865
作品 0
武汉
架构师
私信 提问
加载中

评论(13)

暂不存在
暂不存在
请问2.6连接linux集群出现这个错怎么办org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
大数据之路
大数据之路 博主

引用来自“theks”的评论

2.重启eclipse,配置hadoop installation directory。
如果安装插件成功,打开Window-->Preferens,你会发现Hadoop Map/Reduce选项,在这个选项里你需要配置Hadoop installation directory。配置完成后退出。

这里没看明白,本机是win7啊,怎么装的hadoop?

解压二进制压缩包即可。。。
t
theks
2.重启eclipse,配置hadoop installation directory。
如果安装插件成功,打开Window-->Preferens,你会发现Hadoop Map/Reduce选项,在这个选项里你需要配置Hadoop installation directory。配置完成后退出。

这里没看明白,本机是win7啊,怎么装的hadoop?
苏斌
苏斌

引用来自“xrzs”的评论

引用来自“苏斌”的评论

这个帖子没有提debug的事啊,主要就是说用eclipse的hadoop plugin运行一个hadoop任务吧?请楼主明察啊。

你想怎么debug?设断点、system.out.println 算不算debug?

设断点,方便查看对象状态啊,System.out.print不科学啊。我查到,用java的远程调试可以搞定这个事情。
大数据之路
大数据之路 博主

引用来自“苏斌”的评论

这个帖子没有提debug的事啊,主要就是说用eclipse的hadoop plugin运行一个hadoop任务吧?请楼主明察啊。

你想怎么debug?设断点、system.out.println 算不算debug?
苏斌
苏斌
这个帖子没有提debug的事啊,主要就是说用eclipse的hadoop plugin运行一个hadoop任务吧?请楼主明察啊。
一贫如洗
一贫如洗
等很久了!
杨伟荣
杨伟荣
mark
ChanMelo
ChanMelo
技术党
华兹格
华兹格
传参这部分收益很大,谢谢楼主分享,正用上了!
关于 hadoop reduce 阶段遍历 Iterable 的 2 个“坑”

之前有童鞋问到了这样一个问题:为什么我在 reduce 阶段遍历了一次 Iterable 之后,再次遍历的时候,数据都没了呢?可能有童鞋想当然的回答:Iterable 只能单向遍历一次,就这样简单的原因。...

大数据之路
2013/05/18
1.1W
3
零基础学习hadoop到上手工作线路指导(编程篇)

问题导读: 1.hadoop编程需要哪些基础? 2.hadoop编程需要注意哪些问题? 3.如何创建mapreduce程序及其包含几部分? 4.如何远程连接eclipse,可能会遇到什么问题? 5.如何编译hadoop源码? ...

一枚Sir
2014/08/07
903
0
Eclispe远程调试sqoop

利用eclipse远程调试功能,实现sqoop 本地环境集成: 利用cygwin部署 0、将sqoop-1.4.2放在/home/Administrator/hadoop 1、sqoop中设置HOMEHOME: 修改SQOOPHOME/bin/configure-sqoop :HAD...

超人学院
2015/06/03
404
0
Eclipse连接Hadoop分析的三种方式

Hadoop一般都部署在linux平台上,想让Hadoop执行我们写好的程序,首先需要在本地写好程序打包,然后上传到liunx,最后通过指定命令执行打包好的程序;一次两次还可以,如果进行频繁的调试是很...

ksfzhaohui
2016/10/27
2.6K
0
hadoop(05)、使用Eclipse连接远程Hadoop集群

在前面的文中我们分别搭建了单机和集群的Hadoop环境,今天我们将实践使用Eclispe开发工具安装 hadoop的开发插件,并且使用hadoop插件连接Hadoop远程集群,文中有什么不对的地方,请大家指出来...

MaxBill
2017/12/22
570
0

没有更多内容

加载失败,请刷新页面

加载更多

如何获得元素的渲染高度?

如何获得元素的渲染高度? 假设您有一个<div>元素,其中包含一些内容。 内部的内容将扩展<div>的高度。 当您没有明确设置高度时,如何获得“渲染的”高度。 显然,我尝试过: var h = docume...

技术盛宴
36分钟前
40
0
zookeeper宕机与dubbo直连

加入zookeeper宕机后,一段时间内consumer依然能够获取provider的服务,实际上使用了本地缓存进行通讯,这也是dubbo健壮性的一种体验。 dubbo健壮性的表现: 1.监控中心宕机,不影响使用,只...

七宝1
37分钟前
44
0
一分钟了解【X-Frame-Options设置】

含义 通过设置X-Frame-Options来控制网页能否被frame或iframe嵌入。 目的 防止出现 点击劫持 :攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在网页上进行操作,此时用户将在...

crazymus
43分钟前
48
0
如何在JDBC中获取插入ID?

我想使用Java中的JDBC在数据库(在我的情况下为Microsoft SQL Server)中INSERT一条记录。 同时,我想获取插入ID。 如何使用JDBC API实现此目的? #1楼 我正在使用SQLServer 2008,但是我有一...

javail
51分钟前
58
0
【小程序_01】小程序概述

一、小程序简介 1. 什么是小程序 小程序是一种不需要下载、安装即可使用的应用,它实现了触手可及的梦想,用户扫一扫或者搜一下就能打开应用,也实现了用完即走的理念,用户不用安装太多应用...

Demo_Null
58分钟前
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部