about云开发

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 78007|回复: 16

[总结型] Win7中使用Eclipse连接虚拟机中的Ubuntu中的Hadoop2.4经验总结

[复制链接]
发表于 2014-5-20 02:06:44 | 显示全部楼层 |阅读模式
本帖最后由 nettman 于 2014-7-4 16:53 编辑
问题导读:
连接的过程大致差不多,这里只是说一下Win7中使用Eclipse连接虚拟机中的Ubuntu中的Hadoop2.4过程,及遇到的一些问题
1.log4j文件的作用是什么?
2.hadoop.dll,winutils.exe的作用是什么?





昨天下午继续eclipse与Hadoop间的开发测试,很不顺利,虚拟机中的ip果然又变了,设置成手动的后虚拟机中的就上不了网了,检查了各种参数也没有办法,上不了就上不了吧,能别老变ip就行了

在win7环境下,使用我eclipse4.3.2加上我前天制作的hadoop2.4的插件进行测试,报异常
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
网上有相关的介绍,需要下载hadoop.dll,winutils.exe(
下载地址,若地址不成功
移步到:
hadoop家族、strom、spark、Linux、flume等jar包、安装包汇总下载(持续更新)






)把这两个文件放到win下你hadoop目录下的bin文件夹中(网上有介绍说直接替换现有bin,我的还是会出现这个问题,可能是版本问题吧,毕竟我用的是2.4,上边这两个文件是属于2.2版本的)
放好后,重新运行程序(我使用的Run Application),还是报上边的错,找到源码,把源码放到我的项目里进行debug,找到第571行,改为直接return true;
再次重新运行程序,成功,上张图
14051109358161.jpg

装好插件后显示的你配置的hdfs的目录,比在Ubuntu中方便一点,可以新增、删除、查看文件
上边提的那个错误,我直接修改的这个类

这个要注意,如果你不放log4j的配置文件,你会错过很多有用的报错信息,我刚开始就是没放这个文件,浪费了至少5,6个小时走弯路
将输入和输出文件路径在文件中定义好,这里需要说的是如果你的输出文件夹已经存在,再次运行的时候会报错的
运行信息,成功后可以在输出文件夹中的相应文件查看结果
调试过程中,几度崩溃,就是因为没有在工程里添加log4j,最后看到曙光是因为在ubuntu中的eclipse调试成功了(这个eclipse插件我用的是网上下载的2.2的插件)

win7下,我没有装cygwin,用的是我自己编译的2.4的eclipse插件,从网上下了那个dll和exe直接放到hadoop的bin目录下,eclipse中的hadoop也是配置的hadoop根目录,╮(╯▽╰)╭,网上的资料顶多算参考




406

主题

136

听众

124

收听

实习版主

Rank: 7Rank: 7Rank: 7

积分
5259
发表于 2014-6-14 12:40:21 | 显示全部楼层
继续补充一些经历:
一早进入虚拟机启动Hadoop,发生异常,重新格式化一下恢复正常,原因待查(格式化:在hadoop目录下执行bin/hdfs namenode -format)




一早进入虚拟机启动Hadoop,发生异常,重新格式化一下恢复正常,原因待查(格式化:在hadoop目录下执行bin/hdfs namenode -format)
  1. java.net.ConnectException:Call From chenph-ubuntu/127.0.1.1 to localhost:9000 failed on connection
复制代码

  • 试试昨天制作的成果——eclipse插件,按照网上的例子进行配置,失败,现象就是无法连接到虚拟机中的Hadoop,于是试验了如下情况
  • 查看虚拟机中的ip,输入ifconfig,得到192.168.203.136,可以ping通win7的ip192.168.101.120
  • 在win7中无法ping到192.168.203.136,原因是我将虚拟机创建的一个网络适配器禁用了,启用后通过在win7运行ipconfig -all可以看到一个192.168.203.1的ip,这个就是win7和ubuntu俩系统的网段的ip,这样就可以互相ping通了
  • 可是eclipse中还是无法远程连接到hadoop,继续想办法,修改win7中的hosts文件,发现我的hosts文件在系统中没有,后来找到了(没有隐藏,而是设置成了系统保护,去掉保护就行了),增加一条对应的信息192.168.203.136 localhost
  • 在eclipse中还是不行,这时候去ubuntu再次执行ipconfig,ip竟然变成了192.168.203.137,我眼花了???
  • 把配置的ip统一改成192.168.203.137,再次试验,依然不行
  • 这时候我把矛头指向了hadoop的配置,将所有配置localhost的地方统一改成了机器名,重新启动服务后,依然不行
  • 因为ip自己会变的问题(可能是dhcp自动分配的问题吧,回头设置成固定的试试),所以上一步我用的机器名,这次我统一改成了ip
  • 成了,一上午没白忙活




欢迎加入about云群425860289432264021 ,云计算爱好者群,关注about云腾讯认证空间

0

主题

2

听众

0

收听

中级会员

Rank: 3Rank: 3

积分
206
发表于 2014-7-15 16:02:30 | 显示全部楼层
首先文章不错,但作为新手,我还是有些疑问,如下:

1、原文中说“把这两个文件放到win下你hadoop目录下的bin文件夹中”,题目中说是win7下的eclipse调用虚拟机中的hadoop,那么如果有文件替换应该是替换虚拟机里的,还是说namenode放在win7中,datanode放在虚拟机中(我的win7和虚拟机ip在同一个段)?还是其他呢?


2、对于win7中调虚拟机中hadoop的结构,插件中的map/reduce的 hadoop installation dir 应该怎么填写呢?

以上还望楼主不吝赐教,谢谢
 楼主| 发表于 2014-7-15 16:29:40 | 显示全部楼层
gwzydd 发表于 2014-7-15 16:02
首先文章不错,但作为新手,我还是有些疑问,如下:

1、原文中说“把这两个文件放到win下你hadoop目录下 ...
1.(1)把这两个文件放到win下你hadoop目录下的bin文件夹中,这个是指你的本地环境,也就是windows下面你需要有hadoop的安装包。这个安装包与你虚拟机的安装版本必须一致。
(2)namenode、datanode都是在虚拟机中的。

2. hadoop installation dir 填写的是你本地安装包的路径。



更多内容参考:
新手指导:Windows上使用Eclipse远程连接Hadoop进行程序开发


hadoop2.2 eclipse链接hdfs(hadoop)


0

主题

2

听众

0

收听

中级会员

Rank: 3Rank: 3

积分
206
发表于 2014-7-15 18:04:05 | 显示全部楼层
很及时的2篇文章,解决了我的疑惑,谢谢

0

主题

4

听众

0

收听

中级会员

Rank: 3Rank: 3

积分
605
发表于 2014-7-15 20:26:38 | 显示全部楼层

很及时的2篇文章,解决了我的疑惑,谢谢

6

主题

2

听众

0

收听

中级会员

Rank: 3Rank: 3

积分
356
发表于 2014-9-2 22:12:00 | 显示全部楼层
你好,“放好后,重新运行程序(我使用的Run Application),还是报上边的错,找到源码,把源码放到我的项目里进行debug,找到第571行,改为直接return true;”,你说的这个我也遇到了,我想问一下,你是具体怎么改的,源码是-src吗?能详细说一下吗
 楼主| 发表于 2014-9-2 23:10:03 | 显示全部楼层
梦回三国 发表于 2014-9-2 22:12
你好,“放好后,重新运行程序(我使用的Run Application),还是报上边的错,找到源码,把源码放到我的项 ...
使用Run Application的话,用插件反而是累赘。
有的插件跟环境有关系。
可以不使用插件。
参考:
hadoop开发方式总结及操作指导


6

主题

2

听众

0

收听

中级会员

Rank: 3Rank: 3

积分
356
发表于 2014-9-3 21:18:01 | 显示全部楼层
pig2 发表于 2014-9-2 23:10
使用Run Application的话,用插件反而是累赘。
有的插件跟环境有关系。
可以不使用插件。

好的,真是太感谢了
 楼主| 发表于 2014-10-13 14:44:51 | 显示全部楼层
大家尽量回帖,不要私信,让更多人学到知识

斑竹,我用win 2003 64bit下的Eclipse远程调试hadoop 2.4.1的wordcount例子,job总是失败的,报:/bin/bash:line 0:fg:no job control。请问是在哪里出了问题?
我看过hadoop 2.2的patch在2.4都修复掉了,使用run on hadoop 和run as java application都报同样的错误,在服务端集群上看到了相关的job。但是把word count打成jar包后在集群里面是可以正常执行的,就是远程调试不行。



回答:


插件跟版本一定匹配,最好自己编译,这样插件才能放心使用。有时候插件是个累赘,可以看看
hadoop开发方式总结及操作指导
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /3 下一条

QQ|小黑屋|about云开发-学问论坛|社区 ( 京ICP备12023829号

GMT+8, 2019-6-18 02:54 , Processed in 0.580001 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2 Licensed

快速回复 返回顶部 返回列表