hadoop,/etc/hosts文件如何影响datanode和namenode之间的连接?

xhv8bpkk  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(677)

我现在正在建立一个hadoop集群(4台机器,包括1台运行namenode和jobtracker的master,3台运行datanode和tasktraker的slave) sudo netsat -ntlp ,结果是:

tcp        0      0 0.0.0.0:52193           0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:39267           0.0.0.0:*               LISTEN      7284/rpc.mountd 
tcp        0      0 0.0.0.0:33219           0.0.0.0:*               LISTEN      7284/rpc.mountd 
tcp        0      0 0.0.0.0:41000           0.0.0.0:*               LISTEN      1539/mongos     
tcp6       0      0 :::50030                :::*                    LISTEN      604/java        
tcp6       0      0 :::57134                :::*                    LISTEN      32646/java      
tcp6       0      0 :::111                  :::*                    LISTEN      13786/rpcbind   
tcp6       0      0 :::57428                :::*                    LISTEN      -               
tcp6       0      0 :::57173                :::*                    LISTEN      7284/rpc.mountd 
tcp6       0      0 :::50070                :::*                    LISTEN      32646/java      
tcp6       0      0 :::5910                 :::*                    LISTEN      2452/Xvnc       
tcp6       0      0 :::22                   :::*                    LISTEN      32473/sshd      
tcp6       0      0 :::50744                :::*                    LISTEN      7284/rpc.mountd 
tcp6       0      0 :::55036                :::*                    LISTEN      14031/rpc.statd 
tcp6       0      0 :::42205                :::*                    LISTEN      7284/rpc.mountd 
tcp6       0      0 :::44289                :::*                    LISTEN      504/java        
tcp6       0      0 :::2049                 :::*                    LISTEN      -               
tcp6       0      0 :::38950                :::*                    LISTEN      604/java        
tcp6       0      0 127.0.0.1:9000      :::*                    LISTEN      32646/java      
tcp6       0      0 127.0.0.1:9001      :::*                    LISTEN      604/java        
tcp6       0      0 :::50090                :::*                    LISTEN      504/java

我的/etc/hosts是:

192.168.10.10   localhost
  192.168.10.10   mongodb
  127.0.0.1       localhost
  #127.0.0.1 localhost
  # The following lines are desirable for IPv6 capable hosts
  ::1     ip6-localhost ip6-loopback
  fe00::0 ip6-localnet
  ff00::0 ip6-mcastprefix
  ff02::1 ip6-allnodes
  ff02::2 ip6-allrouters

mongodb只是主机名。我终于找到了reason:from the netstat的输出,此行:

tcp6       0      0 127.0.0.1:9000      :::*                    LISTEN      32646/java

我们可以看到,master只监听127.0.0.1:9000,因此它不能接收任何不是来自127.0.0.1的连接,因此任何datanode都不能通过端口9000连接到它。因此,我更改了文件/etc/hosts,只需切换第1行和第2行:

192.168.10.10   mongodb
  192.168.10.10   localhost
  127.0.0.1       localhost
  #127.0.0.1 localhost
  # The following lines are desirable for IPv6 capable hosts
  ::1     ip6-localhost ip6-loopback
  fe00::0 ip6-localnet
  ff00::0 ip6-mcastprefix
  ff02::1 ip6-allnodes
  ff02::2 ip6-allrouters

我用 sudo netstat -ntlp ,结果已更改为

tcp6       0      0 192.168.10.10:9000      :::*                    LISTEN      32646/java

当然,数据节点可以通过9000连接到它。
我在hadoop配置文件中没有使用过任何主机名,我只使用了直接ip地址。我知道/etc/hosts/用于从主机名Map到ip地址,所以,我的问题是,/etc/hosts如何影响hadoop主机的侦听ip而不使用任何主机名?

iyzzxitl

iyzzxitl1#

有点猜测。。。好吧,很多猜测。。。
首先,在解析/etc/hosts时,会创建一个ip到主机名的Map,每个条目都会覆盖前面的条目。因此,在第一个配置中,192.168.10.10Map到“mongodb”,而在第二个配置中,它Map到“localhost”。稍后通过这个“向前”Map来创建“向后”Map,瞧,“localhost”根据两行的顺序解析为127.0.0.1或192.160.10.10。
其次,服务器绑定到“localhost:9000". 因为在配置中没有指定,所以它必须在代码中。
最简单的方法是添加到服务器配置中,使其绑定到0.0.0.0:9000,从而侦听所有接口。

相关问题