[ https://issues.apache.org/jira/browse/HADOOP-1912?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12536854 ]
Raghu Angadi commented on HADOOP-1912: -------------------------------------- regd 3: {code} (priSet.contains(delNodeHint) || ( addedNode != null && !priSet.contains(addedNode)) {code} looks same as {code} (addedNode != null || priSet.contains(delNodeHint)) {code} Except the latter has one less look up. What am I missing :) ? In what case do these result in different results? > Datanode should support block replacement > ----------------------------------------- > > Key: HADOOP-1912 > URL: https://issues.apache.org/jira/browse/HADOOP-1912 > Project: Hadoop > Issue Type: New Feature > Components: dfs > Affects Versions: 0.14.1 > Reporter: Hairong Kuang > Assignee: Hairong Kuang > Attachments: replace.patch, replace1.patch, replace2.patch, > replace3.patch > > > This jira Data Node's support for rebalancing (HADOOP-1652). When a balancer > decides to move a block B from Source S to Destination D. It also chooses a > proxy source PS, which contains a replica of B, to speed up block copy. The > block placement is carried in the following steps: > 1. A block copy command is sent to datanode PS in the format of > "OP_BLOCK_COPY <block_id_of_B> <source S> <destination D>". It requests PS to > copy B to datanode D. > 2. PS then transfers block B to datanode D with a block replacement command > to D in the format of "OP_BLOCK_REPLACEMENT <block_id_of_B> <source S> > <data_of_B>". > 3. Datanode D writes the block B to its disk and then sends a name node a > blockReceived RPC informing the namenode that a block B is received and > please delete a replica of B from source S if there is any excessive replica. > 4. The namenode then adds datanode D to block B's map and removes an exesive > replicas of B in favor of datanode S. > In addition, each data node has a limited bandwidth for rebalancing. The > default value for the bandwidth is 5MB/s. Throttling is done at both source & > destination sides. Each data node limits maximum number of concurrent data > transfers (including both sending and receiving) for the rebalancing purpose > to be 5. In the worst case, each data transfer has a limited bandwidth of > 1MB/s. Each sender & receiver has a Throttler. The primary method of the > class is "throttle( int numOfBytes )". The parameter numOfBytes indicates the > total number of bytes that the caller has sent or received since the last > throttle is called. The method calculates the caller's I/O rate. If the rate > is faster than the bandwidth limit, it sleeps to slow down the data transfer. > After it wakes up, it adjusts its bandwidth limit if the number of concurrent > data transfers is changed. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.