[
https://issues.apache.org/jira/browse/HADOOP-3426?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12612415#action_12612415
]
Steve Loughran commented on HADOOP-3426:
----------------------------------------
As you have noted, this patch only caches the local hostname, which is asked
for on occasions, and when it is unknown, things break. Caching this value
makes both success and failure faster from the second time onwards. This is
effectively the same code in use in other apache projects (e.g. Ivy).
The only troublespot would be on roaming systems, where IPAddr and hostname
would change. However, I don't think Hadoop would cope well in such an
environment, as JREs normally assume that the network infrastructure is stable,
and don't send notifications to their apps telling them to reset all their
cached DNS addresses and close and reopen all sockets to bond to the changed
interfaces. Java SE and Java EE isn't Java mobile, sadly.
> Datanode does not start up if the local machines DNS isnt working right and
> dfs.datanode.dns.interface==default
> ---------------------------------------------------------------------------------------------------------------
>
> Key: HADOOP-3426
> URL: https://issues.apache.org/jira/browse/HADOOP-3426
> Project: Hadoop Core
> Issue Type: Bug
> Components: dfs
> Affects Versions: 0.19.0
> Environment: Ubuntu 8.04, at home, no reverse DNS
> Reporter: Steve Loughran
> Assignee: Steve Loughran
> Priority: Minor
> Attachments: hadoop-3426.patch, hadoop-3426.patch
>
>
> This is the third Java project I've been involved in that doesnt work on my
> home network, due to implementation issues with
> java.net.InetAddress.getLocalHost(), issues that only show up on an unamanged
> network. Fortunately my home network exists to find these problems early.
> In hadoop, if the local hostname doesnt resolve, the datanode does not start
> up:
> Caused by: java.net.UnknownHostException: k2: k2
> at java.net.InetAddress.getLocalHost(InetAddress.java:1353)
> at org.apache.hadoop.net.DNS.getDefaultHost(DNS.java:185)
> at org.apache.hadoop.dfs.DataNode.startDataNode(DataNode.java:184)
> at org.apache.hadoop.dfs.DataNode.(DataNode.java:162)
> at org.apache.hadoop.dfs.ExtDataNode.(ExtDataNode.java:55)
> at
> org.smartfrog.services.hadoop.components.datanode.DatanodeImpl.sfStart(DatanodeImpl.java:60)
> While this is a valid option in a production (non-virtual) cluster, if you
> are playing with VMWare/Xen private networks or on a home network, you can't
> rely on DNS.
> 1. In these situations, its usually better to fall back to using "localhost"
> or 127.0.0.1 as a hostname if Java can't work it out for itself,
> 2. Its often good to cache this if used in lots of parts of the system,
> otherwise the 30s timeouts can cause problems of their own.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.