You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-dev@hadoop.apache.org by "Marco Nicosia (JIRA)" <ji...@apache.org> on 2007/02/07 03:32:05 UTC
[jira] Commented: (HADOOP-985) Namenode should identify DataNodes
as ip:port instead of hostname:port
[ https://issues.apache.org/jira/browse/HADOOP-985?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12470793 ]
Marco Nicosia commented on HADOOP-985:
--------------------------------------
I support option #2 (determining remote IP from the socket). From my comment on HADOOP-685:
I know it's not trivial, but I'd prefer that the nameNode record the IP address of a connection. That way there's no DNS involved at any level in the transaction, and we know exactly which interface/IP address is being used. Additionally, there's no worrying about /etc/hosts, or dhcp, or whatnot. It works for the entire time the dataNode's up, and making network connections.
Regarding option #1: On the dataNode's side, determining which IP address to use is even harder than determining administrative hostname, since you don't know what route packets will take to get to the nameNode (and on some OS's (solaris) if you have interface IPs and VIPs on that interface, you can't control which IP address will be used).
Regarding option #3: On startup, massive clusters really pound on the nameNode, delaying startup. The nameNode's already very busy. Worse, I'd hate if the cluster had extended difficulties coming up because DNS lookups were either slow or busted entirely.
> Namenode should identify DataNodes as ip:port instead of hostname:port
> ----------------------------------------------------------------------
>
> Key: HADOOP-985
> URL: https://issues.apache.org/jira/browse/HADOOP-985
> Project: Hadoop
> Issue Type: Improvement
> Components: dfs
> Affects Versions: 0.11.0
> Reporter: Raghu Angadi
> Assigned To: Raghu Angadi
> Fix For: 0.12.0
>
>
> Right now NameNode keeps track of DataNodes with "hostname:port". One proposal is to keep track of datanodes with "ip:port". There are various concerns expressed regd hostnames and ip. Please add your experiences here so that we have better idea on what we should fix etc.
> How should be calculate datanode ip:
> 1) Just like how we calculate hostname currently with "dfs.datanode.dns.interface" and "dfs.datanode.dns.nameserver". So if interface specified wrong, it could report ip like 127.0.0.1 which might or might not be intended.
> 2) Namenode can use the remove socket address when the datanode registers. Not sure how easy it to get this address in RPC or if this is desirable.
> 3) Namenode could just resolve the hostname when a datanode registers. It could print of a warning if the resolved ip and reported ip don't match.
> One advantage of using IPs is that DFSClient does not need to resolve them when it connects to datanode. This could save few milliseconds for each block. Also, DFSClient should check all its ips to see if a given ip is local or not.
> As far I see namenode does not resolve any DNS in normal operations since it does not actively contact datanodes. In that sense not sure if this have any change in Namenode performance.
> Thoughts?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.