[ 
https://issues.apache.org/jira/browse/HADOOP-12185?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14614420#comment-14614420
 ] 

Inigo Goiri commented on HADOOP-12185:
--------------------------------------

I've implemented it with only Map and there is one operation that gets much 
more expensive: chooseRandom(). Right now, picking a random node is done 
selecting a random index in the list of children which is O(k); however, the 
same operation is O(n) for HashMap. I thought about using TreeMap or 
LinkedHashMap but both of them have the same issue to some degree.

Given that chooseRandom() is one of the most commonly used operations (e.g., 
block placement in HDFS), I would stick to the addition of the auxiliary map. 
To speedup chooseRamdom (which uses indexOf heavily) we can replace my proposed 
HashMap<String,Node> by HashMap<String,Integer>. I'm going to do some 
performance analysis to see what's better.

> NetworkTopology is not efficient adding/getting/removing nodes
> --------------------------------------------------------------
>
>                 Key: HADOOP-12185
>                 URL: https://issues.apache.org/jira/browse/HADOOP-12185
>             Project: Hadoop Common
>          Issue Type: Improvement
>    Affects Versions: 2.7.0
>            Reporter: Inigo Goiri
>            Assignee: Inigo Goiri
>         Attachments: HADOOP-12185-1.patch
>
>
> NetworkToplogy uses nodes with a list of children. The access to these 
> children is slow as it's a linear search.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to