虚拟机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实现方式,在问题解决之前,希望有遇到过类似问题的先辈/专家们
能够帮忙解惑,不甚感激。