虚拟机Linux socket 通信问题

舒沉 2012-07-09 11:37:20
说的比较罗嗦,只是为了描述清楚症状,希望看官们能够仔细阅读,以期帮忙解惑,不甚感激!

如题,最近在做Hadoop实验。根据错误提示发现是datanode通过ipc连接不上namenode。最后查看hadoop源码,发现是socket通信问题。一直解决不了,故请求大牛们帮助。

实验环境:
宿主机均是i7处理器(8核/16G)
虚拟机(客户机)均是VmWare workstation 8 中打开

宿主机1:
OS:win7
IP 192.168.0.47
宿主机1上虚拟机(fedora15):
datanode007:IP 192.168.0.207(bridge)
datanode008:IP 192.168.0.208(bridge)
datanode009:IP 192.168.0.209(bridge)
datanode010:IP 192.168.0.210(bridge)
datanode011:IP 192.168.0.211(bridge)
datanode012:IP 192.168.0.212(bridge)

宿主机2:
OS:win7
IP 192.168.0.48
宿主机2上虚拟机(fedora15):
namenode:IP 192.168.0.200(bridge)
datanode001:IP 192.168.0.201(bridge)
datanode002:IP 192.168.0.202(bridge)
datanode003:IP 192.168.0.203(bridge)

宿主机3:
OS:win7
IP 192.168.0.49
宿主机3上虚拟机(fedora15):
datanode004:IP 192.168.0.204(bridge)
datanode005:IP 192.168.0.205(bridge)
datanode006:IP 192.168.0.206(bridge)

症状:
1,宿主机1~3及namenode/datanode001~012两两之间都能ping通,
2,namenode/datanode001~012两两之间都能通过ssh远程登入。
3,在宿主机1上的客户机datanode007~012之间socket通信正常,通过socket程序
(sever.c/client.c)测试验证过.
4,在宿主机2上的客户机namenode/datanode001~003之间socket通信正常,通过socket程序
(sever.c/client.c)测试验证过.hadoop启动成功信息也正常,livenodes为4(namenode也
设置为slave,如果不设置,则为3)
5,在宿主机3上的客户机datanode004~005之间socket通信正常,通过socket程序
(sever.c/client.c)测试验证过.
6,在宿主机1上的客户机datanode007~012任一与宿主机2上的客户机namenode/datanode001~003
任一之间socket通信异常,通过socket程序(sever.c/client.c)测试验证失败.

测试条件客户机防火墙关闭,宿主机/客户机都设置不代理联网,结果均相同。
实在想不出还有什么问题了。

提示:
1,各个客户机ping自己耗时0.016ms左右(直接)
2,同一宿主机内客户机两两互ping耗时0.17ms左右(直接)
3,跨宿主机之间客户机两两互ping耗时1.8ms左右(报文通过宿主机IP中转)
4,个人觉得VmWare workstation 8在bridge联网模式下并非直接联网,通过禁用
宿主机本地网卡验证过。如,禁止宿主机2本地网卡后,namenode/datanode001~003
之间两两还是能够互ping,但是显然不能ping同宿主机2,且也不能ping通其它宿主机
及任一其它宿主机上的客户机。

目前下载了VmWare workstation for Linux 8.04,查看里面bridge实现的源码,希望
能够找到其bridge实现方式,在问题解决之前,希望有遇到过类似问题的先辈/专家们
能够帮忙解惑,不甚感激。


...全文
373 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
舒沉 2012-07-10
  • 打赏
  • 举报
回复
还有任意两个客户机移到同一宿主机socket通信就正常,跨宿主机socket通信就异常。
没人遇到过类似的问题么?即便是类似的也可以留言,互相交流一下啊
舒沉 2012-07-10
  • 打赏
  • 举报
回复
hostname已经改成namenode/datanode001~012了。
/etc/hosts 内容,localhost注释不注释都试过了
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.200 namenode
192.168.0.201 datanode001
192.168.0.202 datanode002
192.168.0.203 datanode003
192.168.0.204 datanode004
192.168.0.205 datanode005
192.168.0.206 datanode006
192.168.0.207 datanode007
192.168.0.208 datanode008
192.168.0.209 datanode009
192.168.0.210 datanode010
192.168.0.211 datanode011
192.168.0.212 datanode012
舒沉 2012-07-09
  • 打赏
  • 举报
回复
datanode001~datanode012,除了IP地址,hostname不同以外,其它环境全部相同

4,451

社区成员

发帖
与我相关
我的任务
社区描述
云计算 云安全相关讨论
社区管理员
  • 云安全社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧