Java /被Hadoop忽略的etc/hosts
我正在一台机器上为Hadoop设置namenodeJava /被Hadoop忽略的etc/hosts,java,linux,ubuntu,hadoop,dns,Java,Linux,Ubuntu,Hadoop,Dns,我正在一台机器上为Hadoop设置namenodenode1.homer /etc/hosts的内容包括: nameserver 8.8.8.8 search localdomain 10.0.0.2节点1.homer节点1 和/etc/resolv.conf包含: nameserver 8.8.8.8 search localdomain /etc/nsswitch.conf还指定了主机:文件dns的顺序 Hadoop名称节点设置为hdfs://node1:9000 现在,当我运行
node1.homer
/etc/hosts
的内容包括:
nameserver 8.8.8.8
search localdomain
10.0.0.2节点1.homer节点1
和/etc/resolv.conf
包含:
nameserver 8.8.8.8
search localdomain
/etc/nsswitch.conf
还指定了主机:文件dns的顺序
Hadoop名称节点设置为hdfs://node1:9000
现在,当我运行hadoop namenode时,它会挂起大约5-10秒。使用tcpdump
进行的进一步调查显示,Hadoop正试图通过8.8.8
解析namenode,由于我的网络设置,解析速度非常慢
当我注释掉名称服务器8.8.8.8
时,相同的命令在不到1秒的时间内运行,因为它似乎直接从/etc/hosts
获取节点1
的解析
那么,在Java中,或者至少在Hadoop中,名称解析总是首先解析DNS,并且只有在失败时才使用
/etc/hosts
?我一直在努力寻找类似的经历,但没有成功 您可以设置一个仅缓存本地绑定服务器,该服务器允许您在本地解析和缓存名称,但仍然能够在需要时获得其他DNS解析…使用此方法,您甚至可以设置一个本地.hadoop
域,以便在开始向外扩展时所有节点都可用。事实上,我可以指向另一个响应更快的本地网关。我的问题是,在解析主机名时,Java是否会忽略/etc/hosts。我不是Java开发人员,但在weblogic和tomcat上都支持许多基于Java的应用程序,并且,除非您实际建立连接以获取记录,Java应将解析请求传递给本地系统,该系统应遵守系统的设置。您可以设置一个本地的仅缓存绑定服务器,该服务器允许您在本地解析和缓存名称,但在需要时仍然能够获取其他DNS解析…使用此方法,您甚至可以设置一个本地的.hadoop
域,以便在开始向外扩展时所有节点都可用。事实上,我可以指向另一个响应更快的本地网关。我的问题是,在解析主机名时,Java是否会忽略/etc/hosts。我不是Java开发人员,但在weblogic和tomcat上都支持许多基于Java的应用程序,并且,除非您实际建立连接以获取记录,Java应该将解析请求传递给本地系统,本地系统应该遵守系统的设置。