[10/50] hadoop git commit: HDFS-7907. Erasure Coding: track invalid, corrupt, and under-recovery striped blocks in NameNode. Contributed by Jing Zhao.
HDFS-7907. Erasure Coding: track invalid, corrupt, and under-recovery striped blocks in NameNode. Contributed by Jing Zhao. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/ba93dd78 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/ba93dd78 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/ba93dd78 Branch: refs/heads/HDFS-7285 Commit: ba93dd780586940e2962a93f4265cbde9359ee85 Parents: 6a2a5e7 Author: Jing Zhao Authored: Mon Mar 30 11:25:09 2015 -0700 Committer: Zhe Zhang Committed: Mon Apr 20 10:22:05 2015 -0700 -- .../blockmanagement/BlockInfoStriped.java | 25 ++- .../server/blockmanagement/BlockManager.java| 203 ++- .../blockmanagement/DecommissionManager.java| 85 .../hdfs/server/namenode/FSNamesystem.java | 8 +- .../server/blockmanagement/TestNodeCount.java | 2 +- .../TestOverReplicatedBlocks.java | 4 +- 6 files changed, 172 insertions(+), 155 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/ba93dd78/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java index 30b5ee7..4a85efb 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java @@ -18,11 +18,13 @@ package org.apache.hadoop.hdfs.server.blockmanagement; import org.apache.hadoop.hdfs.protocol.Block; -import org.apache.hadoop.hdfs.protocol.HdfsConstants; import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.BlockUCState; + import java.io.DataOutput; import java.io.IOException; +import static org.apache.hadoop.hdfs.protocol.HdfsConstants.BLOCK_STRIPED_CHUNK_SIZE; + /** * Subclass of {@link BlockInfo}, presenting a block group in erasure coding. * @@ -37,7 +39,6 @@ import java.io.IOException; * array to record the block index for each triplet. */ public class BlockInfoStriped extends BlockInfo { - private final int chunkSize = HdfsConstants.BLOCK_STRIPED_CHUNK_SIZE; private final short dataBlockNum; private final short parityBlockNum; /** @@ -132,6 +133,22 @@ public class BlockInfoStriped extends BlockInfo { return i == -1 ? -1 : indices[i]; } + /** + * Identify the block stored in the given datanode storage. Note that + * the returned block has the same block Id with the one seen/reported by the + * DataNode. + */ + Block getBlockOnStorage(DatanodeStorageInfo storage) { +int index = getStorageBlockIndex(storage); +if (index < 0) { + return null; +} else { + Block block = new Block(this); + block.setBlockId(this.getBlockId() + index); + return block; +} + } + @Override boolean removeStorage(DatanodeStorageInfo storage) { int dnIndex = findStorageInfoFromEnd(storage); @@ -186,8 +203,8 @@ public class BlockInfoStriped extends BlockInfo { // In case striped blocks, total usage by this striped blocks should // be the total of data blocks and parity blocks because // `getNumBytes` is the total of actual data block size. -return ((getNumBytes() - 1) / (dataBlockNum * chunkSize) + 1) -* chunkSize * parityBlockNum + getNumBytes(); +return ((getNumBytes() - 1) / (dataBlockNum * BLOCK_STRIPED_CHUNK_SIZE) + 1) +* BLOCK_STRIPED_CHUNK_SIZE * parityBlockNum + getNumBytes(); } @Override http://git-wip-us.apache.org/repos/asf/hadoop/blob/ba93dd78/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java index 0ac7b64..0af2ce9 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java @@ -178,7 +178,11 @@ public class BlockManager { /** Store blocks -> datanodedescriptor(s) map of corrupt replicas */ final CorruptReplicasMap corruptReplicas = new CorruptReplicasMap(); - /** Blocks to be invalidated.
[26/50] [abbrv] hadoop git commit: HDFS-7907. Erasure Coding: track invalid, corrupt, and under-recovery striped blocks in NameNode. Contributed by Jing Zhao.
HDFS-7907. Erasure Coding: track invalid, corrupt, and under-recovery striped blocks in NameNode. Contributed by Jing Zhao. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/f10ef256 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/f10ef256 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/f10ef256 Branch: refs/heads/HDFS-7285 Commit: f10ef256c5a489e9c9a40c79a79c949e070fd79d Parents: 5ad9c40 Author: Jing Zhao Authored: Mon Mar 30 11:25:09 2015 -0700 Committer: Zhe Zhang Committed: Mon Apr 13 13:09:54 2015 -0700 -- .../blockmanagement/BlockInfoStriped.java | 25 ++- .../server/blockmanagement/BlockManager.java| 203 ++- .../blockmanagement/DecommissionManager.java| 85 .../hdfs/server/namenode/FSNamesystem.java | 8 +- .../server/blockmanagement/TestNodeCount.java | 2 +- .../TestOverReplicatedBlocks.java | 4 +- 6 files changed, 172 insertions(+), 155 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/f10ef256/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java index 30b5ee7..4a85efb 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java @@ -18,11 +18,13 @@ package org.apache.hadoop.hdfs.server.blockmanagement; import org.apache.hadoop.hdfs.protocol.Block; -import org.apache.hadoop.hdfs.protocol.HdfsConstants; import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.BlockUCState; + import java.io.DataOutput; import java.io.IOException; +import static org.apache.hadoop.hdfs.protocol.HdfsConstants.BLOCK_STRIPED_CHUNK_SIZE; + /** * Subclass of {@link BlockInfo}, presenting a block group in erasure coding. * @@ -37,7 +39,6 @@ import java.io.IOException; * array to record the block index for each triplet. */ public class BlockInfoStriped extends BlockInfo { - private final int chunkSize = HdfsConstants.BLOCK_STRIPED_CHUNK_SIZE; private final short dataBlockNum; private final short parityBlockNum; /** @@ -132,6 +133,22 @@ public class BlockInfoStriped extends BlockInfo { return i == -1 ? -1 : indices[i]; } + /** + * Identify the block stored in the given datanode storage. Note that + * the returned block has the same block Id with the one seen/reported by the + * DataNode. + */ + Block getBlockOnStorage(DatanodeStorageInfo storage) { +int index = getStorageBlockIndex(storage); +if (index < 0) { + return null; +} else { + Block block = new Block(this); + block.setBlockId(this.getBlockId() + index); + return block; +} + } + @Override boolean removeStorage(DatanodeStorageInfo storage) { int dnIndex = findStorageInfoFromEnd(storage); @@ -186,8 +203,8 @@ public class BlockInfoStriped extends BlockInfo { // In case striped blocks, total usage by this striped blocks should // be the total of data blocks and parity blocks because // `getNumBytes` is the total of actual data block size. -return ((getNumBytes() - 1) / (dataBlockNum * chunkSize) + 1) -* chunkSize * parityBlockNum + getNumBytes(); +return ((getNumBytes() - 1) / (dataBlockNum * BLOCK_STRIPED_CHUNK_SIZE) + 1) +* BLOCK_STRIPED_CHUNK_SIZE * parityBlockNum + getNumBytes(); } @Override http://git-wip-us.apache.org/repos/asf/hadoop/blob/f10ef256/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java index a3c5512..47865ec 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java @@ -178,7 +178,11 @@ public class BlockManager { /** Store blocks -> datanodedescriptor(s) map of corrupt replicas */ final CorruptReplicasMap corruptReplicas = new CorruptReplicasMap(); - /** Blocks to be invalidated.
[26/50] [abbrv] hadoop git commit: HDFS-7907. Erasure Coding: track invalid, corrupt, and under-recovery striped blocks in NameNode. Contributed by Jing Zhao.
HDFS-7907. Erasure Coding: track invalid, corrupt, and under-recovery striped blocks in NameNode. Contributed by Jing Zhao. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/2e39c2b7 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/2e39c2b7 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/2e39c2b7 Branch: refs/heads/HDFS-7285 Commit: 2e39c2b7fd477e77c0cd649a94ac67f785b87d6a Parents: f6975ae Author: Jing Zhao Authored: Mon Mar 30 11:25:09 2015 -0700 Committer: Zhe Zhang Committed: Mon Apr 13 09:46:02 2015 -0700 -- .../blockmanagement/BlockInfoStriped.java | 25 ++- .../server/blockmanagement/BlockManager.java| 203 ++- .../blockmanagement/DecommissionManager.java| 85 .../hdfs/server/namenode/FSNamesystem.java | 8 +- .../server/blockmanagement/TestNodeCount.java | 2 +- .../TestOverReplicatedBlocks.java | 4 +- 6 files changed, 172 insertions(+), 155 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e39c2b7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java index 30b5ee7..4a85efb 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java @@ -18,11 +18,13 @@ package org.apache.hadoop.hdfs.server.blockmanagement; import org.apache.hadoop.hdfs.protocol.Block; -import org.apache.hadoop.hdfs.protocol.HdfsConstants; import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.BlockUCState; + import java.io.DataOutput; import java.io.IOException; +import static org.apache.hadoop.hdfs.protocol.HdfsConstants.BLOCK_STRIPED_CHUNK_SIZE; + /** * Subclass of {@link BlockInfo}, presenting a block group in erasure coding. * @@ -37,7 +39,6 @@ import java.io.IOException; * array to record the block index for each triplet. */ public class BlockInfoStriped extends BlockInfo { - private final int chunkSize = HdfsConstants.BLOCK_STRIPED_CHUNK_SIZE; private final short dataBlockNum; private final short parityBlockNum; /** @@ -132,6 +133,22 @@ public class BlockInfoStriped extends BlockInfo { return i == -1 ? -1 : indices[i]; } + /** + * Identify the block stored in the given datanode storage. Note that + * the returned block has the same block Id with the one seen/reported by the + * DataNode. + */ + Block getBlockOnStorage(DatanodeStorageInfo storage) { +int index = getStorageBlockIndex(storage); +if (index < 0) { + return null; +} else { + Block block = new Block(this); + block.setBlockId(this.getBlockId() + index); + return block; +} + } + @Override boolean removeStorage(DatanodeStorageInfo storage) { int dnIndex = findStorageInfoFromEnd(storage); @@ -186,8 +203,8 @@ public class BlockInfoStriped extends BlockInfo { // In case striped blocks, total usage by this striped blocks should // be the total of data blocks and parity blocks because // `getNumBytes` is the total of actual data block size. -return ((getNumBytes() - 1) / (dataBlockNum * chunkSize) + 1) -* chunkSize * parityBlockNum + getNumBytes(); +return ((getNumBytes() - 1) / (dataBlockNum * BLOCK_STRIPED_CHUNK_SIZE) + 1) +* BLOCK_STRIPED_CHUNK_SIZE * parityBlockNum + getNumBytes(); } @Override http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e39c2b7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java index a3c5512..47865ec 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java @@ -178,7 +178,11 @@ public class BlockManager { /** Store blocks -> datanodedescriptor(s) map of corrupt replicas */ final CorruptReplicasMap corruptReplicas = new CorruptReplicasMap(); - /** Blocks to be invalidated.
[45/51] [abbrv] hadoop git commit: HDFS-7907. Erasure Coding: track invalid, corrupt, and under-recovery striped blocks in NameNode. Contributed by Jing Zhao.
HDFS-7907. Erasure Coding: track invalid, corrupt, and under-recovery striped blocks in NameNode. Contributed by Jing Zhao. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/0767bd70 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/0767bd70 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/0767bd70 Branch: refs/heads/HDFS-7285 Commit: 0767bd70c1f987c27bfa184735be185ce937ffe1 Parents: 5e3f732 Author: Jing Zhao Authored: Mon Mar 30 11:25:09 2015 -0700 Committer: Zhe Zhang Committed: Mon Apr 6 10:21:03 2015 -0700 -- .../blockmanagement/BlockInfoStriped.java | 25 ++- .../server/blockmanagement/BlockManager.java| 203 ++- .../blockmanagement/DecommissionManager.java| 86 .../hdfs/server/namenode/FSNamesystem.java | 8 +- .../server/blockmanagement/TestNodeCount.java | 2 +- .../TestOverReplicatedBlocks.java | 4 +- 6 files changed, 172 insertions(+), 156 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/0767bd70/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java index 30b5ee7..4a85efb 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java @@ -18,11 +18,13 @@ package org.apache.hadoop.hdfs.server.blockmanagement; import org.apache.hadoop.hdfs.protocol.Block; -import org.apache.hadoop.hdfs.protocol.HdfsConstants; import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.BlockUCState; + import java.io.DataOutput; import java.io.IOException; +import static org.apache.hadoop.hdfs.protocol.HdfsConstants.BLOCK_STRIPED_CHUNK_SIZE; + /** * Subclass of {@link BlockInfo}, presenting a block group in erasure coding. * @@ -37,7 +39,6 @@ import java.io.IOException; * array to record the block index for each triplet. */ public class BlockInfoStriped extends BlockInfo { - private final int chunkSize = HdfsConstants.BLOCK_STRIPED_CHUNK_SIZE; private final short dataBlockNum; private final short parityBlockNum; /** @@ -132,6 +133,22 @@ public class BlockInfoStriped extends BlockInfo { return i == -1 ? -1 : indices[i]; } + /** + * Identify the block stored in the given datanode storage. Note that + * the returned block has the same block Id with the one seen/reported by the + * DataNode. + */ + Block getBlockOnStorage(DatanodeStorageInfo storage) { +int index = getStorageBlockIndex(storage); +if (index < 0) { + return null; +} else { + Block block = new Block(this); + block.setBlockId(this.getBlockId() + index); + return block; +} + } + @Override boolean removeStorage(DatanodeStorageInfo storage) { int dnIndex = findStorageInfoFromEnd(storage); @@ -186,8 +203,8 @@ public class BlockInfoStriped extends BlockInfo { // In case striped blocks, total usage by this striped blocks should // be the total of data blocks and parity blocks because // `getNumBytes` is the total of actual data block size. -return ((getNumBytes() - 1) / (dataBlockNum * chunkSize) + 1) -* chunkSize * parityBlockNum + getNumBytes(); +return ((getNumBytes() - 1) / (dataBlockNum * BLOCK_STRIPED_CHUNK_SIZE) + 1) +* BLOCK_STRIPED_CHUNK_SIZE * parityBlockNum + getNumBytes(); } @Override http://git-wip-us.apache.org/repos/asf/hadoop/blob/0767bd70/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java index 66a02d4..e05330c 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java @@ -177,7 +177,11 @@ public class BlockManager { /** Store blocks -> datanodedescriptor(s) map of corrupt replicas */ final CorruptReplicasMap corruptReplicas = new CorruptReplicasMap(); - /** Blocks to be invalidated. *
[46/50] [abbrv] hadoop git commit: HDFS-7907. Erasure Coding: track invalid, corrupt, and under-recovery striped blocks in NameNode. Contributed by Jing Zhao.
HDFS-7907. Erasure Coding: track invalid, corrupt, and under-recovery striped blocks in NameNode. Contributed by Jing Zhao. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/019d211a Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/019d211a Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/019d211a Branch: refs/heads/HDFS-7285 Commit: 019d211abc309a41c7fd50ff01cb50e3aa84ed68 Parents: c48643f Author: Jing Zhao Authored: Mon Mar 30 11:25:09 2015 -0700 Committer: Zhe Zhang Committed: Thu Apr 2 11:06:11 2015 -0700 -- .../blockmanagement/BlockInfoStriped.java | 25 ++- .../server/blockmanagement/BlockManager.java| 203 ++- .../blockmanagement/DecommissionManager.java| 86 .../hdfs/server/namenode/FSNamesystem.java | 8 +- .../server/blockmanagement/TestNodeCount.java | 2 +- .../TestOverReplicatedBlocks.java | 4 +- 6 files changed, 172 insertions(+), 156 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/019d211a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java index 30b5ee7..4a85efb 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java @@ -18,11 +18,13 @@ package org.apache.hadoop.hdfs.server.blockmanagement; import org.apache.hadoop.hdfs.protocol.Block; -import org.apache.hadoop.hdfs.protocol.HdfsConstants; import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.BlockUCState; + import java.io.DataOutput; import java.io.IOException; +import static org.apache.hadoop.hdfs.protocol.HdfsConstants.BLOCK_STRIPED_CHUNK_SIZE; + /** * Subclass of {@link BlockInfo}, presenting a block group in erasure coding. * @@ -37,7 +39,6 @@ import java.io.IOException; * array to record the block index for each triplet. */ public class BlockInfoStriped extends BlockInfo { - private final int chunkSize = HdfsConstants.BLOCK_STRIPED_CHUNK_SIZE; private final short dataBlockNum; private final short parityBlockNum; /** @@ -132,6 +133,22 @@ public class BlockInfoStriped extends BlockInfo { return i == -1 ? -1 : indices[i]; } + /** + * Identify the block stored in the given datanode storage. Note that + * the returned block has the same block Id with the one seen/reported by the + * DataNode. + */ + Block getBlockOnStorage(DatanodeStorageInfo storage) { +int index = getStorageBlockIndex(storage); +if (index < 0) { + return null; +} else { + Block block = new Block(this); + block.setBlockId(this.getBlockId() + index); + return block; +} + } + @Override boolean removeStorage(DatanodeStorageInfo storage) { int dnIndex = findStorageInfoFromEnd(storage); @@ -186,8 +203,8 @@ public class BlockInfoStriped extends BlockInfo { // In case striped blocks, total usage by this striped blocks should // be the total of data blocks and parity blocks because // `getNumBytes` is the total of actual data block size. -return ((getNumBytes() - 1) / (dataBlockNum * chunkSize) + 1) -* chunkSize * parityBlockNum + getNumBytes(); +return ((getNumBytes() - 1) / (dataBlockNum * BLOCK_STRIPED_CHUNK_SIZE) + 1) +* BLOCK_STRIPED_CHUNK_SIZE * parityBlockNum + getNumBytes(); } @Override http://git-wip-us.apache.org/repos/asf/hadoop/blob/019d211a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java index 7de352b..5aed4d7 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java @@ -177,7 +177,11 @@ public class BlockManager { /** Store blocks -> datanodedescriptor(s) map of corrupt replicas */ final CorruptReplicasMap corruptReplicas = new CorruptReplicasMap(); - /** Blocks to be invalidated. *
hadoop git commit: HDFS-7907. Erasure Coding: track invalid, corrupt, and under-recovery striped blocks in NameNode. Contributed by Jing Zhao.
Repository: hadoop Updated Branches: refs/heads/HDFS-7285 a6543ac97 -> a1075153e HDFS-7907. Erasure Coding: track invalid, corrupt, and under-recovery striped blocks in NameNode. Contributed by Jing Zhao. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a1075153 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a1075153 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a1075153 Branch: refs/heads/HDFS-7285 Commit: a1075153e4367fc8dc134f25dd38ab1d750289ba Parents: a6543ac Author: Jing Zhao Authored: Mon Mar 30 11:25:09 2015 -0700 Committer: Jing Zhao Committed: Mon Mar 30 11:25:09 2015 -0700 -- .../blockmanagement/BlockInfoStriped.java | 25 ++- .../server/blockmanagement/BlockManager.java| 203 ++- .../blockmanagement/DecommissionManager.java| 86 .../hdfs/server/namenode/FSNamesystem.java | 8 +- .../server/blockmanagement/TestNodeCount.java | 2 +- .../TestOverReplicatedBlocks.java | 4 +- 6 files changed, 172 insertions(+), 156 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/a1075153/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java index 30b5ee7..4a85efb 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoStriped.java @@ -18,11 +18,13 @@ package org.apache.hadoop.hdfs.server.blockmanagement; import org.apache.hadoop.hdfs.protocol.Block; -import org.apache.hadoop.hdfs.protocol.HdfsConstants; import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.BlockUCState; + import java.io.DataOutput; import java.io.IOException; +import static org.apache.hadoop.hdfs.protocol.HdfsConstants.BLOCK_STRIPED_CHUNK_SIZE; + /** * Subclass of {@link BlockInfo}, presenting a block group in erasure coding. * @@ -37,7 +39,6 @@ import java.io.IOException; * array to record the block index for each triplet. */ public class BlockInfoStriped extends BlockInfo { - private final int chunkSize = HdfsConstants.BLOCK_STRIPED_CHUNK_SIZE; private final short dataBlockNum; private final short parityBlockNum; /** @@ -132,6 +133,22 @@ public class BlockInfoStriped extends BlockInfo { return i == -1 ? -1 : indices[i]; } + /** + * Identify the block stored in the given datanode storage. Note that + * the returned block has the same block Id with the one seen/reported by the + * DataNode. + */ + Block getBlockOnStorage(DatanodeStorageInfo storage) { +int index = getStorageBlockIndex(storage); +if (index < 0) { + return null; +} else { + Block block = new Block(this); + block.setBlockId(this.getBlockId() + index); + return block; +} + } + @Override boolean removeStorage(DatanodeStorageInfo storage) { int dnIndex = findStorageInfoFromEnd(storage); @@ -186,8 +203,8 @@ public class BlockInfoStriped extends BlockInfo { // In case striped blocks, total usage by this striped blocks should // be the total of data blocks and parity blocks because // `getNumBytes` is the total of actual data block size. -return ((getNumBytes() - 1) / (dataBlockNum * chunkSize) + 1) -* chunkSize * parityBlockNum + getNumBytes(); +return ((getNumBytes() - 1) / (dataBlockNum * BLOCK_STRIPED_CHUNK_SIZE) + 1) +* BLOCK_STRIPED_CHUNK_SIZE * parityBlockNum + getNumBytes(); } @Override http://git-wip-us.apache.org/repos/asf/hadoop/blob/a1075153/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java index 545e66b..7e8a88c 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java @@ -177,7 +177,11 @@ public class BlockManager { /** Store blocks -> datanodedescriptor(s) map of corrupt replicas */ final CorruptReplic