[jira] [Commented] (HDFS-14977) Quota Usage and Content summary are not same in Truncate with Snapshot
[ https://issues.apache.org/jira/browse/HDFS-14977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050947#comment-17050947 ] Surendra Singh Lilhore commented on HDFS-14977: --- +1 > Quota Usage and Content summary are not same in Truncate with Snapshot > --- > > Key: HDFS-14977 > URL: https://issues.apache.org/jira/browse/HDFS-14977 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: hemanthboyina >Assignee: hemanthboyina >Priority: Major > Attachments: HDFS-14977.001.patch, HDFS-14977.002.patch, > HDFS-14977.003.patch > > > steps : hdfs dfs -mkdir /dir > hdfs dfs -put file /dir (file size = 10bytes) > hdfs dfsadmin -allowSnapshot /dir > hdfs dfs -createSnapshot /dir s1 > space consumed with Quotausage and Content Summary is 30bytes > hdfs dfs -truncate -w 5 /dir/file > space consumed with Quotausage , Content Summary is 45 bytes > hdfs dfs -deleteSnapshot /dir s1 > space consumed with Quotausage is 45bytes and Content Summary is 15bytes -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-7702) Move metadata across namenode - Effort to a real distributed namenode
[ https://issues.apache.org/jira/browse/HDFS-7702?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050750#comment-17050750 ] Amithsha commented on HDFS-7702: [~xiyunyue] we are looking for a tool to move the metadata from one namenode to another is there any update on this ? > Move metadata across namenode - Effort to a real distributed namenode > - > > Key: HDFS-7702 > URL: https://issues.apache.org/jira/browse/HDFS-7702 > Project: Hadoop HDFS > Issue Type: Sub-task >Reporter: Ray Zhang >Assignee: Ray Zhang >Priority: Major > Attachments: Namespace Moving Tool Design Proposal.pdf > > > Implement a tool can show in memory namespace tree structure with > weight(size) and a API can move metadata across different namenode. The > purpose is moving data efficiently and faster, without moving blocks on > datanode. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-15200) Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage
[ https://issues.apache.org/jira/browse/HDFS-15200?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ayush Saxena updated HDFS-15200: Attachment: HDFS-15200-03.patch > Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage > - > > Key: HDFS-15200 > URL: https://issues.apache.org/jira/browse/HDFS-15200 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Ayush Saxena >Assignee: Ayush Saxena >Priority: Critical > Attachments: HDFS-15200-01.patch, HDFS-15200-02.patch, > HDFS-15200-03.patch > > > Presently {{invalidateBlock(..)}} before adding a replica into invalidates, > checks whether any block replica is on stale storage, if any replica is on > stale storage, it postpones deletion of the replica. > Here : > {code:java} >// Check how many copies we have of the block > if (nr.replicasOnStaleNodes() > 0) { > blockLog.debug("BLOCK* invalidateBlocks: postponing " + > "invalidation of {} on {} because {} replica(s) are located on " + > "nodes with potentially out-of-date block reports", b, dn, > nr.replicasOnStaleNodes()); > postponeBlock(b.getCorrupted()); > return false; > {code} > > In case of corrupt replica, we can skip this logic and delete the corrupt > replica immediately, as a corrupt replica can't get corrected. > One outcome of this behavior presently is namenodes showing different block > states post failover, as: > If a replica is marked corrupt, the Active NN, will mark it as corrupt, and > mark it for deletion and remove it from corruptReplica's and > excessRedundancyMap. > If before the deletion of replica, Failover happens. > The standby Namenode will mark all the storages as stale. > Then will start processing IBR's, Now since the replica's would be on stale > storage, it will skip deletion, and removal from corruptReplica's > Hence both the namenode will show different numbers and different corrupt > replicas. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-15205) FSImage sort section logic is wrong
[ https://issues.apache.org/jira/browse/HDFS-15205?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arpit Agarwal updated HDFS-15205: - Target Version/s: 3.1.4, 3.2.2, 3.3.1 > FSImage sort section logic is wrong > --- > > Key: HDFS-15205 > URL: https://issues.apache.org/jira/browse/HDFS-15205 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: angerszhu >Priority: Blocker > Attachments: HDFS-15205.001.patch > > > When load FSImage, it will sort sections in FileSummary and load Section's in > SectionName enum sequence. But the sort method is wrong , when I use > branch-2.6.0 to load fsimage write by branch-2 with patch > https://issues.apache.org/jira/browse/HDFS-14771, it will throw NPE because > it load INODE first > {code:java} > 2020-03-03 14:33:26,618 ERROR > org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode. > java.lang.NullPointerException > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadPermission(FSImageFormatPBINode.java:101) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeDirectory(FSImageFormatPBINode.java:148) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadRootINode(FSImageFormatPBINode.java:332) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeSection(FSImageFormatPBINode.java:218) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.loadInternal(FSImageFormatProtobuf.java:254) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.load(FSImageFormatProtobuf.java:180) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:226) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1036) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1020) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:741) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:677) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:290) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1092) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:780) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:609) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:666) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:838) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:817) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1538) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1606) > {code} > I print the load order: > {code:java} > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE, > offset = 37, length = 11790829 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 37, length = 826591 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 826628, length = 828192 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 1654820, length = 835240 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 2490060, length = 833630 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 3323690, length = 909445 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 4233135, length = 866147 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 5099282, length = 1272751 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 6372033, length = 1311876 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 7683909, length = 1251510 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 8935419, length = 1296120 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset =
[jira] [Updated] (HDFS-15200) Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage
[ https://issues.apache.org/jira/browse/HDFS-15200?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ayush Saxena updated HDFS-15200: Attachment: (was: HDFS-15200-03.patch) > Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage > - > > Key: HDFS-15200 > URL: https://issues.apache.org/jira/browse/HDFS-15200 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Ayush Saxena >Assignee: Ayush Saxena >Priority: Critical > Attachments: HDFS-15200-01.patch, HDFS-15200-02.patch > > > Presently {{invalidateBlock(..)}} before adding a replica into invalidates, > checks whether any block replica is on stale storage, if any replica is on > stale storage, it postpones deletion of the replica. > Here : > {code:java} >// Check how many copies we have of the block > if (nr.replicasOnStaleNodes() > 0) { > blockLog.debug("BLOCK* invalidateBlocks: postponing " + > "invalidation of {} on {} because {} replica(s) are located on " + > "nodes with potentially out-of-date block reports", b, dn, > nr.replicasOnStaleNodes()); > postponeBlock(b.getCorrupted()); > return false; > {code} > > In case of corrupt replica, we can skip this logic and delete the corrupt > replica immediately, as a corrupt replica can't get corrected. > One outcome of this behavior presently is namenodes showing different block > states post failover, as: > If a replica is marked corrupt, the Active NN, will mark it as corrupt, and > mark it for deletion and remove it from corruptReplica's and > excessRedundancyMap. > If before the deletion of replica, Failover happens. > The standby Namenode will mark all the storages as stale. > Then will start processing IBR's, Now since the replica's would be on stale > storage, it will skip deletion, and removal from corruptReplica's > Hence both the namenode will show different numbers and different corrupt > replicas. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-15200) Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage
[ https://issues.apache.org/jira/browse/HDFS-15200?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ayush Saxena updated HDFS-15200: Attachment: HDFS-15200-03.patch > Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage > - > > Key: HDFS-15200 > URL: https://issues.apache.org/jira/browse/HDFS-15200 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Ayush Saxena >Assignee: Ayush Saxena >Priority: Critical > Attachments: HDFS-15200-01.patch, HDFS-15200-02.patch, > HDFS-15200-03.patch > > > Presently {{invalidateBlock(..)}} before adding a replica into invalidates, > checks whether any block replica is on stale storage, if any replica is on > stale storage, it postpones deletion of the replica. > Here : > {code:java} >// Check how many copies we have of the block > if (nr.replicasOnStaleNodes() > 0) { > blockLog.debug("BLOCK* invalidateBlocks: postponing " + > "invalidation of {} on {} because {} replica(s) are located on " + > "nodes with potentially out-of-date block reports", b, dn, > nr.replicasOnStaleNodes()); > postponeBlock(b.getCorrupted()); > return false; > {code} > > In case of corrupt replica, we can skip this logic and delete the corrupt > replica immediately, as a corrupt replica can't get corrected. > One outcome of this behavior presently is namenodes showing different block > states post failover, as: > If a replica is marked corrupt, the Active NN, will mark it as corrupt, and > mark it for deletion and remove it from corruptReplica's and > excessRedundancyMap. > If before the deletion of replica, Failover happens. > The standby Namenode will mark all the storages as stale. > Then will start processing IBR's, Now since the replica's would be on stale > storage, it will skip deletion, and removal from corruptReplica's > Hence both the namenode will show different numbers and different corrupt > replicas. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-15206) HDFS synchronous reads from local file system
[ https://issues.apache.org/jira/browse/HDFS-15206?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Mania Abdi updated HDFS-15206: -- Description: Hello everyone, I ran a simple benchmark with runs ``` hadoop fs -get /file1.txt ```, and file1.txt has 1MB size and I capture the workflow of requests using XTrace. By evaluating the workflow trace, I noticed that datanode issues 64KB synchronous read request to local file system to read the data, and sends the data back and waits for completion. I had a code walk over HDFS code to verify the pattern and it was correct. I want to have two suggestions, (1) since each file in HDFS block size is usually 128MB, We could use the mmap mapping via FileChannel class to load the file into memory and enable file system prefetching and look ahead in background, instead of synchronously reading from disk. The second suggestion is to use asynchronous read operations to local disk of the datanode. I was wondering if there is a logic behind synchronous reads from the file system? Code: $HADOOP_SRC/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java line 586 {code:java} /** * Sends a packet with up to maxChunks chunks of data. * * @param pkt buffer used for writing packet data * @param maxChunks maximum number of chunks to send * @param out stream to send data to * @param transferTo use transferTo to send data * @param throttler used for throttling data transfer bandwidth */ private int sendPacket(ByteBuffer pkt, int maxChunks, OutputStream out, boolean transferTo, DataTransferThrottler throttler) throws IOException { int dataLen = (int) Math.min(endOffset - offset, (chunkSize * (long) maxChunks)); int numChunks = numberOfChunks(dataLen); // Number of chunks be sent in the packet int checksumDataLen = numChunks * checksumSize; int packetLen = dataLen + checksumDataLen + 4; boolean lastDataPacket = offset + dataLen == endOffset && dataLen > 0; // The packet buffer is organized as follows: // ___D?D?D?D? //^ ^ //| \ checksumOff //\ headerOff // _ padding, since the header is variable-length // H = header and length prefixes // C = checksums // D? = data, if transferTo is false. int headerLen = writePacketHeader(pkt, dataLen, packetLen); // Per above, the header doesn't start at the beginning of the // buffer int headerOff = pkt.position() - headerLen; int checksumOff = pkt.position(); byte[] buf = pkt.array(); if (checksumSize > 0 && checksumIn != null) { readChecksum(buf, checksumOff, checksumDataLen); // write in progress that we need to use to get last checksum if (lastDataPacket && lastChunkChecksum != null) { int start = checksumOff + checksumDataLen - checksumSize; byte[] updatedChecksum = lastChunkChecksum.getChecksum(); if (updatedChecksum != null) { System.arraycopy(updatedChecksum, 0, buf, start, checksumSize); } } } int dataOff = checksumOff + checksumDataLen; if (!transferTo) { // normal transfer IOUtils.readFully(blockIn, buf, dataOff, dataLen); if (verifyChecksum) { verifyChecksum(buf, dataOff, dataLen, numChunks, checksumOff); } } try { if (transferTo) { SocketOutputStream sockOut = (SocketOutputStream)out; // First write header and checksums sockOut.write(buf, headerOff, dataOff - headerOff); // no need to flush since we know out is not a buffered stream FileChannel fileCh = ((FileInputStream)blockIn).getChannel(); LongWritable waitTime = new LongWritable(); LongWritable transferTime = new LongWritable(); sockOut.transferToFully(fileCh, blockInPosition, dataLen, waitTime, transferTime); datanode.metrics.addSendDataPacketBlockedOnNetworkNanos(waitTime.get()); datanode.metrics.addSendDataPacketTransferNanos(transferTime.get()); blockInPosition += dataLen; } else { // normal transfer out.write(buf, headerOff, dataOff + dataLen - headerOff); } } catch (IOException e) { if (e instanceof SocketTimeoutException) { /* * writing to client timed out. This happens if the client reads * part of a block and then decides not to read the rest (but leaves * the socket open). * * Reporting of this case is done in DataXceiver#run */ } else { /* Exception while writing to the client. Connection closure from * the other end is mostly the case and we do not care much about * it. But other things can go wrong, especially in transferTo(), * which we do not
[jira] [Updated] (HDFS-15206) HDFS synchronous reads from local file system
[ https://issues.apache.org/jira/browse/HDFS-15206?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Mania Abdi updated HDFS-15206: -- Description: Hello everyone, I ran a simple benchmark with runs ``` hadoop fs -get /file1.txt ```, and file1.txt has 1MB size and I capture the workflow of requests using XTrace. By evaluating the workflow trace, I noticed that datanode issues 64KB synchronous read request to local file system to read the data, and sends the data back and waits for completion. I had a code walk over HDFS code to verify the pattern and it was correct. I want to have two suggestions, (1) since each file in HDFS block size is usually 128MB, We could use the mmap mapping via FileChannel class to load the file into memory and enable file system prefetching and look ahead in background, instead of synchronously reading from disk. The second suggestion is to use asynchronous read operations to local disk of the datanode. I was wondering if there is a logic behind synchronous reads from the file system? Code: $HADOOP_SRC/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java line 586 {code:java} /** * Sends a packet with up to maxChunks chunks of data. * * @param pkt buffer used for writing packet data * @param maxChunks maximum number of chunks to send * @param out stream to send data to * @param transferTo use transferTo to send data * @param throttler used for throttling data transfer bandwidth */ private int sendPacket(ByteBuffer pkt, int maxChunks, OutputStream out, boolean transferTo, DataTransferThrottler throttler) throws IOException { int dataLen = (int) Math.min(endOffset - offset, (chunkSize * (long) maxChunks)); int numChunks = numberOfChunks(dataLen); // Number of chunks be sent in the packet int checksumDataLen = numChunks * checksumSize; int packetLen = dataLen + checksumDataLen + 4; boolean lastDataPacket = offset + dataLen == endOffset && dataLen > 0; // The packet buffer is organized as follows: // ___D?D?D?D? //^ ^ //| \ checksumOff //\ headerOff // _ padding, since the header is variable-length // H = header and length prefixes // C = checksums // D? = data, if transferTo is false. int headerLen = writePacketHeader(pkt, dataLen, packetLen); // Per above, the header doesn't start at the beginning of the // buffer int headerOff = pkt.position() - headerLen; int checksumOff = pkt.position(); byte[] buf = pkt.array(); if (checksumSize > 0 && checksumIn != null) { readChecksum(buf, checksumOff, checksumDataLen); // write in progress that we need to use to get last checksum if (lastDataPacket && lastChunkChecksum != null) { int start = checksumOff + checksumDataLen - checksumSize; byte[] updatedChecksum = lastChunkChecksum.getChecksum(); if (updatedChecksum != null) { System.arraycopy(updatedChecksum, 0, buf, start, checksumSize); } } } int dataOff = checksumOff + checksumDataLen; if (!transferTo) { // normal transfer IOUtils.readFully(blockIn, buf, dataOff, dataLen); if (verifyChecksum) { verifyChecksum(buf, dataOff, dataLen, numChunks, checksumOff); } } try { if (transferTo) { SocketOutputStream sockOut = (SocketOutputStream)out; // First write header and checksums sockOut.write(buf, headerOff, dataOff - headerOff); // no need to flush since we know out is not a buffered stream FileChannel fileCh = ((FileInputStream)blockIn).getChannel(); LongWritable waitTime = new LongWritable(); LongWritable transferTime = new LongWritable(); sockOut.transferToFully(fileCh, blockInPosition, dataLen, waitTime, transferTime); datanode.metrics.addSendDataPacketBlockedOnNetworkNanos(waitTime.get()); datanode.metrics.addSendDataPacketTransferNanos(transferTime.get()); blockInPosition += dataLen; } else { // normal transfer out.write(buf, headerOff, dataOff + dataLen - headerOff); } } catch (IOException e) { if (e instanceof SocketTimeoutException) { /* * writing to client timed out. This happens if the client reads * part of a block and then decides not to read the rest (but leaves * the socket open). * * Reporting of this case is done in DataXceiver#run */ } else { /* Exception while writing to the client. Connection closure from * the other end is mostly the case and we do not care much about * it. But other things can go wrong, especially in transferTo(), * which we do not
[jira] [Created] (HDFS-15206) HDFS synchronous reads from local file system
Mania Abdi created HDFS-15206: - Summary: HDFS synchronous reads from local file system Key: HDFS-15206 URL: https://issues.apache.org/jira/browse/HDFS-15206 Project: Hadoop HDFS Issue Type: Improvement Environment: !Screenshot from 2020-03-03 22-07-26.png! Reporter: Mania Abdi Attachments: Screenshot from 2020-03-03 22-07-26.png Hello everyone, I ran a simple benchmark with runs ``` hadoop fs -get /file1.txt ```, and file1.txt has 1MB size and I capture the workflow of requests using XTrace. By evaluating the workflow trace, I noticed that datanode issues 64KB synchronous read request to local file system to read the data, and sends the data back and waits for completion. I had a code walk over HDFS code to verify the pattern and it was correct. I want to have two suggestions, (1) since each file in HDFS block size is usually 128MB, We could use the mmap mapping via FileChannel class to load the file into memory and enable file system prefetching and look ahead in background, instead of synchronously reading from disk. The second suggestion is to use asynchronous read operations to local disk of the datanode. I was wondering if there is a logic behind synchronous reads from the file system? Code: XTrace: [http://brownsys.github.io/tracing-framework/xtrace/server/] -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-15200) Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage
[ https://issues.apache.org/jira/browse/HDFS-15200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050729#comment-17050729 ] Akira Ajisaka commented on HDFS-15200: -- Thanks [~ayushtkn] for your patch. {code} DFS_NAMENODE_CORRUPT_BLOCK_DELETE_IMMEDIATELY_ENABLED_DEFAULT = false; {code} Is it true? > Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage > - > > Key: HDFS-15200 > URL: https://issues.apache.org/jira/browse/HDFS-15200 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Ayush Saxena >Assignee: Ayush Saxena >Priority: Critical > Attachments: HDFS-15200-01.patch, HDFS-15200-02.patch > > > Presently {{invalidateBlock(..)}} before adding a replica into invalidates, > checks whether any block replica is on stale storage, if any replica is on > stale storage, it postpones deletion of the replica. > Here : > {code:java} >// Check how many copies we have of the block > if (nr.replicasOnStaleNodes() > 0) { > blockLog.debug("BLOCK* invalidateBlocks: postponing " + > "invalidation of {} on {} because {} replica(s) are located on " + > "nodes with potentially out-of-date block reports", b, dn, > nr.replicasOnStaleNodes()); > postponeBlock(b.getCorrupted()); > return false; > {code} > > In case of corrupt replica, we can skip this logic and delete the corrupt > replica immediately, as a corrupt replica can't get corrected. > One outcome of this behavior presently is namenodes showing different block > states post failover, as: > If a replica is marked corrupt, the Active NN, will mark it as corrupt, and > mark it for deletion and remove it from corruptReplica's and > excessRedundancyMap. > If before the deletion of replica, Failover happens. > The standby Namenode will mark all the storages as stale. > Then will start processing IBR's, Now since the replica's would be on stale > storage, it will skip deletion, and removal from corruptReplica's > Hence both the namenode will show different numbers and different corrupt > replicas. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-15205) FSImage sort section logic is wrong
[ https://issues.apache.org/jira/browse/HDFS-15205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050709#comment-17050709 ] Wei-Chiu Chuang commented on HDFS-15205: Upgrade to blocker to raise awareness. The code in question was written back in 2014 (HDFS-5698). Unsure how this is only exposed now. > FSImage sort section logic is wrong > --- > > Key: HDFS-15205 > URL: https://issues.apache.org/jira/browse/HDFS-15205 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: angerszhu >Priority: Blocker > Attachments: HDFS-15205.001.patch > > > When load FSImage, it will sort sections in FileSummary and load Section's in > SectionName enum sequence. But the sort method is wrong , when I use > branch-2.6.0 to load fsimage write by branch-2 with patch > https://issues.apache.org/jira/browse/HDFS-14771, it will throw NPE because > it load INODE first > {code:java} > 2020-03-03 14:33:26,618 ERROR > org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode. > java.lang.NullPointerException > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadPermission(FSImageFormatPBINode.java:101) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeDirectory(FSImageFormatPBINode.java:148) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadRootINode(FSImageFormatPBINode.java:332) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeSection(FSImageFormatPBINode.java:218) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.loadInternal(FSImageFormatProtobuf.java:254) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.load(FSImageFormatProtobuf.java:180) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:226) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1036) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1020) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:741) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:677) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:290) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1092) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:780) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:609) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:666) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:838) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:817) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1538) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1606) > {code} > I print the load order: > {code:java} > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE, > offset = 37, length = 11790829 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 37, length = 826591 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 826628, length = 828192 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 1654820, length = 835240 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 2490060, length = 833630 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 3323690, length = 909445 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 4233135, length = 866147 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 5099282, length = 1272751 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 6372033, length = 1311876 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 7683909, length = 1251510 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 8935419, length =
[jira] [Commented] (HDFS-15205) FSImage sort section logic is wrong
[ https://issues.apache.org/jira/browse/HDFS-15205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050706#comment-17050706 ] Wei-Chiu Chuang commented on HDFS-15205: [~hexiaoqiao] [~sodonnell] mind to take a look? > FSImage sort section logic is wrong > --- > > Key: HDFS-15205 > URL: https://issues.apache.org/jira/browse/HDFS-15205 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: angerszhu >Priority: Major > Attachments: HDFS-15205.001.patch > > > When load FSImage, it will sort sections in FileSummary and load Section's in > SectionName enum sequence. But the sort method is wrong , when I use > branch-2.6.0 to load fsimage write by branch-2 with patch > https://issues.apache.org/jira/browse/HDFS-14771, it will throw NPE because > it load INODE first > {code:java} > 2020-03-03 14:33:26,618 ERROR > org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode. > java.lang.NullPointerException > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadPermission(FSImageFormatPBINode.java:101) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeDirectory(FSImageFormatPBINode.java:148) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadRootINode(FSImageFormatPBINode.java:332) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeSection(FSImageFormatPBINode.java:218) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.loadInternal(FSImageFormatProtobuf.java:254) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.load(FSImageFormatProtobuf.java:180) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:226) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1036) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1020) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:741) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:677) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:290) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1092) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:780) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:609) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:666) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:838) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:817) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1538) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1606) > {code} > I print the load order: > {code:java} > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE, > offset = 37, length = 11790829 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 37, length = 826591 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 826628, length = 828192 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 1654820, length = 835240 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 2490060, length = 833630 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 3323690, length = 909445 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 4233135, length = 866147 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 5099282, length = 1272751 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 6372033, length = 1311876 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 7683909, length = 1251510 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 8935419, length = 1296120 ] > 2020-03-03 15:49:36,424 INFO >
[jira] [Updated] (HDFS-15205) FSImage sort section logic is wrong
[ https://issues.apache.org/jira/browse/HDFS-15205?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Wei-Chiu Chuang updated HDFS-15205: --- Priority: Blocker (was: Major) > FSImage sort section logic is wrong > --- > > Key: HDFS-15205 > URL: https://issues.apache.org/jira/browse/HDFS-15205 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: angerszhu >Priority: Blocker > Attachments: HDFS-15205.001.patch > > > When load FSImage, it will sort sections in FileSummary and load Section's in > SectionName enum sequence. But the sort method is wrong , when I use > branch-2.6.0 to load fsimage write by branch-2 with patch > https://issues.apache.org/jira/browse/HDFS-14771, it will throw NPE because > it load INODE first > {code:java} > 2020-03-03 14:33:26,618 ERROR > org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode. > java.lang.NullPointerException > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadPermission(FSImageFormatPBINode.java:101) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeDirectory(FSImageFormatPBINode.java:148) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadRootINode(FSImageFormatPBINode.java:332) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeSection(FSImageFormatPBINode.java:218) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.loadInternal(FSImageFormatProtobuf.java:254) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.load(FSImageFormatProtobuf.java:180) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:226) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1036) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1020) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:741) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:677) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:290) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1092) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:780) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:609) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:666) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:838) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:817) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1538) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1606) > {code} > I print the load order: > {code:java} > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE, > offset = 37, length = 11790829 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 37, length = 826591 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 826628, length = 828192 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 1654820, length = 835240 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 2490060, length = 833630 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 3323690, length = 909445 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 4233135, length = 866147 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 5099282, length = 1272751 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 6372033, length = 1311876 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 7683909, length = 1251510 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 8935419, length = 1296120 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset =
[jira] [Updated] (HDFS-15205) FSImage sort section logic is wrong
[ https://issues.apache.org/jira/browse/HDFS-15205?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] angerszhu updated HDFS-15205: - Attachment: HDFS-15205.001.patch > FSImage sort section logic is wrong > --- > > Key: HDFS-15205 > URL: https://issues.apache.org/jira/browse/HDFS-15205 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: angerszhu >Priority: Major > Attachments: HDFS-15205.001.patch > > > When load FSImage, it will sort sections in FileSummary and load Section's in > SectionName enum sequence. But the sort method is wrong , when I use > branch-2.6.0 to load fsimage write by branch-2 with patch > https://issues.apache.org/jira/browse/HDFS-14771, it will throw NPE because > it load INODE first > {code:java} > 2020-03-03 14:33:26,618 ERROR > org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode. > java.lang.NullPointerException > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadPermission(FSImageFormatPBINode.java:101) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeDirectory(FSImageFormatPBINode.java:148) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadRootINode(FSImageFormatPBINode.java:332) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeSection(FSImageFormatPBINode.java:218) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.loadInternal(FSImageFormatProtobuf.java:254) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.load(FSImageFormatProtobuf.java:180) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:226) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1036) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1020) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:741) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:677) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:290) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1092) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:780) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:609) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:666) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:838) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:817) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1538) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1606) > {code} > I print the load order: > {code:java} > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE, > offset = 37, length = 11790829 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 37, length = 826591 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 826628, length = 828192 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 1654820, length = 835240 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 2490060, length = 833630 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 3323690, length = 909445 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 4233135, length = 866147 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 5099282, length = 1272751 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 6372033, length = 1311876 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 7683909, length = 1251510 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 8935419, length = 1296120 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 10231539, length =
[jira] [Commented] (HDFS-15205) FSImage sort section logic is wrong
[ https://issues.apache.org/jira/browse/HDFS-15205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050685#comment-17050685 ] angerszhu commented on HDFS-15205: -- I check to code of sorting section {code:java} Collections.sort(sections, new Comparator() { @Override public int compare(FileSummary.Section s1, FileSummary.Section s2) { SectionName n1 = SectionName.fromString(s1.getName()); SectionName n2 = SectionName.fromString(s2.getName()); if (n1 == null) { return n2 == null ? 0 : -1; } else if (n2 == null) { return -1; } else { return n1.ordinal() - n2.ordinal(); } } }); {code} it's wrong , it should be {code:java} Collections.sort(sections, new Comparator() { @Override public int compare(FileSummary.Section s1, FileSummary.Section s2) { SectionName n1 = SectionName.fromString(s1.getName()); SectionName n2 = SectionName.fromString(s2.getName()); if (n1 == null) { return n2 == null ? 0 : -1; } else if (n2 == null) { return 1; } else { return n1.ordinal() - n2.ordinal(); } } }); {code} > FSImage sort section logic is wrong > --- > > Key: HDFS-15205 > URL: https://issues.apache.org/jira/browse/HDFS-15205 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: angerszhu >Priority: Major > > When load FSImage, it will sort sections in FileSummary and load Section's in > SectionName enum sequence. But the sort method is wrong , when I use > branch-2.6.0 to load fsimage write by branch-2 with patch > https://issues.apache.org/jira/browse/HDFS-14771, it will throw NPE because > it load INODE first > {code:java} > 2020-03-03 14:33:26,618 ERROR > org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode. > java.lang.NullPointerException > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadPermission(FSImageFormatPBINode.java:101) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeDirectory(FSImageFormatPBINode.java:148) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadRootINode(FSImageFormatPBINode.java:332) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeSection(FSImageFormatPBINode.java:218) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.loadInternal(FSImageFormatProtobuf.java:254) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.load(FSImageFormatProtobuf.java:180) > at > org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:226) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1036) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1020) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:741) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:677) > at > org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:290) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1092) > at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:780) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:609) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:666) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:838) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:817) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1538) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1606) > {code} > I print the load order: > {code:java} > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE, > offset = 37, length = 11790829 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 37, length = 826591 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 826628, length = 828192 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 1654820, length = 835240 ] > 2020-03-03 15:49:36,424 INFO > org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = > INODE_SUB, offset = 2490060, length = 833630 ] > 2020-03-03
[jira] [Updated] (HDFS-15205) FSImage sort section logic is wrong
[ https://issues.apache.org/jira/browse/HDFS-15205?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] angerszhu updated HDFS-15205: - Description: When load FSImage, it will sort sections in FileSummary and load Section's in SectionName enum sequence. But the sort method is wrong , when I use branch-2.6.0 to load fsimage write by branch-2 with patch https://issues.apache.org/jira/browse/HDFS-14771, it will throw NPE because it load INODE first {code:java} 2020-03-03 14:33:26,618 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode. java.lang.NullPointerException at org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadPermission(FSImageFormatPBINode.java:101) at org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeDirectory(FSImageFormatPBINode.java:148) at org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadRootINode(FSImageFormatPBINode.java:332) at org.apache.hadoop.hdfs.server.namenode.FSImageFormatPBINode$Loader.loadINodeSection(FSImageFormatPBINode.java:218) at org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.loadInternal(FSImageFormatProtobuf.java:254) at org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf$Loader.load(FSImageFormatProtobuf.java:180) at org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:226) at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1036) at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:1020) at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:741) at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:677) at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:290) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1092) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:780) at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:609) at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:666) at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:838) at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:817) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1538) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1606) {code} I print the load order: {code:java} 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE, offset = 37, length = 11790829 ] 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_SUB, offset = 37, length = 826591 ] 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_SUB, offset = 826628, length = 828192 ] 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_SUB, offset = 1654820, length = 835240 ] 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_SUB, offset = 2490060, length = 833630 ] 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_SUB, offset = 3323690, length = 909445 ] 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_SUB, offset = 4233135, length = 866147 ] 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_SUB, offset = 5099282, length = 1272751 ] 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_SUB, offset = 6372033, length = 1311876 ] 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_SUB, offset = 7683909, length = 1251510 ] 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_SUB, offset = 8935419, length = 1296120 ] 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_SUB, offset = 10231539, length = 770082 ] 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_SUB, offset = 11001621, length = 789245 ] 2020-03-03 15:49:36,424 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_DIR_SUB, offset = 11790866, length = 67038 ] 2020-03-03 15:49:36,425 INFO org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf: [name = INODE_DIR_SUB, offset = 11857904, length = 84692 ] 2020-03-03 15:49:36,425 INFO
[jira] [Created] (HDFS-15205) FSImage sort section logic is wrong
angerszhu created HDFS-15205: Summary: FSImage sort section logic is wrong Key: HDFS-15205 URL: https://issues.apache.org/jira/browse/HDFS-15205 Project: Hadoop HDFS Issue Type: Bug Reporter: angerszhu -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-15204) TestRetryCacheWithHA testRemoveCacheDescriptor fails intermittently
[ https://issues.apache.org/jira/browse/HDFS-15204?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050671#comment-17050671 ] Íñigo Goiri commented on HDFS-15204: The synchronization makes sense and the failed tests are unrelated. +1 on [^HDFS-15204.001.patch]. > TestRetryCacheWithHA testRemoveCacheDescriptor fails intermittently > --- > > Key: HDFS-15204 > URL: https://issues.apache.org/jira/browse/HDFS-15204 > Project: Hadoop HDFS > Issue Type: Bug > Components: hdfs >Reporter: Ahmed Hussein >Assignee: Ahmed Hussein >Priority: Major > Attachments: HDFS-15204-branch-2.10.001.patch, HDFS-15204.001.patch > > > {code:bash} > testRemoveCacheDescriptor: > java.lang.AssertionError: CacheHit: 0, 0 > at org.junit.Assert.fail(Assert.java:88) > at org.junit.Assert.assertTrue(Assert.java:41) > at > org.apache.hadoop.hdfs.server.namenode.ha.TestRetryCacheWithHA.testClientRetryWithFailover(TestRetryCacheWithHA.java:1344) > at > org.apache.hadoop.hdfs.server.namenode.ha.TestRetryCacheWithHA.testRemoveCacheDescriptor(TestRetryCacheWithHA.java:1245) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) > at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) > at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) > at > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) > at > org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74) > > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-15204) TestRetryCacheWithHA testRemoveCacheDescriptor fails intermittently
[ https://issues.apache.org/jira/browse/HDFS-15204?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050652#comment-17050652 ] Hadoop QA commented on HDFS-15204: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 25s{color} | {color:blue} Docker mode activated. {color} | || || || || {color:brown} Prechecks {color} || | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m 0s{color} | {color:green} The patch does not contain any @author tags. {color} | | {color:green}+1{color} | {color:green} test4tests {color} | {color:green} 0m 0s{color} | {color:green} The patch appears to include 1 new or modified test files. {color} | || || || || {color:brown} trunk Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 17m 44s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 1s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 43s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 8s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 14m 40s{color} | {color:green} branch has no errors when building and testing our client artifacts. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 2m 41s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 43s{color} | {color:green} trunk passed {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 0m 58s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 55s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 55s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 36s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 0s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} whitespace {color} | {color:green} 0m 1s{color} | {color:green} The patch has no whitespace issues. {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 12m 50s{color} | {color:green} patch has no errors when building and testing our client artifacts. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 2m 45s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 40s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red} 93m 38s{color} | {color:red} hadoop-hdfs in the patch passed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 38s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}153m 21s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.TestEncryptionZones | | | hadoop.hdfs.TestEncryptionZonesWithKMS | \\ \\ || Subsystem || Report/Notes || | Docker | Client=19.03.6 Server=19.03.6 Image:yetus/hadoop:c44943d1fc3 | | JIRA Issue | HDFS-15204 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12995505/HDFS-15204.001.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle | | uname | Linux e6a3dc1b0644 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/patchprocess/precommit/personality/provided.sh | | git revision | trunk / d0a7c79 | | maven | version: Apache Maven 3.3.9 | | Default Java | 1.8.0_242 | | findbugs | v3.1.0-RC1 | | unit | https://builds.apache.org/job/PreCommit-HDFS-Build/28892/artifact/out/patch-unit-hadoop-hdfs-project_hadoop-hdfs.txt | | Test Results | https://builds.apache.org/job/PreCommit-HDFS-Build/28892/testReport/ | | Max. process+thread count | 4333 (vs. ulimit of 5500) | | modules | C: hadoop-hdfs-project/hadoop-hdfs U: hadoop-hdfs-project/hadoop-hdfs | | Console output | https://builds.apache.org/job/PreCommit-HDFS-Build/28892/console | | Powered by | Apache Yetus 0.8.0
[jira] [Commented] (HDFS-15200) Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage
[ https://issues.apache.org/jira/browse/HDFS-15200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050634#comment-17050634 ] Hadoop QA commented on HDFS-15200: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 1m 11s{color} | {color:blue} Docker mode activated. {color} | || || || || {color:brown} Prechecks {color} || | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m 0s{color} | {color:green} The patch does not contain any @author tags. {color} | | {color:green}+1{color} | {color:green} test4tests {color} | {color:green} 0m 0s{color} | {color:green} The patch appears to include 3 new or modified test files. {color} | || || || || {color:brown} trunk Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 23m 3s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 21s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 1m 2s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 31s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 19m 28s{color} | {color:green} branch has no errors when building and testing our client artifacts. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 3m 39s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 49s{color} | {color:green} trunk passed {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 1m 17s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 18s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 1m 18s{color} | {color:green} the patch passed {color} | | {color:orange}-0{color} | {color:orange} checkstyle {color} | {color:orange} 0m 59s{color} | {color:orange} hadoop-hdfs-project/hadoop-hdfs: The patch generated 1 new + 633 unchanged - 0 fixed = 634 total (was 633) {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 19s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} whitespace {color} | {color:green} 0m 0s{color} | {color:green} The patch has no whitespace issues. {color} | | {color:green}+1{color} | {color:green} xml {color} | {color:green} 0m 1s{color} | {color:green} The patch has no ill-formed XML file. {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 16m 29s{color} | {color:green} patch has no errors when building and testing our client artifacts. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 4m 33s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 46s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red}143m 1s{color} | {color:red} hadoop-hdfs in the patch passed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 45s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}225m 23s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.server.datanode.TestDataNodeUUID | | | hadoop.hdfs.server.namenode.TestDeleteRace | | | hadoop.hdfs.server.datanode.TestIncrementalBlockReports | | | hadoop.hdfs.server.datanode.TestDataNodeVolumeFailure | | | hadoop.hdfs.TestEncryptionZonesWithKMS | | | hadoop.hdfs.server.datanode.TestDirectoryScanner | | | hadoop.hdfs.server.namenode.TestFileTruncate | | | hadoop.hdfs.server.datanode.fsdataset.impl.TestSpaceReservation | | | hadoop.hdfs.server.datanode.TestDataNodeMetrics | | | hadoop.hdfs.TestEncryptionZones | | | hadoop.hdfs.TestRollingUpgrade | | | hadoop.hdfs.server.datanode.TestIncrementalBrVariations | \\ \\ || Subsystem || Report/Notes || | Docker | Client=19.03.6 Server=19.03.6 Image:yetus/hadoop:c44943d1fc3 | | JIRA Issue | HDFS-15200 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12995500/HDFS-15200-02.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle xml | | uname | Linux
[jira] [Commented] (HDFS-15204) TestRetryCacheWithHA testRemoveCacheDescriptor fails intermittently
[ https://issues.apache.org/jira/browse/HDFS-15204?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050630#comment-17050630 ] Hadoop QA commented on HDFS-15204: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 17m 2s{color} | {color:blue} Docker mode activated. {color} | || || || || {color:brown} Prechecks {color} || | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m 0s{color} | {color:green} The patch does not contain any @author tags. {color} | | {color:green}+1{color} | {color:green} test4tests {color} | {color:green} 0m 0s{color} | {color:green} The patch appears to include 1 new or modified test files. {color} | || || || || {color:brown} branch-2.10 Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 27m 38s{color} | {color:green} branch-2.10 passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 32s{color} | {color:green} branch-2.10 passed with JDK v1.7.0_95 {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 2m 4s{color} | {color:green} branch-2.10 passed with JDK v1.8.0_242 {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 55s{color} | {color:green} branch-2.10 passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 2m 56s{color} | {color:green} branch-2.10 passed {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 4m 2s{color} | {color:green} branch-2.10 passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 9s{color} | {color:green} branch-2.10 passed with JDK v1.7.0_95 {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 41s{color} | {color:green} branch-2.10 passed with JDK v1.8.0_242 {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 0m 48s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 49s{color} | {color:green} the patch passed with JDK v1.7.0_95 {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 49s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 44s{color} | {color:green} the patch passed with JDK v1.8.0_242 {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 44s{color} | {color:green} the patch passed {color} | | {color:orange}-0{color} | {color:orange} checkstyle {color} | {color:orange} 0m 24s{color} | {color:orange} hadoop-hdfs-project/hadoop-hdfs: The patch generated 4 new + 38 unchanged - 0 fixed = 42 total (was 38) {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 0m 49s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} whitespace {color} | {color:green} 0m 0s{color} | {color:green} The patch has no whitespace issues. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 2m 9s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 5s{color} | {color:green} the patch passed with JDK v1.7.0_95 {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 40s{color} | {color:green} the patch passed with JDK v1.8.0_242 {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red} 58m 11s{color} | {color:red} hadoop-hdfs in the patch failed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 27s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}126m 32s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.qjournal.server.TestJournalNodeRespectsBindHostKeys | | | hadoop.hdfs.server.datanode.TestDirectoryScanner | | | hadoop.hdfs.server.namenode.ha.TestSeveralNameNodes | \\ \\ || Subsystem || Report/Notes || | Docker | Client=19.03.6 Server=19.03.6 Image:yetus/hadoop:a969cad0a12 | | JIRA Issue | HDFS-15204 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12995504/HDFS-15204-branch-2.10.001.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle | | uname | Linux 477b5e57252f 4.15.0-74-generic #84-Ubuntu SMP Thu Dec 19 08:06:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | |
[jira] [Updated] (HDFS-15204) TestRetryCacheWithHA testRemoveCacheDescriptor fails intermittently
[ https://issues.apache.org/jira/browse/HDFS-15204?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ahmed Hussein updated HDFS-15204: - Attachment: HDFS-15204.001.patch > TestRetryCacheWithHA testRemoveCacheDescriptor fails intermittently > --- > > Key: HDFS-15204 > URL: https://issues.apache.org/jira/browse/HDFS-15204 > Project: Hadoop HDFS > Issue Type: Bug > Components: hdfs >Reporter: Ahmed Hussein >Assignee: Ahmed Hussein >Priority: Major > Attachments: HDFS-15204-branch-2.10.001.patch, HDFS-15204.001.patch > > > {code:bash} > testRemoveCacheDescriptor: > java.lang.AssertionError: CacheHit: 0, 0 > at org.junit.Assert.fail(Assert.java:88) > at org.junit.Assert.assertTrue(Assert.java:41) > at > org.apache.hadoop.hdfs.server.namenode.ha.TestRetryCacheWithHA.testClientRetryWithFailover(TestRetryCacheWithHA.java:1344) > at > org.apache.hadoop.hdfs.server.namenode.ha.TestRetryCacheWithHA.testRemoveCacheDescriptor(TestRetryCacheWithHA.java:1245) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) > at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) > at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) > at > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) > at > org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74) > > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-15204) TestRetryCacheWithHA testRemoveCacheDescriptor fails intermittently
[ https://issues.apache.org/jira/browse/HDFS-15204?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ahmed Hussein updated HDFS-15204: - Attachment: HDFS-15204-branch-2.10.001.patch Status: Patch Available (was: Open) > TestRetryCacheWithHA testRemoveCacheDescriptor fails intermittently > --- > > Key: HDFS-15204 > URL: https://issues.apache.org/jira/browse/HDFS-15204 > Project: Hadoop HDFS > Issue Type: Bug > Components: hdfs >Reporter: Ahmed Hussein >Assignee: Ahmed Hussein >Priority: Major > Attachments: HDFS-15204-branch-2.10.001.patch > > > {code:bash} > testRemoveCacheDescriptor: > java.lang.AssertionError: CacheHit: 0, 0 > at org.junit.Assert.fail(Assert.java:88) > at org.junit.Assert.assertTrue(Assert.java:41) > at > org.apache.hadoop.hdfs.server.namenode.ha.TestRetryCacheWithHA.testClientRetryWithFailover(TestRetryCacheWithHA.java:1344) > at > org.apache.hadoop.hdfs.server.namenode.ha.TestRetryCacheWithHA.testRemoveCacheDescriptor(TestRetryCacheWithHA.java:1245) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) > at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) > at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) > at > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) > at > org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74) > > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Created] (HDFS-15204) TestRetryCacheWithHA testRemoveCacheDescriptor fails intermittently
Ahmed Hussein created HDFS-15204: Summary: TestRetryCacheWithHA testRemoveCacheDescriptor fails intermittently Key: HDFS-15204 URL: https://issues.apache.org/jira/browse/HDFS-15204 Project: Hadoop HDFS Issue Type: Bug Components: hdfs Reporter: Ahmed Hussein Assignee: Ahmed Hussein {code:bash} testRemoveCacheDescriptor: java.lang.AssertionError: CacheHit: 0, 0 at org.junit.Assert.fail(Assert.java:88) at org.junit.Assert.assertTrue(Assert.java:41) at org.apache.hadoop.hdfs.server.namenode.ha.TestRetryCacheWithHA.testClientRetryWithFailover(TestRetryCacheWithHA.java:1344) at org.apache.hadoop.hdfs.server.namenode.ha.TestRetryCacheWithHA.testRemoveCacheDescriptor(TestRetryCacheWithHA.java:1245) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74) {code} -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14977) Quota Usage and Content summary are not same in Truncate with Snapshot
[ https://issues.apache.org/jira/browse/HDFS-14977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050538#comment-17050538 ] Hadoop QA commented on HDFS-14977: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 1m 8s{color} | {color:blue} Docker mode activated. {color} | || || || || {color:brown} Prechecks {color} || | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m 0s{color} | {color:green} The patch does not contain any @author tags. {color} | | {color:green}+1{color} | {color:green} test4tests {color} | {color:green} 0m 0s{color} | {color:green} The patch appears to include 1 new or modified test files. {color} | || || || || {color:brown} trunk Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 24m 15s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 19s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 54s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 20s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 18m 20s{color} | {color:green} branch has no errors when building and testing our client artifacts. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 3m 15s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 51s{color} | {color:green} trunk passed {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 1m 22s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 11s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 1m 11s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 44s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 24s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} whitespace {color} | {color:green} 0m 0s{color} | {color:green} The patch has no whitespace issues. {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 16m 32s{color} | {color:green} patch has no errors when building and testing our client artifacts. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 3m 35s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 55s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red}116m 53s{color} | {color:red} hadoop-hdfs in the patch passed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 32s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}194m 50s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.server.blockmanagement.TestBlockTokenWithDFSStriped | | | hadoop.hdfs.TestEncryptionZonesWithKMS | | | hadoop.hdfs.qjournal.server.TestJournalNodeSync | | | hadoop.hdfs.TestReconstructStripedFile | | | hadoop.hdfs.TestEncryptionZones | \\ \\ || Subsystem || Report/Notes || | Docker | Client=19.03.6 Server=19.03.6 Image:yetus/hadoop:c44943d1fc3 | | JIRA Issue | HDFS-14977 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12995486/HDFS-14977.003.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle | | uname | Linux 830a4b4932ba 4.15.0-74-generic #84-Ubuntu SMP Thu Dec 19 08:06:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/patchprocess/precommit/personality/provided.sh | | git revision | trunk / d0a7c79 | | maven | version: Apache Maven 3.3.9 | | Default Java | 1.8.0_242 | | findbugs | v3.1.0-RC1 | | unit | https://builds.apache.org/job/PreCommit-HDFS-Build/2/artifact/out/patch-unit-hadoop-hdfs-project_hadoop-hdfs.txt | | Test Results | https://builds.apache.org/job/PreCommit-HDFS-Build/2/testReport/ | | Max. process+thread count | 2848 (vs. ulimit of 5500) | | modules | C:
[jira] [Updated] (HDFS-15202) HDFS-client: boost ShortCircuit Cache
[ https://issues.apache.org/jira/browse/HDFS-15202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Wei-Chiu Chuang updated HDFS-15202: --- Component/s: dfsclient > HDFS-client: boost ShortCircuit Cache > - > > Key: HDFS-15202 > URL: https://issues.apache.org/jira/browse/HDFS-15202 > Project: Hadoop HDFS > Issue Type: Improvement > Components: dfsclient > Environment: 4 nodes E5-2698 v4 @ 2.20GHz, 700 Gb Mem. > 8 RegionServers (2 by host) > 8 tables by 64 regions by 1.88 Gb data in each = 900 Gb total > Random read in 800 threads via YCSB and a little bit updates (10% of reads) >Reporter: Danil Lipovoy >Assignee: Danil Lipovoy >Priority: Minor > Attachments: hdfs_cpu.png, hdfs_reads.png > > > I want to propose how to improve reading performance HDFS-client. The idea: > create few instances ShortCircuit caches instead of one. > The key points: > 1. Create array of caches (set by > clientShortCircuitNum=*dfs.client.short.circuit.num*, see in the pull > requests below): > {code:java} > private ClientContext(String name, DfsClientConf conf, Configuration config) { > ... > shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; > for (int i = 0; i < this.clientShortCircuitNum; i++) { > this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); > } > {code} > 2 Then divide blocks by caches: > {code:java} > public ShortCircuitCache getShortCircuitCache(long idx) { > return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; > } > {code} > 3. And how to call it: > {code:java} > ShortCircuitCache cache = > clientContext.getShortCircuitCache(block.getBlockId()); > {code} > The last number of offset evenly distributed from 0 to 9 - that's why all > caches will full approximately the same. > It is good for performance. Below the attachment, it is load test reading > HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that > performance grows ~30%, CPU usage about +15%. > Hope it is interesting for someone. > Ready to explain some unobvious things. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Assigned] (HDFS-14809) Reduce BlockReaderLocal RPC calls
[ https://issues.apache.org/jira/browse/HDFS-14809?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Wei-Chiu Chuang reassigned HDFS-14809: -- Assignee: KenCao (was: kencao) > Reduce BlockReaderLocal RPC calls > - > > Key: HDFS-14809 > URL: https://issues.apache.org/jira/browse/HDFS-14809 > Project: Hadoop HDFS > Issue Type: New Feature >Affects Versions: 2.6.0 >Reporter: KenCao >Assignee: KenCao >Priority: Major > Attachments: HADOOP-14809 > > > as we known, the hdfs client java lib uses BlockReaderLocal for short circuit > read by default, which allocate shared memory first, and make a slot within > it. After all these steps, it will request the fds from the DataNode. > However, the slot and shared memory sturcture is only used by DataNode when > uncaching replicas, the client process can work well just with the fds asked > later and it is nearly impossible to cache replicas in product environment. > The api to release fds is called by client only with the slot given, the fds > is close in the client process finally. > so i think we can make a new BlockReader implementation which just requests > the fds, and it will reduce the rpc calls from 3(allocate shm, request fds, > release fds) to 1(request fds). -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Comment Edited] (HDFS-14820) The default 8KB buffer of BlockReaderRemote#newBlockReader#BufferedOutputStream is too big
[ https://issues.apache.org/jira/browse/HDFS-14820?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050517#comment-17050517 ] Wei-Chiu Chuang edited comment on HDFS-14820 at 3/3/20 8:16 PM: The current implementation is, DFS client sends a request (which is short) to DataNode asking for a block using an output stream. After that, client receives block data DataNode (which can be several MBs long) using an input stream. This patch changes the buffer size of the former, the output stream. There is absolutely no reason to use a 8kb buffer size for this stream. For the input stream, yes what [~eyang] says makes sense. The following is the code snippet for the data sent in each output stream) {code} OpReadBlockProto proto = OpReadBlockProto.newBuilder() .setHeader(DataTransferProtoUtil.buildClientHeader(blk, clientName, blockToken)) .setOffset(blockOffset) .setLen(length) .setSendChecksums(sendChecksum) .setCachingStrategy(getCachingStrategy(cachingStrategy)) .build(); {code} Also note that the stream objects are not recycled. One block is one output/input stream object. was (Author: jojochuang): The current implementation is, DFS client send a request (which is short) to DataNode asking for a block using an output stream. After that, client receives block data DataNode (which can be several MBs long) using an input stream. This patch changes the buffer size of the former, output stream. There is absolutely no reason to use a 8kb buffer size for this stream. The input stream, yes what [~eyang] says makes sense. {code} OpReadBlockProto proto = OpReadBlockProto.newBuilder() .setHeader(DataTransferProtoUtil.buildClientHeader(blk, clientName, blockToken)) .setOffset(blockOffset) .setLen(length) .setSendChecksums(sendChecksum) .setCachingStrategy(getCachingStrategy(cachingStrategy)) .build(); {code} Also note that the stream objects are not recycled. One block is one output/input stream object. > The default 8KB buffer of > BlockReaderRemote#newBlockReader#BufferedOutputStream is too big > --- > > Key: HDFS-14820 > URL: https://issues.apache.org/jira/browse/HDFS-14820 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Lisheng Sun >Assignee: Lisheng Sun >Priority: Major > Attachments: HDFS-14820.001.patch, HDFS-14820.002.patch, > HDFS-14820.003.patch > > > this issue is similar to HDFS-14535. > {code:java} > public static BlockReader newBlockReader(String file, > ExtendedBlock block, > Token blockToken, > long startOffset, long len, > boolean verifyChecksum, > String clientName, > Peer peer, DatanodeID datanodeID, > PeerCache peerCache, > CachingStrategy cachingStrategy, > int networkDistance) throws IOException { > // in and out will be closed when sock is closed (by the caller) > final DataOutputStream out = new DataOutputStream(new BufferedOutputStream( > peer.getOutputStream())); > new Sender(out).readBlock(block, blockToken, clientName, startOffset, len, > verifyChecksum, cachingStrategy); > } > public BufferedOutputStream(OutputStream out) { > this(out, 8192); > } > {code} > Sender#readBlock parameter( block,blockToken, clientName, startOffset, len, > verifyChecksum, cachingStrategy) could not use such a big buffer. > So i think it should reduce BufferedOutputStream buffer. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14809) Reduce BlockReaderLocal RPC calls
[ https://issues.apache.org/jira/browse/HDFS-14809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050525#comment-17050525 ] Hadoop QA commented on HDFS-14809: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 0s{color} | {color:blue} Docker mode activated. {color} | | {color:blue}0{color} | {color:blue} patch {color} | {color:blue} 0m 6s{color} | {color:blue} The patch file was not named according to hadoop's naming conventions. Please see https://wiki.apache.org/hadoop/HowToContribute for instructions. {color} | | {color:red}-1{color} | {color:red} patch {color} | {color:red} 0m 9s{color} | {color:red} HDFS-14809 does not apply to trunk. Rebase required? Wrong Branch? See https://wiki.apache.org/hadoop/HowToContribute for help. {color} | \\ \\ || Subsystem || Report/Notes || | JIRA Issue | HDFS-14809 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12979848/HADOOP-14809 | | Console output | https://builds.apache.org/job/PreCommit-HDFS-Build/28890/console | | Powered by | Apache Yetus 0.8.0 http://yetus.apache.org | This message was automatically generated. > Reduce BlockReaderLocal RPC calls > - > > Key: HDFS-14809 > URL: https://issues.apache.org/jira/browse/HDFS-14809 > Project: Hadoop HDFS > Issue Type: New Feature >Affects Versions: 2.6.0 >Reporter: KenCao >Assignee: kencao >Priority: Major > Attachments: HADOOP-14809 > > > as we known, the hdfs client java lib uses BlockReaderLocal for short circuit > read by default, which allocate shared memory first, and make a slot within > it. After all these steps, it will request the fds from the DataNode. > However, the slot and shared memory sturcture is only used by DataNode when > uncaching replicas, the client process can work well just with the fds asked > later and it is nearly impossible to cache replicas in product environment. > The api to release fds is called by client only with the slot given, the fds > is close in the client process finally. > so i think we can make a new BlockReader implementation which just requests > the fds, and it will reduce the rpc calls from 3(allocate shm, request fds, > release fds) to 1(request fds). -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-15196) RBF: RouterRpcServer getListing cannot list large dirs correctly
[ https://issues.apache.org/jira/browse/HDFS-15196?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050523#comment-17050523 ] Fengnan Li commented on HDFS-15196: --- Agree the order should be preserved. Just to be clear, I list out cases below. *Expected*: the order was lexicographical order of children names, including all namenode listing and mount points, even with batch listings. *Before this patch*: the order was lexicographical of children names plus mount points, with some namenode listings skipped or infinite loop. *After this patch*: before the last batch, the order is lexicographical. For the last batch, mount points is added into the structure which is a TreeMap indexed by the children names, thus the order is kept in this batch but not across batches. I think there are two ways this can be solved. # Clients call router once and all of the batch listing is controlled between router and namenode, thus with a global TreeMap the order is kept before sending back to clients. # Client side needs a change, ex. DistributedFileSystem.java to use a treemap instead of list to maintain the order. I think 1 is the way since we don't want to change the client logic What are your thoughts? [~elgoiri] [~ayushtkn] {quote}We may want to also test the limit in the Router side. {quote} What is the limit to test? > RBF: RouterRpcServer getListing cannot list large dirs correctly > > > Key: HDFS-15196 > URL: https://issues.apache.org/jira/browse/HDFS-15196 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Fengnan Li >Assignee: Fengnan Li >Priority: Critical > Attachments: HDFS-15196.001.patch, HDFS-15196.002.patch, > HDFS-15196.003.patch, HDFS-15196.003.patch, HDFS-15196.004.patch, > HDFS-15196.005.patch > > > In RouterRpcServer, getListing function is handled as two parts: > # Union all partial listings from destination ns + paths > # Append mount points for the dir to be listed > In the case of large dir which is bigger than DFSConfigKeys.DFS_LIST_LIMIT > (with default value 1k), the batch listing will be used and the startAfter > will be used to define the boundary of each batch listing. However, step 2 > here will add existing mount points, which will mess up with the boundary of > the batch, thus making the next batch startAfter wrong. > The fix is just to append the mount points when there is no more batch query > necessary. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-14809) Reduce BlockReaderLocal RPC calls
[ https://issues.apache.org/jira/browse/HDFS-14809?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Wei-Chiu Chuang updated HDFS-14809: --- Summary: Reduce BlockReaderLocal RPC calls (was: Make a new BlockReader for hdfs client lib) > Reduce BlockReaderLocal RPC calls > - > > Key: HDFS-14809 > URL: https://issues.apache.org/jira/browse/HDFS-14809 > Project: Hadoop HDFS > Issue Type: New Feature >Affects Versions: 2.6.0 >Reporter: KenCao >Assignee: kencao >Priority: Major > Attachments: HADOOP-14809 > > > as we known, the hdfs client java lib uses BlockReaderLocal for short circuit > read by default, which allocate shared memory first, and make a slot within > it. After all these steps, it will request the fds from the DataNode. > However, the slot and shared memory sturcture is only used by DataNode when > uncaching replicas, the client process can work well just with the fds asked > later and it is nearly impossible to cache replicas in product environment. > The api to release fds is called by client only with the slot given, the fds > is close in the client process finally. > so i think we can make a new BlockReader implementation which just requests > the fds, and it will reduce the rpc calls from 3(allocate shm, request fds, > release fds) to 1(request fds). -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14809) Reduce BlockReaderLocal RPC calls
[ https://issues.apache.org/jira/browse/HDFS-14809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050521#comment-17050521 ] Wei-Chiu Chuang commented on HDFS-14809: Updated the summary based on the suggestion. I'm extremely sorry for missing out this one. [~leosun08] [~openinx] does this make sense to you? > Reduce BlockReaderLocal RPC calls > - > > Key: HDFS-14809 > URL: https://issues.apache.org/jira/browse/HDFS-14809 > Project: Hadoop HDFS > Issue Type: New Feature >Affects Versions: 2.6.0 >Reporter: KenCao >Assignee: kencao >Priority: Major > Attachments: HADOOP-14809 > > > as we known, the hdfs client java lib uses BlockReaderLocal for short circuit > read by default, which allocate shared memory first, and make a slot within > it. After all these steps, it will request the fds from the DataNode. > However, the slot and shared memory sturcture is only used by DataNode when > uncaching replicas, the client process can work well just with the fds asked > later and it is nearly impossible to cache replicas in product environment. > The api to release fds is called by client only with the slot given, the fds > is close in the client process finally. > so i think we can make a new BlockReader implementation which just requests > the fds, and it will reduce the rpc calls from 3(allocate shm, request fds, > release fds) to 1(request fds). -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-14809) Reduce BlockReaderLocal RPC calls
[ https://issues.apache.org/jira/browse/HDFS-14809?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Wei-Chiu Chuang updated HDFS-14809: --- Status: Patch Available (was: Open) > Reduce BlockReaderLocal RPC calls > - > > Key: HDFS-14809 > URL: https://issues.apache.org/jira/browse/HDFS-14809 > Project: Hadoop HDFS > Issue Type: New Feature >Affects Versions: 2.6.0 >Reporter: KenCao >Assignee: kencao >Priority: Major > Attachments: HADOOP-14809 > > > as we known, the hdfs client java lib uses BlockReaderLocal for short circuit > read by default, which allocate shared memory first, and make a slot within > it. After all these steps, it will request the fds from the DataNode. > However, the slot and shared memory sturcture is only used by DataNode when > uncaching replicas, the client process can work well just with the fds asked > later and it is nearly impossible to cache replicas in product environment. > The api to release fds is called by client only with the slot given, the fds > is close in the client process finally. > so i think we can make a new BlockReader implementation which just requests > the fds, and it will reduce the rpc calls from 3(allocate shm, request fds, > release fds) to 1(request fds). -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Assigned] (HDFS-14809) Make a new BlockReader for hdfs client lib
[ https://issues.apache.org/jira/browse/HDFS-14809?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Wei-Chiu Chuang reassigned HDFS-14809: -- Assignee: kencao > Make a new BlockReader for hdfs client lib > --- > > Key: HDFS-14809 > URL: https://issues.apache.org/jira/browse/HDFS-14809 > Project: Hadoop HDFS > Issue Type: New Feature >Affects Versions: 2.6.0 >Reporter: KenCao >Assignee: kencao >Priority: Major > Attachments: HADOOP-14809 > > > as we known, the hdfs client java lib uses BlockReaderLocal for short circuit > read by default, which allocate shared memory first, and make a slot within > it. After all these steps, it will request the fds from the DataNode. > However, the slot and shared memory sturcture is only used by DataNode when > uncaching replicas, the client process can work well just with the fds asked > later and it is nearly impossible to cache replicas in product environment. > The api to release fds is called by client only with the slot given, the fds > is close in the client process finally. > so i think we can make a new BlockReader implementation which just requests > the fds, and it will reduce the rpc calls from 3(allocate shm, request fds, > release fds) to 1(request fds). -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-15202) HDFS-client: boost ShortCircuit Cache
[ https://issues.apache.org/jira/browse/HDFS-15202?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050520#comment-17050520 ] Wei-Chiu Chuang commented on HDFS-15202: [~pustota] could you raise a PR against https://github.com/apache/hadoop (trunk branch) I'm sorry it must be confusing to you. > HDFS-client: boost ShortCircuit Cache > - > > Key: HDFS-15202 > URL: https://issues.apache.org/jira/browse/HDFS-15202 > Project: Hadoop HDFS > Issue Type: Improvement > Environment: 4 nodes E5-2698 v4 @ 2.20GHz, 700 Gb Mem. > 8 RegionServers (2 by host) > 8 tables by 64 regions by 1.88 Gb data in each = 900 Gb total > Random read in 800 threads via YCSB and a little bit updates (10% of reads) >Reporter: Danil Lipovoy >Assignee: Danil Lipovoy >Priority: Minor > Attachments: hdfs_cpu.png, hdfs_reads.png > > > I want to propose how to improve reading performance HDFS-client. The idea: > create few instances ShortCircuit caches instead of one. > The key points: > 1. Create array of caches (set by > clientShortCircuitNum=*dfs.client.short.circuit.num*, see in the pull > requests below): > {code:java} > private ClientContext(String name, DfsClientConf conf, Configuration config) { > ... > shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; > for (int i = 0; i < this.clientShortCircuitNum; i++) { > this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); > } > {code} > 2 Then divide blocks by caches: > {code:java} > public ShortCircuitCache getShortCircuitCache(long idx) { > return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; > } > {code} > 3. And how to call it: > {code:java} > ShortCircuitCache cache = > clientContext.getShortCircuitCache(block.getBlockId()); > {code} > The last number of offset evenly distributed from 0 to 9 - that's why all > caches will full approximately the same. > It is good for performance. Below the attachment, it is load test reading > HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that > performance grows ~30%, CPU usage about +15%. > Hope it is interesting for someone. > Ready to explain some unobvious things. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-15202) HDFS-client: boost ShortCircuit Cache
[ https://issues.apache.org/jira/browse/HDFS-15202?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050518#comment-17050518 ] Wei-Chiu Chuang commented on HDFS-15202: [~openinx] [~leosun08] are you guys interested in reviewing this improvement since this concerns SCR performance? > HDFS-client: boost ShortCircuit Cache > - > > Key: HDFS-15202 > URL: https://issues.apache.org/jira/browse/HDFS-15202 > Project: Hadoop HDFS > Issue Type: Improvement > Environment: 4 nodes E5-2698 v4 @ 2.20GHz, 700 Gb Mem. > 8 RegionServers (2 by host) > 8 tables by 64 regions by 1.88 Gb data in each = 900 Gb total > Random read in 800 threads via YCSB and a little bit updates (10% of reads) >Reporter: Danil Lipovoy >Assignee: Danil Lipovoy >Priority: Minor > Attachments: hdfs_cpu.png, hdfs_reads.png > > > I want to propose how to improve reading performance HDFS-client. The idea: > create few instances ShortCircuit caches instead of one. > The key points: > 1. Create array of caches (set by > clientShortCircuitNum=*dfs.client.short.circuit.num*, see in the pull > requests below): > {code:java} > private ClientContext(String name, DfsClientConf conf, Configuration config) { > ... > shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; > for (int i = 0; i < this.clientShortCircuitNum; i++) { > this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); > } > {code} > 2 Then divide blocks by caches: > {code:java} > public ShortCircuitCache getShortCircuitCache(long idx) { > return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; > } > {code} > 3. And how to call it: > {code:java} > ShortCircuitCache cache = > clientContext.getShortCircuitCache(block.getBlockId()); > {code} > The last number of offset evenly distributed from 0 to 9 - that's why all > caches will full approximately the same. > It is good for performance. Below the attachment, it is load test reading > HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that > performance grows ~30%, CPU usage about +15%. > Hope it is interesting for someone. > Ready to explain some unobvious things. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14820) The default 8KB buffer of BlockReaderRemote#newBlockReader#BufferedOutputStream is too big
[ https://issues.apache.org/jira/browse/HDFS-14820?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050517#comment-17050517 ] Wei-Chiu Chuang commented on HDFS-14820: The current implementation is, DFS client send a request (which is short) to DataNode asking for a block using an output stream. After that, client receives block data DataNode (which can be several MBs long) using an input stream. This patch changes the buffer size of the former, output stream. There is absolutely no reason to use a 8kb buffer size for this stream. The input stream, yes what [~eyang] says makes sense. {code} OpReadBlockProto proto = OpReadBlockProto.newBuilder() .setHeader(DataTransferProtoUtil.buildClientHeader(blk, clientName, blockToken)) .setOffset(blockOffset) .setLen(length) .setSendChecksums(sendChecksum) .setCachingStrategy(getCachingStrategy(cachingStrategy)) .build(); {code} Also note that the stream objects are not recycled. One block is one output/input stream object. > The default 8KB buffer of > BlockReaderRemote#newBlockReader#BufferedOutputStream is too big > --- > > Key: HDFS-14820 > URL: https://issues.apache.org/jira/browse/HDFS-14820 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Lisheng Sun >Assignee: Lisheng Sun >Priority: Major > Attachments: HDFS-14820.001.patch, HDFS-14820.002.patch, > HDFS-14820.003.patch > > > this issue is similar to HDFS-14535. > {code:java} > public static BlockReader newBlockReader(String file, > ExtendedBlock block, > Token blockToken, > long startOffset, long len, > boolean verifyChecksum, > String clientName, > Peer peer, DatanodeID datanodeID, > PeerCache peerCache, > CachingStrategy cachingStrategy, > int networkDistance) throws IOException { > // in and out will be closed when sock is closed (by the caller) > final DataOutputStream out = new DataOutputStream(new BufferedOutputStream( > peer.getOutputStream())); > new Sender(out).readBlock(block, blockToken, clientName, startOffset, len, > verifyChecksum, cachingStrategy); > } > public BufferedOutputStream(OutputStream out) { > this(out, 8192); > } > {code} > Sender#readBlock parameter( block,blockToken, clientName, startOffset, len, > verifyChecksum, cachingStrategy) could not use such a big buffer. > So i think it should reduce BufferedOutputStream buffer. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-15202) HDFS-client: boost ShortCircuit Cache
[ https://issues.apache.org/jira/browse/HDFS-15202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Danil Lipovoy updated HDFS-15202: - Description: I want to propose how to improve reading performance HDFS-client. The idea: create few instances ShortCircuit caches instead of one. The key points: 1. Create array of caches (set by clientShortCircuitNum=*dfs.client.short.circuit.num*, see in the pull requests below): {code:java} private ClientContext(String name, DfsClientConf conf, Configuration config) { ... shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; for (int i = 0; i < this.clientShortCircuitNum; i++) { this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); } {code} 2 Then divide blocks by caches: {code:java} public ShortCircuitCache getShortCircuitCache(long idx) { return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; } {code} 3. And how to call it: {code:java} ShortCircuitCache cache = clientContext.getShortCircuitCache(block.getBlockId()); {code} The last number of offset evenly distributed from 0 to 9 - that's why all caches will full approximately the same. It is good for performance. Below the attachment, it is load test reading HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that performance grows ~30%, CPU usage about +15%. Hope it is interesting for someone. Ready to explain some unobvious things. was: I want to propose how to improve reading performance HDFS-client. The idea: create few instances SchortCircuit caches instead of one. The key points: 1. Create array of caches (set by clientShortCircuitNum=*dfs.client.short.circuit.num*, see in the pull requests below): {code:java} private ClientContext(String name, DfsClientConf conf, Configuration config) { ... shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; for (int i = 0; i < this.clientShortCircuitNum; i++) { this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); } {code} 2 Then divide blocks by caches: {code:java} public ShortCircuitCache getShortCircuitCache(long idx) { return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; } {code} 3. And how to call it: {code:java} ShortCircuitCache cache = clientContext.getShortCircuitCache(block.getBlockId()); {code} The last number of offset evenly distributed from 0 to 9 - that's why all caches will full approximately the same. It is good for performance. Below the attachment, it is load test reading HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that performance grows ~30%, CPU usage about +15%. Hope it is interesting for someone. Ready to explain some unobvious things. > HDFS-client: boost ShortCircuit Cache > - > > Key: HDFS-15202 > URL: https://issues.apache.org/jira/browse/HDFS-15202 > Project: Hadoop HDFS > Issue Type: Improvement > Environment: 4 nodes E5-2698 v4 @ 2.20GHz, 700 Gb Mem. > 8 RegionServers (2 by host) > 8 tables by 64 regions by 1.88 Gb data in each = 900 Gb total > Random read in 800 threads via YCSB and a little bit updates (10% of reads) >Reporter: Danil Lipovoy >Assignee: Danil Lipovoy >Priority: Minor > Attachments: hdfs_cpu.png, hdfs_reads.png > > > I want to propose how to improve reading performance HDFS-client. The idea: > create few instances ShortCircuit caches instead of one. > The key points: > 1. Create array of caches (set by > clientShortCircuitNum=*dfs.client.short.circuit.num*, see in the pull > requests below): > {code:java} > private ClientContext(String name, DfsClientConf conf, Configuration config) { > ... > shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; > for (int i = 0; i < this.clientShortCircuitNum; i++) { > this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); > } > {code} > 2 Then divide blocks by caches: > {code:java} > public ShortCircuitCache getShortCircuitCache(long idx) { > return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; > } > {code} > 3. And how to call it: > {code:java} > ShortCircuitCache cache = > clientContext.getShortCircuitCache(block.getBlockId()); > {code} > The last number of offset evenly distributed from 0 to 9 - that's why all > caches will full approximately the same. > It is good for performance. Below the attachment, it is load test reading > HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that > performance grows ~30%, CPU usage about +15%. > Hope it is interesting for someone. > Ready to explain some unobvious things. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For
[jira] [Commented] (HDFS-15200) Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage
[ https://issues.apache.org/jira/browse/HDFS-15200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050504#comment-17050504 ] Ayush Saxena commented on HDFS-15200: - Thanx [~aajisaka] I have made it configurable as per your suggestion, with default as true. > Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage > - > > Key: HDFS-15200 > URL: https://issues.apache.org/jira/browse/HDFS-15200 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Ayush Saxena >Assignee: Ayush Saxena >Priority: Critical > Attachments: HDFS-15200-01.patch, HDFS-15200-02.patch > > > Presently {{invalidateBlock(..)}} before adding a replica into invalidates, > checks whether any block replica is on stale storage, if any replica is on > stale storage, it postpones deletion of the replica. > Here : > {code:java} >// Check how many copies we have of the block > if (nr.replicasOnStaleNodes() > 0) { > blockLog.debug("BLOCK* invalidateBlocks: postponing " + > "invalidation of {} on {} because {} replica(s) are located on " + > "nodes with potentially out-of-date block reports", b, dn, > nr.replicasOnStaleNodes()); > postponeBlock(b.getCorrupted()); > return false; > {code} > > In case of corrupt replica, we can skip this logic and delete the corrupt > replica immediately, as a corrupt replica can't get corrected. > One outcome of this behavior presently is namenodes showing different block > states post failover, as: > If a replica is marked corrupt, the Active NN, will mark it as corrupt, and > mark it for deletion and remove it from corruptReplica's and > excessRedundancyMap. > If before the deletion of replica, Failover happens. > The standby Namenode will mark all the storages as stale. > Then will start processing IBR's, Now since the replica's would be on stale > storage, it will skip deletion, and removal from corruptReplica's > Hence both the namenode will show different numbers and different corrupt > replicas. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-15200) Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage
[ https://issues.apache.org/jira/browse/HDFS-15200?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ayush Saxena updated HDFS-15200: Attachment: HDFS-15200-02.patch > Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage > - > > Key: HDFS-15200 > URL: https://issues.apache.org/jira/browse/HDFS-15200 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Ayush Saxena >Assignee: Ayush Saxena >Priority: Critical > Attachments: HDFS-15200-01.patch, HDFS-15200-02.patch > > > Presently {{invalidateBlock(..)}} before adding a replica into invalidates, > checks whether any block replica is on stale storage, if any replica is on > stale storage, it postpones deletion of the replica. > Here : > {code:java} >// Check how many copies we have of the block > if (nr.replicasOnStaleNodes() > 0) { > blockLog.debug("BLOCK* invalidateBlocks: postponing " + > "invalidation of {} on {} because {} replica(s) are located on " + > "nodes with potentially out-of-date block reports", b, dn, > nr.replicasOnStaleNodes()); > postponeBlock(b.getCorrupted()); > return false; > {code} > > In case of corrupt replica, we can skip this logic and delete the corrupt > replica immediately, as a corrupt replica can't get corrected. > One outcome of this behavior presently is namenodes showing different block > states post failover, as: > If a replica is marked corrupt, the Active NN, will mark it as corrupt, and > mark it for deletion and remove it from corruptReplica's and > excessRedundancyMap. > If before the deletion of replica, Failover happens. > The standby Namenode will mark all the storages as stale. > Then will start processing IBR's, Now since the replica's would be on stale > storage, it will skip deletion, and removal from corruptReplica's > Hence both the namenode will show different numbers and different corrupt > replicas. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-15200) Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage
[ https://issues.apache.org/jira/browse/HDFS-15200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050495#comment-17050495 ] Hadoop QA commented on HDFS-15200: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 45s{color} | {color:blue} Docker mode activated. {color} | || || || || {color:brown} Prechecks {color} || | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m 0s{color} | {color:green} The patch does not contain any @author tags. {color} | | {color:green}+1{color} | {color:green} test4tests {color} | {color:green} 0m 0s{color} | {color:green} The patch appears to include 1 new or modified test files. {color} | || || || || {color:brown} trunk Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 19m 27s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 2s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 51s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 5s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 16m 1s{color} | {color:green} branch has no errors when building and testing our client artifacts. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 2m 49s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 39s{color} | {color:green} trunk passed {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 1m 1s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 56s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 56s{color} | {color:green} the patch passed {color} | | {color:orange}-0{color} | {color:orange} checkstyle {color} | {color:orange} 0m 46s{color} | {color:orange} hadoop-hdfs-project/hadoop-hdfs: The patch generated 1 new + 619 unchanged - 0 fixed = 620 total (was 619) {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 1s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} whitespace {color} | {color:green} 0m 0s{color} | {color:green} The patch has no whitespace issues. {color} | | {color:green}+1{color} | {color:green} xml {color} | {color:green} 0m 2s{color} | {color:green} The patch has no ill-formed XML file. {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 14m 8s{color} | {color:green} patch has no errors when building and testing our client artifacts. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 2m 53s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 36s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red}114m 49s{color} | {color:red} hadoop-hdfs in the patch passed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 43s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}179m 38s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.server.blockmanagement.TestCorruptionWithFailover | | | hadoop.hdfs.TestEncryptionZonesWithKMS | | | hadoop.hdfs.TestMultipleNNPortQOP | | | hadoop.hdfs.TestEncryptionZones | | | hadoop.hdfs.server.namenode.TestFsck | | | hadoop.hdfs.TestSafeModeWithStripedFileWithRandomECPolicy | \\ \\ || Subsystem || Report/Notes || | Docker | Client=19.03.6 Server=19.03.6 Image:yetus/hadoop:c44943d1fc3 | | JIRA Issue | HDFS-15200 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12995483/HDFS-15200-01.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle xml | | uname | Linux 74510e68c91e 4.15.0-74-generic #84-Ubuntu SMP Thu Dec 19 08:06:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/patchprocess/precommit/personality/provided.sh | | git revision | trunk / c0d0842 | | maven | version: Apache Maven 3.3.9 | | Default Java | 1.8.0_242 | | findbugs | v3.1.0-RC1 | | checkstyle |
[jira] [Commented] (HDFS-15203) A bug in ViewFileSystemBaseTest
[ https://issues.apache.org/jira/browse/HDFS-15203?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050494#comment-17050494 ] Kihwal Lee commented on HDFS-15203: --- A similar logic is in {{ViewFsBaseTest}} too. > A bug in ViewFileSystemBaseTest > --- > > Key: HDFS-15203 > URL: https://issues.apache.org/jira/browse/HDFS-15203 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Kihwal Lee >Priority: Trivial > > Missing an assignment here: > {code:java} > @Test > public void testGetBlockLocations() throws IOException { > ... > // Same test but now get it via the FileStatus Parameter > fsView.getFileBlockLocations( > fsView.getFileStatus(viewFilePath), 0, 10240+100); > targetBL = fsTarget.getFileBlockLocations( > fsTarget.getFileStatus(targetFilePath), 0, 10240+100); > compareBLs(viewBL, targetBL); > {code} > But more importantly, I am not sure what is the difference between this and > the previous check. Are they redundant? > {code:java} > BlockLocation[] viewBL = > fsView.getFileBlockLocations(fsView.getFileStatus(viewFilePath), 0, > 10240+100); > Assert.assertEquals(SupportsBlocks ? 10 : 1, viewBL.length); > BlockLocation[] targetBL = > fsTarget.getFileBlockLocations(fsTarget.getFileStatus(targetFilePath), 0, > 10240+100); > compareBLs(viewBL, targetBL); > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-15155) writeIoRate of DataNodeVolumeMetrics is never used
[ https://issues.apache.org/jira/browse/HDFS-15155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050487#comment-17050487 ] Íñigo Goiri commented on HDFS-15155: * Let's fix the checkstyle. * Instead of assertTrue ==, use assertEquals where possible. Remember expected is the first parameter. > writeIoRate of DataNodeVolumeMetrics is never used > -- > > Key: HDFS-15155 > URL: https://issues.apache.org/jira/browse/HDFS-15155 > Project: Hadoop HDFS > Issue Type: Bug > Components: hdfs >Reporter: Haibin Huang >Assignee: Haibin Huang >Priority: Major > Attachments: HDFS-15155.001.patch, HDFS-15155.002.patch, > HDFS-15155.003.patch > > > There is some incorrect object using in DataNodeVolumeMetrics, writeIoRate is > never used and syncIoRate should be replaced by writeIoRate in the following > code: > {code:java} > // Based on writeIoRate > public long getWriteIoSampleCount() { > return syncIoRate.lastStat().numSamples(); > } > public double getWriteIoMean() { > return syncIoRate.lastStat().mean(); > } > public double getWriteIoStdDev() { > return syncIoRate.lastStat().stddev(); > } > {code} > > > -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-15203) A bug in ViewFileSystemBaseTest
[ https://issues.apache.org/jira/browse/HDFS-15203?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Kihwal Lee updated HDFS-15203: -- Description: Missing an assignment here: {code:java} @Test public void testGetBlockLocations() throws IOException { ... // Same test but now get it via the FileStatus Parameter fsView.getFileBlockLocations( fsView.getFileStatus(viewFilePath), 0, 10240+100); targetBL = fsTarget.getFileBlockLocations( fsTarget.getFileStatus(targetFilePath), 0, 10240+100); compareBLs(viewBL, targetBL); {code} But more importantly, I am not sure what is the difference between this and the previous check. Are they redundant? {code:java} BlockLocation[] viewBL = fsView.getFileBlockLocations(fsView.getFileStatus(viewFilePath), 0, 10240+100); Assert.assertEquals(SupportsBlocks ? 10 : 1, viewBL.length); BlockLocation[] targetBL = fsTarget.getFileBlockLocations(fsTarget.getFileStatus(targetFilePath), 0, 10240+100); compareBLs(viewBL, targetBL); {code} was: Missing an assignment here: {code:java} @Test public void testGetBlockLocations() throws IOException { ... // Same test but now get it via the FileStatus Parameter fsView.getFileBlockLocations( fsView.getFileStatus(viewFilePath), 0, 10240+100); targetBL = fsTarget.getFileBlockLocations( fsTarget.getFileStatus(targetFilePath), 0, 10240+100); compareBLs(viewBL, targetBL); {code} But I am not sure what is the difference between this and the previous check. {code:java} BlockLocation[] viewBL = fsView.getFileBlockLocations(fsView.getFileStatus(viewFilePath), 0, 10240+100); Assert.assertEquals(SupportsBlocks ? 10 : 1, viewBL.length); BlockLocation[] targetBL = fsTarget.getFileBlockLocations(fsTarget.getFileStatus(targetFilePath), 0, 10240+100); compareBLs(viewBL, targetBL); {code} > A bug in ViewFileSystemBaseTest > --- > > Key: HDFS-15203 > URL: https://issues.apache.org/jira/browse/HDFS-15203 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Kihwal Lee >Priority: Trivial > > Missing an assignment here: > {code:java} > @Test > public void testGetBlockLocations() throws IOException { > ... > // Same test but now get it via the FileStatus Parameter > fsView.getFileBlockLocations( > fsView.getFileStatus(viewFilePath), 0, 10240+100); > targetBL = fsTarget.getFileBlockLocations( > fsTarget.getFileStatus(targetFilePath), 0, 10240+100); > compareBLs(viewBL, targetBL); > {code} > But more importantly, I am not sure what is the difference between this and > the previous check. Are they redundant? > {code:java} > BlockLocation[] viewBL = > fsView.getFileBlockLocations(fsView.getFileStatus(viewFilePath), 0, > 10240+100); > Assert.assertEquals(SupportsBlocks ? 10 : 1, viewBL.length); > BlockLocation[] targetBL = > fsTarget.getFileBlockLocations(fsTarget.getFileStatus(targetFilePath), 0, > 10240+100); > compareBLs(viewBL, targetBL); > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14977) Quota Usage and Content summary are not same in Truncate with Snapshot
[ https://issues.apache.org/jira/browse/HDFS-14977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050485#comment-17050485 ] Íñigo Goiri commented on HDFS-14977: [^HDFS-14977.003.patch] LGTM. Let's wait for Yetus and double check with [~surendrasingh]. > Quota Usage and Content summary are not same in Truncate with Snapshot > --- > > Key: HDFS-14977 > URL: https://issues.apache.org/jira/browse/HDFS-14977 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: hemanthboyina >Assignee: hemanthboyina >Priority: Major > Attachments: HDFS-14977.001.patch, HDFS-14977.002.patch, > HDFS-14977.003.patch > > > steps : hdfs dfs -mkdir /dir > hdfs dfs -put file /dir (file size = 10bytes) > hdfs dfsadmin -allowSnapshot /dir > hdfs dfs -createSnapshot /dir s1 > space consumed with Quotausage and Content Summary is 30bytes > hdfs dfs -truncate -w 5 /dir/file > space consumed with Quotausage , Content Summary is 45 bytes > hdfs dfs -deleteSnapshot /dir s1 > space consumed with Quotausage is 45bytes and Content Summary is 15bytes -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-15203) A bug in ViewFileSystemBaseTest
[ https://issues.apache.org/jira/browse/HDFS-15203?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Kihwal Lee updated HDFS-15203: -- Description: Missing an assignment here: {code:java} @Test public void testGetBlockLocations() throws IOException { ... // Same test but now get it via the FileStatus Parameter fsView.getFileBlockLocations( fsView.getFileStatus(viewFilePath), 0, 10240+100); targetBL = fsTarget.getFileBlockLocations( fsTarget.getFileStatus(targetFilePath), 0, 10240+100); compareBLs(viewBL, targetBL); {code} But I am not sure what is the difference between this and the previous check. {code:java} BlockLocation[] viewBL = fsView.getFileBlockLocations(fsView.getFileStatus(viewFilePath), 0, 10240+100); Assert.assertEquals(SupportsBlocks ? 10 : 1, viewBL.length); BlockLocation[] targetBL = fsTarget.getFileBlockLocations(fsTarget.getFileStatus(targetFilePath), 0, 10240+100); compareBLs(viewBL, targetBL); {code} was: Missing an assignment here: {code:java} @Test public void testGetBlockLocations() throws IOException { ... // Same test but now get it via the FileStatus Parameter fsView.getFileBlockLocations( fsView.getFileStatus(viewFilePath), 0, 10240+100); targetBL = fsTarget.getFileBlockLocations( fsTarget.getFileStatus(targetFilePath), 0, 10240+100); compareBLs(viewBL, targetBL); {code} > A bug in ViewFileSystemBaseTest > --- > > Key: HDFS-15203 > URL: https://issues.apache.org/jira/browse/HDFS-15203 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Kihwal Lee >Priority: Trivial > > Missing an assignment here: > {code:java} > @Test > public void testGetBlockLocations() throws IOException { > ... > // Same test but now get it via the FileStatus Parameter > fsView.getFileBlockLocations( > fsView.getFileStatus(viewFilePath), 0, 10240+100); > targetBL = fsTarget.getFileBlockLocations( > fsTarget.getFileStatus(targetFilePath), 0, 10240+100); > compareBLs(viewBL, targetBL); > {code} > But I am not sure what is the difference between this and the previous check. > {code:java} > BlockLocation[] viewBL = > fsView.getFileBlockLocations(fsView.getFileStatus(viewFilePath), 0, > 10240+100); > Assert.assertEquals(SupportsBlocks ? 10 : 1, viewBL.length); > BlockLocation[] targetBL = > fsTarget.getFileBlockLocations(fsTarget.getFileStatus(targetFilePath), 0, > 10240+100); > compareBLs(viewBL, targetBL); > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-15196) RBF: RouterRpcServer getListing cannot list large dirs correctly
[ https://issues.apache.org/jira/browse/HDFS-15196?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050483#comment-17050483 ] Íñigo Goiri commented on HDFS-15196: [~LiJinglun] can you take a look at this? I agree with [~ayushtkn], we should preserve the previous ordering. We may want to also test the limit in the Router side. > RBF: RouterRpcServer getListing cannot list large dirs correctly > > > Key: HDFS-15196 > URL: https://issues.apache.org/jira/browse/HDFS-15196 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Fengnan Li >Assignee: Fengnan Li >Priority: Critical > Attachments: HDFS-15196.001.patch, HDFS-15196.002.patch, > HDFS-15196.003.patch, HDFS-15196.003.patch, HDFS-15196.004.patch, > HDFS-15196.005.patch > > > In RouterRpcServer, getListing function is handled as two parts: > # Union all partial listings from destination ns + paths > # Append mount points for the dir to be listed > In the case of large dir which is bigger than DFSConfigKeys.DFS_LIST_LIMIT > (with default value 1k), the batch listing will be used and the startAfter > will be used to define the boundary of each batch listing. However, step 2 > here will add existing mount points, which will mess up with the boundary of > the batch, thus making the next batch startAfter wrong. > The fix is just to append the mount points when there is no more batch query > necessary. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Created] (HDFS-15203) A bug in ViewFileSystemBaseTest
Kihwal Lee created HDFS-15203: - Summary: A bug in ViewFileSystemBaseTest Key: HDFS-15203 URL: https://issues.apache.org/jira/browse/HDFS-15203 Project: Hadoop HDFS Issue Type: Bug Reporter: Kihwal Lee Missing an assignment here: {code:java} @Test public void testGetBlockLocations() throws IOException { ... // Same test but now get it via the FileStatus Parameter fsView.getFileBlockLocations( fsView.getFileStatus(viewFilePath), 0, 10240+100); targetBL = fsTarget.getFileBlockLocations( fsTarget.getFileStatus(targetFilePath), 0, 10240+100); compareBLs(viewBL, targetBL); {code} -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-15202) HDFS-client: boost ShortCircuit Cache
[ https://issues.apache.org/jira/browse/HDFS-15202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Danil Lipovoy updated HDFS-15202: - Description: I want to propose how to improve reading performance HDFS-client. The idea: create few instances SchortCircuit caches instead of one. The key points: 1. Create array of caches (set by clientShortCircuitNum=*dfs.client.short.circuit.num*, see in the pull requests below): {code:java} private ClientContext(String name, DfsClientConf conf, Configuration config) { ... shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; for (int i = 0; i < this.clientShortCircuitNum; i++) { this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); } {code} 2 Then divide blocks by caches: {code:java} public ShortCircuitCache getShortCircuitCache(long idx) { return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; } {code} 3. And how to call it: {code:java} ShortCircuitCache cache = clientContext.getShortCircuitCache(block.getBlockId()); {code} The last number of offset evenly distributed from 0 to 9 - that's why all caches will full approximately the same. It is good for performance. Below the attachment, it is load test reading HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that performance grows ~30%, CPU usage about +15%. Hope it is interesting for someone. Ready to explain some unobvious things. was: I want to propose how to improve reading performance HDFS-client. The idea: create few instances SchortCircuit caches instead of one. The key points: 1. Create array of caches (*clientShortCircuitNum=dfs.client.short.circuit.num*, see in the pull requests below): {code:java} private ClientContext(String name, DfsClientConf conf, Configuration config) { ... shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; for (int i = 0; i < this.clientShortCircuitNum; i++) { this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); } {code} 2 Then divide blocks by caches: {code:java} public ShortCircuitCache getShortCircuitCache(long idx) { return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; } {code} 3. And how to call it: {code:java} ShortCircuitCache cache = clientContext.getShortCircuitCache(block.getBlockId()); {code} The last number of offset evenly distributed from 0 to 9 - that's why all caches will full approximately the same. It is good for performance. Below the attachment, it is load test reading HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that performance grows ~30%, CPU usage about +15%. Hope it is interesting for someone. Ready to explain some unobvious things. > HDFS-client: boost ShortCircuit Cache > - > > Key: HDFS-15202 > URL: https://issues.apache.org/jira/browse/HDFS-15202 > Project: Hadoop HDFS > Issue Type: Improvement > Environment: 4 nodes E5-2698 v4 @ 2.20GHz, 700 Gb Mem. > 8 RegionServers (2 by host) > 8 tables by 64 regions by 1.88 Gb data in each = 900 Gb total > Random read in 800 threads via YCSB and a little bit updates (10% of reads) >Reporter: Danil Lipovoy >Assignee: Danil Lipovoy >Priority: Minor > Attachments: hdfs_cpu.png, hdfs_reads.png > > > I want to propose how to improve reading performance HDFS-client. The idea: > create few instances SchortCircuit caches instead of one. > The key points: > 1. Create array of caches (set by > clientShortCircuitNum=*dfs.client.short.circuit.num*, see in the pull > requests below): > {code:java} > private ClientContext(String name, DfsClientConf conf, Configuration config) { > ... > shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; > for (int i = 0; i < this.clientShortCircuitNum; i++) { > this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); > } > {code} > 2 Then divide blocks by caches: > {code:java} > public ShortCircuitCache getShortCircuitCache(long idx) { > return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; > } > {code} > 3. And how to call it: > {code:java} > ShortCircuitCache cache = > clientContext.getShortCircuitCache(block.getBlockId()); > {code} > The last number of offset evenly distributed from 0 to 9 - that's why all > caches will full approximately the same. > It is good for performance. Below the attachment, it is load test reading > HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that > performance grows ~30%, CPU usage about +15%. > Hope it is interesting for someone. > Ready to explain some unobvious things. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For
[jira] [Updated] (HDFS-15202) HDFS-client: boost ShortCircuit Cache
[ https://issues.apache.org/jira/browse/HDFS-15202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Danil Lipovoy updated HDFS-15202: - Description: I want to propose how to improve reading performance HDFS-client. The idea: create few instances SchortCircuit caches instead of one. The key points: 1. Create array of caches (*clientShortCircuitNum=dfs.client.short.circuit.num*, see in the pull requests below): {code:java} private ClientContext(String name, DfsClientConf conf, Configuration config) { ... shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; for (int i = 0; i < this.clientShortCircuitNum; i++) { this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); } {code} 2 Then divide blocks by caches: {code:java} public ShortCircuitCache getShortCircuitCache(long idx) { return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; } {code} 3. And how to call it: {code:java} ShortCircuitCache cache = clientContext.getShortCircuitCache(block.getBlockId()); {code} The last number of offset evenly distributed from 0 to 9 - that's why all caches will full approximately the same. It is good for performance. Below the attachment, it is load test reading HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that performance grows ~30%, CPU usage about +15%. Hope it is interesting for someone. Ready to explain some unobvious things. was: I want to propose how to improve reading performance HDFS-client. The idea: create few instances SchortCircuit caches instead of one. The key points: 1. Create array of caches (see *dfs.client.short.circuit.num* in the pull requests below): {code:java} private ClientContext(String name, DfsClientConf conf, Configuration config) { ... shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; for (int i = 0; i < this.clientShortCircuitNum; i++) { this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); } {code} 2 Then divide blocks by caches: {code:java} public ShortCircuitCache getShortCircuitCache(long idx) { return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; } {code} 3. And how to call it: {code:java} ShortCircuitCache cache = clientContext.getShortCircuitCache(block.getBlockId()); {code} The last number of offset evenly distributed from 0 to 9 - that's why all caches will full approximately the same. It is good for performance. Below the attachment, it is load test reading HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that performance grows ~30%, CPU usage about +15%. Hope it is interesting for someone. Ready to explain some unobvious things. > HDFS-client: boost ShortCircuit Cache > - > > Key: HDFS-15202 > URL: https://issues.apache.org/jira/browse/HDFS-15202 > Project: Hadoop HDFS > Issue Type: Improvement > Environment: 4 nodes E5-2698 v4 @ 2.20GHz, 700 Gb Mem. > 8 RegionServers (2 by host) > 8 tables by 64 regions by 1.88 Gb data in each = 900 Gb total > Random read in 800 threads via YCSB and a little bit updates (10% of reads) >Reporter: Danil Lipovoy >Assignee: Danil Lipovoy >Priority: Minor > Attachments: hdfs_cpu.png, hdfs_reads.png > > > I want to propose how to improve reading performance HDFS-client. The idea: > create few instances SchortCircuit caches instead of one. > The key points: > 1. Create array of caches > (*clientShortCircuitNum=dfs.client.short.circuit.num*, see in the pull > requests below): > {code:java} > private ClientContext(String name, DfsClientConf conf, Configuration config) { > ... > shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; > for (int i = 0; i < this.clientShortCircuitNum; i++) { > this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); > } > {code} > 2 Then divide blocks by caches: > {code:java} > public ShortCircuitCache getShortCircuitCache(long idx) { > return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; > } > {code} > 3. And how to call it: > {code:java} > ShortCircuitCache cache = > clientContext.getShortCircuitCache(block.getBlockId()); > {code} > The last number of offset evenly distributed from 0 to 9 - that's why all > caches will full approximately the same. > It is good for performance. Below the attachment, it is load test reading > HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that > performance grows ~30%, CPU usage about +15%. > Hope it is interesting for someone. > Ready to explain some unobvious things. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail:
[jira] [Updated] (HDFS-15202) HDFS-client: boost ShortCircuit Cache
[ https://issues.apache.org/jira/browse/HDFS-15202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Danil Lipovoy updated HDFS-15202: - Environment: 4 nodes E5-2698 v4 @ 2.20GHz, 700 Gb Mem. 8 RegionServers (2 by host) 8 tables by 64 regions by 1.88 Gb data in each = 900 Gb total Random read in 800 threads via YCSB and a little bit updates (10% of reads) was: 4 nodes E5-2698 v4 @ 2.20GHz, 700 Gb Mem. 8 RegionServers (2 by host) 8 tables by 64 regions by 1.88 Gb data in each = 1200 Gb total Random read in 800 threads via YCSB and a little bit updates (10% of reads) > HDFS-client: boost ShortCircuit Cache > - > > Key: HDFS-15202 > URL: https://issues.apache.org/jira/browse/HDFS-15202 > Project: Hadoop HDFS > Issue Type: Improvement > Environment: 4 nodes E5-2698 v4 @ 2.20GHz, 700 Gb Mem. > 8 RegionServers (2 by host) > 8 tables by 64 regions by 1.88 Gb data in each = 900 Gb total > Random read in 800 threads via YCSB and a little bit updates (10% of reads) >Reporter: Danil Lipovoy >Assignee: Danil Lipovoy >Priority: Minor > Attachments: hdfs_cpu.png, hdfs_reads.png > > > I want to propose how to improve reading performance HDFS-client. The idea: > create few instances SchortCircuit caches instead of one. > The key points: > 1. Create array of caches (see *dfs.client.short.circuit.num* in the pull > requests below): > {code:java} > private ClientContext(String name, DfsClientConf conf, Configuration config) { > ... > shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; > for (int i = 0; i < this.clientShortCircuitNum; i++) { > this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); > } > {code} > 2 Then divide blocks by caches: > {code:java} > public ShortCircuitCache getShortCircuitCache(long idx) { > return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; > } > {code} > 3. And how to call it: > {code:java} > ShortCircuitCache cache = > clientContext.getShortCircuitCache(block.getBlockId()); > {code} > The last number of offset evenly distributed from 0 to 9 - that's why all > caches will full approximately the same. > It is good for performance. Below the attachment, it is load test reading > HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that > performance grows ~30%, CPU usage about +15%. > Hope it is interesting for someone. > Ready to explain some unobvious things. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-15202) HDFS-client: boost ShortCircuit Cache
[ https://issues.apache.org/jira/browse/HDFS-15202?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050472#comment-17050472 ] Danil Lipovoy commented on HDFS-15202: -- Hi [~weichiu]! Of course, I am newbe here, don't know how to do better) > HDFS-client: boost ShortCircuit Cache > - > > Key: HDFS-15202 > URL: https://issues.apache.org/jira/browse/HDFS-15202 > Project: Hadoop HDFS > Issue Type: Improvement > Environment: 4 nodes E5-2698 v4 @ 2.20GHz, 700 Gb Mem. > 8 RegionServers (2 by host) > 8 tables by 64 regions by 1.88 Gb data in each = 1200 Gb total > Random read in 800 threads via YCSB and a little bit updates (10% of reads) >Reporter: Danil Lipovoy >Assignee: Danil Lipovoy >Priority: Minor > Attachments: hdfs_cpu.png, hdfs_reads.png > > > I want to propose how to improve reading performance HDFS-client. The idea: > create few instances SchortCircuit caches instead of one. > The key points: > 1. Create array of caches (see *dfs.client.short.circuit.num* in the pull > requests below): > {code:java} > private ClientContext(String name, DfsClientConf conf, Configuration config) { > ... > shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; > for (int i = 0; i < this.clientShortCircuitNum; i++) { > this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); > } > {code} > 2 Then divide blocks by caches: > {code:java} > public ShortCircuitCache getShortCircuitCache(long idx) { > return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; > } > {code} > 3. And how to call it: > {code:java} > ShortCircuitCache cache = > clientContext.getShortCircuitCache(block.getBlockId()); > {code} > The last number of offset evenly distributed from 0 to 9 - that's why all > caches will full approximately the same. > It is good for performance. Below the attachment, it is load test reading > HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that > performance grows ~30%, CPU usage about +15%. > Hope it is interesting for someone. > Ready to explain some unobvious things. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Moved] (HDFS-15202) HDFS-client: boost ShortCircuit Cache
[ https://issues.apache.org/jira/browse/HDFS-15202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Wei-Chiu Chuang moved HADOOP-16901 to HDFS-15202: - Key: HDFS-15202 (was: HADOOP-16901) Issue Type: Improvement (was: New Feature) Project: Hadoop HDFS (was: Hadoop Common) > HDFS-client: boost ShortCircuit Cache > - > > Key: HDFS-15202 > URL: https://issues.apache.org/jira/browse/HDFS-15202 > Project: Hadoop HDFS > Issue Type: Improvement > Environment: 4 nodes E5-2698 v4 @ 2.20GHz, 700 Gb Mem. > 8 RegionServers (2 by host) > 8 tables by 64 regions by 1.88 Gb data in each = 1200 Gb total > Random read in 800 threads via YCSB and a little bit updates (10% of reads) >Reporter: Danil Lipovoy >Assignee: Danil Lipovoy >Priority: Minor > Attachments: hdfs_cpu.png, hdfs_reads.png > > > I want to propose how to improve reading performance HDFS-client. The idea: > create few instances SchortCircuit caches instead of one. > The key points: > 1. Create array of caches (see *dfs.client.short.circuit.num* in the pull > requests below): > {code:java} > private ClientContext(String name, DfsClientConf conf, Configuration config) { > ... > shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum]; > for (int i = 0; i < this.clientShortCircuitNum; i++) { > this.shortCircuitCache[i] = ShortCircuitCache.fromConf(scConf); > } > {code} > 2 Then divide blocks by caches: > {code:java} > public ShortCircuitCache getShortCircuitCache(long idx) { > return shortCircuitCache[(int) (idx % clientShortCircuitNum)]; > } > {code} > 3. And how to call it: > {code:java} > ShortCircuitCache cache = > clientContext.getShortCircuitCache(block.getBlockId()); > {code} > The last number of offset evenly distributed from 0 to 9 - that's why all > caches will full approximately the same. > It is good for performance. Below the attachment, it is load test reading > HDFS via HBase where clientShortCircuitNum = 1 vs 3. We can see that > performance grows ~30%, CPU usage about +15%. > Hope it is interesting for someone. > Ready to explain some unobvious things. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-14977) Quota Usage and Content summary are not same in Truncate with Snapshot
[ https://issues.apache.org/jira/browse/HDFS-14977?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] hemanthboyina updated HDFS-14977: - Attachment: HDFS-14977.003.patch > Quota Usage and Content summary are not same in Truncate with Snapshot > --- > > Key: HDFS-14977 > URL: https://issues.apache.org/jira/browse/HDFS-14977 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: hemanthboyina >Assignee: hemanthboyina >Priority: Major > Attachments: HDFS-14977.001.patch, HDFS-14977.002.patch, > HDFS-14977.003.patch > > > steps : hdfs dfs -mkdir /dir > hdfs dfs -put file /dir (file size = 10bytes) > hdfs dfsadmin -allowSnapshot /dir > hdfs dfs -createSnapshot /dir s1 > space consumed with Quotausage and Content Summary is 30bytes > hdfs dfs -truncate -w 5 /dir/file > space consumed with Quotausage , Content Summary is 45 bytes > hdfs dfs -deleteSnapshot /dir s1 > space consumed with Quotausage is 45bytes and Content Summary is 15bytes -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14977) Quota Usage and Content summary are not same in Truncate with Snapshot
[ https://issues.apache.org/jira/browse/HDFS-14977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050407#comment-17050407 ] hemanthboyina commented on HDFS-14977: -- thanks for the review [~elgoiri] [~surendrasingh] have updated the patch , please review > Quota Usage and Content summary are not same in Truncate with Snapshot > --- > > Key: HDFS-14977 > URL: https://issues.apache.org/jira/browse/HDFS-14977 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: hemanthboyina >Assignee: hemanthboyina >Priority: Major > Attachments: HDFS-14977.001.patch, HDFS-14977.002.patch, > HDFS-14977.003.patch > > > steps : hdfs dfs -mkdir /dir > hdfs dfs -put file /dir (file size = 10bytes) > hdfs dfsadmin -allowSnapshot /dir > hdfs dfs -createSnapshot /dir s1 > space consumed with Quotausage and Content Summary is 30bytes > hdfs dfs -truncate -w 5 /dir/file > space consumed with Quotausage , Content Summary is 45 bytes > hdfs dfs -deleteSnapshot /dir s1 > space consumed with Quotausage is 45bytes and Content Summary is 15bytes -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-15200) Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage
[ https://issues.apache.org/jira/browse/HDFS-15200?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ayush Saxena updated HDFS-15200: Attachment: HDFS-15200-01.patch > Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage > - > > Key: HDFS-15200 > URL: https://issues.apache.org/jira/browse/HDFS-15200 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Ayush Saxena >Assignee: Ayush Saxena >Priority: Critical > Attachments: HDFS-15200-01.patch > > > Presently {{invalidateBlock(..)}} before adding a replica into invalidates, > checks whether any block replica is on stale storage, if any replica is on > stale storage, it postpones deletion of the replica. > Here : > {code:java} >// Check how many copies we have of the block > if (nr.replicasOnStaleNodes() > 0) { > blockLog.debug("BLOCK* invalidateBlocks: postponing " + > "invalidation of {} on {} because {} replica(s) are located on " + > "nodes with potentially out-of-date block reports", b, dn, > nr.replicasOnStaleNodes()); > postponeBlock(b.getCorrupted()); > return false; > {code} > > In case of corrupt replica, we can skip this logic and delete the corrupt > replica immediately, as a corrupt replica can't get corrected. > One outcome of this behavior presently is namenodes showing different block > states post failover, as: > If a replica is marked corrupt, the Active NN, will mark it as corrupt, and > mark it for deletion and remove it from corruptReplica's and > excessRedundancyMap. > If before the deletion of replica, Failover happens. > The standby Namenode will mark all the storages as stale. > Then will start processing IBR's, Now since the replica's would be on stale > storage, it will skip deletion, and removal from corruptReplica's > Hence both the namenode will show different numbers and different corrupt > replicas. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-15200) Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage
[ https://issues.apache.org/jira/browse/HDFS-15200?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ayush Saxena updated HDFS-15200: Status: Patch Available (was: Open) > Delete Corrupt Replica Immediately Irrespective of Replicas On Stale Storage > - > > Key: HDFS-15200 > URL: https://issues.apache.org/jira/browse/HDFS-15200 > Project: Hadoop HDFS > Issue Type: Bug >Reporter: Ayush Saxena >Assignee: Ayush Saxena >Priority: Critical > Attachments: HDFS-15200-01.patch > > > Presently {{invalidateBlock(..)}} before adding a replica into invalidates, > checks whether any block replica is on stale storage, if any replica is on > stale storage, it postpones deletion of the replica. > Here : > {code:java} >// Check how many copies we have of the block > if (nr.replicasOnStaleNodes() > 0) { > blockLog.debug("BLOCK* invalidateBlocks: postponing " + > "invalidation of {} on {} because {} replica(s) are located on " + > "nodes with potentially out-of-date block reports", b, dn, > nr.replicasOnStaleNodes()); > postponeBlock(b.getCorrupted()); > return false; > {code} > > In case of corrupt replica, we can skip this logic and delete the corrupt > replica immediately, as a corrupt replica can't get corrected. > One outcome of this behavior presently is namenodes showing different block > states post failover, as: > If a replica is marked corrupt, the Active NN, will mark it as corrupt, and > mark it for deletion and remove it from corruptReplica's and > excessRedundancyMap. > If before the deletion of replica, Failover happens. > The standby Namenode will mark all the storages as stale. > Then will start processing IBR's, Now since the replica's would be on stale > storage, it will skip deletion, and removal from corruptReplica's > Hence both the namenode will show different numbers and different corrupt > replicas. -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-15155) writeIoRate of DataNodeVolumeMetrics is never used
[ https://issues.apache.org/jira/browse/HDFS-15155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050347#comment-17050347 ] Hadoop QA commented on HDFS-15155: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 48s{color} | {color:blue} Docker mode activated. {color} | || || || || {color:brown} Prechecks {color} || | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m 0s{color} | {color:green} The patch does not contain any @author tags. {color} | | {color:green}+1{color} | {color:green} test4tests {color} | {color:green} 0m 0s{color} | {color:green} The patch appears to include 1 new or modified test files. {color} | || || || || {color:brown} trunk Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 19m 57s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 2s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 41s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 7s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 16m 0s{color} | {color:green} branch has no errors when building and testing our client artifacts. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 2m 50s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 39s{color} | {color:green} trunk passed {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 1m 0s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 55s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 55s{color} | {color:green} the patch passed {color} | | {color:orange}-0{color} | {color:orange} checkstyle {color} | {color:orange} 0m 36s{color} | {color:orange} hadoop-hdfs-project/hadoop-hdfs: The patch generated 2 new + 0 unchanged - 0 fixed = 2 total (was 0) {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 0s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} whitespace {color} | {color:green} 0m 0s{color} | {color:green} The patch has no whitespace issues. {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 14m 9s{color} | {color:green} patch has no errors when building and testing our client artifacts. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 2m 52s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 37s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red}105m 44s{color} | {color:red} hadoop-hdfs in the patch passed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 32s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}170m 39s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.TestFileCreation | | | hadoop.hdfs.server.namenode.ha.TestFailureToReadEdits | | | hadoop.hdfs.TestEncryptionZonesWithKMS | | | hadoop.hdfs.server.datanode.TestNNHandlesBlockReportPerStorage | | | hadoop.hdfs.TestEncryptionZones | \\ \\ || Subsystem || Report/Notes || | Docker | Client=19.03.6 Server=19.03.6 Image:yetus/hadoop:c44943d1fc3 | | JIRA Issue | HDFS-15155 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12995462/HDFS-15155.003.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle | | uname | Linux 6c6cc71327df 4.15.0-74-generic #84-Ubuntu SMP Thu Dec 19 08:06:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/patchprocess/precommit/personality/provided.sh | | git revision | trunk / c0d0842 | | maven | version: Apache Maven 3.3.9 | | Default Java | 1.8.0_242 | | findbugs | v3.1.0-RC1 | | checkstyle | https://builds.apache.org/job/PreCommit-HDFS-Build/28886/artifact/out/diff-checkstyle-hadoop-hdfs-project_hadoop-hdfs.txt | | unit |
[jira] [Commented] (HDFS-15155) writeIoRate of DataNodeVolumeMetrics is never used
[ https://issues.apache.org/jira/browse/HDFS-15155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17050193#comment-17050193 ] Haibin Huang commented on HDFS-15155: - [~elgoiri] I have updated the patch. Please review it. > writeIoRate of DataNodeVolumeMetrics is never used > -- > > Key: HDFS-15155 > URL: https://issues.apache.org/jira/browse/HDFS-15155 > Project: Hadoop HDFS > Issue Type: Bug > Components: hdfs >Reporter: Haibin Huang >Assignee: Haibin Huang >Priority: Major > Attachments: HDFS-15155.001.patch, HDFS-15155.002.patch, > HDFS-15155.003.patch > > > There is some incorrect object using in DataNodeVolumeMetrics, writeIoRate is > never used and syncIoRate should be replaced by writeIoRate in the following > code: > {code:java} > // Based on writeIoRate > public long getWriteIoSampleCount() { > return syncIoRate.lastStat().numSamples(); > } > public double getWriteIoMean() { > return syncIoRate.lastStat().mean(); > } > public double getWriteIoStdDev() { > return syncIoRate.lastStat().stddev(); > } > {code} > > > -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Updated] (HDFS-15155) writeIoRate of DataNodeVolumeMetrics is never used
[ https://issues.apache.org/jira/browse/HDFS-15155?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Haibin Huang updated HDFS-15155: Attachment: HDFS-15155.003.patch > writeIoRate of DataNodeVolumeMetrics is never used > -- > > Key: HDFS-15155 > URL: https://issues.apache.org/jira/browse/HDFS-15155 > Project: Hadoop HDFS > Issue Type: Bug > Components: hdfs >Reporter: Haibin Huang >Assignee: Haibin Huang >Priority: Major > Attachments: HDFS-15155.001.patch, HDFS-15155.002.patch, > HDFS-15155.003.patch > > > There is some incorrect object using in DataNodeVolumeMetrics, writeIoRate is > never used and syncIoRate should be replaced by writeIoRate in the following > code: > {code:java} > // Based on writeIoRate > public long getWriteIoSampleCount() { > return syncIoRate.lastStat().numSamples(); > } > public double getWriteIoMean() { > return syncIoRate.lastStat().mean(); > } > public double getWriteIoStdDev() { > return syncIoRate.lastStat().stddev(); > } > {code} > > > -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org