[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16806081#comment-16806081 ] Feilong He commented on HDFS-14355: --- [~umamaheswararao], thanks so much! I will file another Jira to do some improvement work. @all reviewers, thank you all for your valuable comments on this Jira. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Fix For: 3.3.0 > > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch, HDFS-14355.007.patch, > HDFS-14355.008.patch, HDFS-14355.009.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16806070#comment-16806070 ] Hudson commented on HDFS-14355: --- SUCCESS: Integrated in Jenkins build Hadoop-trunk-Commit #16310 (See [https://builds.apache.org/job/Hadoop-trunk-Commit/16310/]) HDFS-14355 : Implement HDFS cache on SCM by using pure java mapped byte (umamahesh: rev 35ff31dd9462cf4fb4ebf5556ee8ae6bcd7c5c3a) * (add) hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/PmemVolumeManager.java * (edit) hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSConfigKeys.java * (edit) hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DNConf.java * (edit) hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetUtil.java * (edit) hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/MappableBlockLoader.java * (add) hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/PmemMappableBlockLoader.java * (edit) hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml * (add) hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/TestCacheByPmemMappableBlockLoader.java * (edit) hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java * (add) hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/PmemMappedBlock.java * (edit) hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetCache.java * (edit) hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/MemoryMappableBlockLoader.java > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Fix For: 3.3.0 > > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch, HDFS-14355.007.patch, > HDFS-14355.008.patch, HDFS-14355.009.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16806067#comment-16806067 ] Uma Maheswara Rao G commented on HDFS-14355: I have just pushed this to trunk. [~PhiloHe] feel free to file Jira for the improvements pointed in reviews: ex: TransferTo usage and volumes handling etc. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch, HDFS-14355.007.patch, > HDFS-14355.008.patch, HDFS-14355.009.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16806066#comment-16806066 ] Uma Maheswara Rao G commented on HDFS-14355: +1 Thanks [~PhiloHe] for all the contribution. Thanks all for the reviews. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch, HDFS-14355.007.patch, > HDFS-14355.008.patch, HDFS-14355.009.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16806058#comment-16806058 ] Rakesh R commented on HDFS-14355: - Thanks [~PhiloHe] for the continuous efforts in shaping up the patch. +1, latest patch looks good to me. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch, HDFS-14355.007.patch, > HDFS-14355.008.patch, HDFS-14355.009.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16806055#comment-16806055 ] Anoop Sam John commented on HDFS-14355: --- bq.“dfs.datanode.cache” is the prefix followed for all the cache related configs, so we would like to follow the pattern Fine.. Ya I was also not sure whether some name pattern you were following. Ya am fine with the given reasoning Thanks for addressing the comments. Looks good/ > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch, HDFS-14355.007.patch, > HDFS-14355.008.patch, HDFS-14355.009.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16805975#comment-16805975 ] Hadoop QA commented on HDFS-14355: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 17s{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} 16m 25s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 56s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 49s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 2s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 11m 32s{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} 1m 54s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 47s{color} | {color:green} trunk passed {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 0m 57s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 54s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 54s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 52s{color} | {color:green} the patch passed {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 1s{color} | {color:green} The patch has no ill-formed XML file. {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 11m 6s{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 2s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 46s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red} 83m 2s{color} | {color:red} hadoop-hdfs in the patch failed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 31s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}134m 47s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.web.TestWebHdfsTimeouts | | | hadoop.hdfs.server.namenode.ha.TestBootstrapAliasmap | \\ \\ || Subsystem || Report/Notes || | Docker | Client=17.05.0-ce Server=17.05.0-ce Image:yetus/hadoop:8f97d6f | | JIRA Issue | HDFS-14355 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12964324/HDFS-14355.009.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle xml | | uname | Linux 1d0e56eb3623 4.4.0-139-generic #165-Ubuntu SMP Wed Oct 24 10:58:50 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/patchprocess/precommit/personality/provided.sh | | git revision | trunk / bf3b7fd | | maven | version: Apache Maven 3.3.9 | | Default Java | 1.8.0_191 | | findbugs | v3.1.0-RC1 | | unit | https://builds.apache.org/job/PreCommit-HDFS-Build/26552/artifact/out/patch-unit-hadoop-hdfs-project_hadoop-hdfs.txt | | Test Results | https://builds.apache.org/job/PreCommit-HDFS-Build/26552/testReport/ | | Max. process+thread count | 5240 (vs. ulimit of 1) | | modules | C: hadoop
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16805938#comment-16805938 ] Feilong He commented on HDFS-14355: --- Thanks [~anoop.hbase] for your valuable suggestions. We have uploaded a new patch HDFS-14355.009.patch with some updates based on your suggestions. {quote}getBlockInputStreamWithCheckingPmemCache -> Can be private method {quote} Yes, this method can be private and it's better to make it private. We have fixed this issue in the new patch. {quote}public PmemVolumeManager getPmemVolumeManager -> Why being exposed? For tests? If so can this be package private? And also mark it with @VisibleForTesting {quote} Indeed, there is no need to expose this method in the current impl. It should be package private with @VisibleForTesting annotation. This issue has been fixed in the new patch. {quote}I think the afterCache() thing is an unwanted indirection Actually in PmemMappableBlockLoader#load, once the load is successful (mappableBlock != null), we can do this pmemVolumeManager work right? {quote} Good suggestion. As you pointed, using #afterCache() is indirect and such impl can easily cause bugs. In the new patch, afterCache work will be executed after a mapppableBlock is successfually loaded. {quote}Call afterUncache() after delete the file {quote} Yes, #afterUncache should be executed after file is deleted. {quote}public PmemVolumeManager(DNConf dnConf) Can we only pass pmemVolumes and maxLockedPmem? That is cleaner IMO {quote} Another good suggestion. PmemVolumeManager actually just needs pomemVolumes and maxLoackedPmem for instantiation. {quote}getVolumeByIndex -> can this be package private {quote} Yes, package private is enough. We have modified the access specifier in the new patch. {quote}getCacheFilePath(ExtendedBlockId key) -> Better name would be getCachedPath(ExtendedBlockId) {quote} Yes, the method name getCacheFilePath is a bit ambiguous. In the new patch, this method is named as getCachedPath as you suggested. {quote}dfs.datanode.cache.pmem.capacity -> Am not sure any naming convention u follow in HDFS. But as a user I would prefer a name dfs.datanode.pmem.cache.capacity. Ditto for dfs.datanode.cache.pmem.dirs {quote} “dfs.datanode.cache” is the prefix followed for all the cache related configs, so we would like to follow the pattern. Thanks [~anoop.hbase] again for your comments. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch, HDFS-14355.007.patch, > HDFS-14355.008.patch, HDFS-14355.009.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16805884#comment-16805884 ] Anoop Sam John commented on HDFS-14355: --- getBlockInputStreamWithCheckingPmemCache -> Can be private method public PmemVolumeManager getPmemVolumeManager -> Why being exposed? For tests? If so can this be package private? And also mark it with @VisibleForTesting I think the afterCache() thing is an unwanted indirection {code} FsDatasetCache try { 411 mappableBlock = cacheLoader.load(length, blockIn, metaIn, 412 blockFileName, key); 413} catch (ChecksumException e) { 414 // Exception message is bogus since this wasn't caused by a file read 418 LOG.warn("Failed to cache the block [key=" + key + "]!", e); 419 return; 420} 421mappableBlock.afterCache(); PmemMappedBlock @Override 58 public void afterCache() { 59 pmemVolumeManager.afterCache(key, volumeIndex); 60 } PmemVolumeManager public void afterCache(ExtendedBlockId key, Byte volumeIndex) { 299blockKeyToVolume.put(key, volumeIndex); 300 } {code} Actually in PmemMappableBlockLoader#load, once the load is successful (mappableBlock != null), we can do this pmemVolumeManager work right? {code} public void close() { 64 pmemVolumeManager.afterUncache(key); ... 68 FsDatasetUtil.deleteMappedFile(cacheFilePath); {code} Call afterUncache() after delete the file public PmemVolumeManager(DNConf dnConf) Can we only pass pmemVolumes and maxLockedPmem? That is cleaner IMO getVolumeByIndex -> can this be package private getCacheFilePath(ExtendedBlockId key) -> Better name would be getCachedPath(ExtendedBlockId) dfs.datanode.cache.pmem.capacity -> Am not sure any naming convention u follow in HDFS. But as a user I would prefer a name dfs.datanode.pmem.cache.capacity. Ditto for dfs.datanode.cache.pmem.dirs > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch, HDFS-14355.007.patch, > HDFS-14355.008.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16805622#comment-16805622 ] Anoop Sam John commented on HDFS-14355: --- Pls give me a day Uma. Will have a look.. I was checking an older version patch and was half way. Seems new one came in as another subtask been committed. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch, HDFS-14355.007.patch, > HDFS-14355.008.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16805371#comment-16805371 ] Uma Maheswara Rao G commented on HDFS-14355: Thanks [~PhiloHe] for providing patch. It mostly looks good to me. Any further comments from others? Otherwise I will move ahead for commit. Thanks > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch, HDFS-14355.007.patch, > HDFS-14355.008.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16805291#comment-16805291 ] Hadoop QA commented on HDFS-14355: -- | (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} 16m 37s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 58s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 59s{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} 12m 55s{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} 1m 57s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 53s{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 54s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 54s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 54s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 0m 58s{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} 11m 46s{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 3s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 47s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red} 75m 3s{color} | {color:red} hadoop-hdfs in the patch failed. {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}129m 33s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.web.TestWebHdfsTimeouts | \\ \\ || Subsystem || Report/Notes || | Docker | Client=17.05.0-ce Server=17.05.0-ce Image:yetus/hadoop:8f97d6f | | JIRA Issue | HDFS-14355 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12964212/HDFS-14355.008.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle xml | | uname | Linux eb789d38b149 4.4.0-139-generic #165-Ubuntu SMP Wed Oct 24 10:58:50 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/patchprocess/precommit/personality/provided.sh | | git revision | trunk / 7dc0ecc | | maven | version: Apache Maven 3.3.9 | | Default Java | 1.8.0_191 | | findbugs | v3.1.0-RC1 | | unit | https://builds.apache.org/job/PreCommit-HDFS-Build/26545/artifact/out/patch-unit-hadoop-hdfs-project_hadoop-hdfs.txt | | Test Results | https://builds.apache.org/job/PreCommit-HDFS-Build/26545/testReport/ | | Max. process+thread count | 5309 (vs. ulimit of 1) | | modules | C: hadoop-hdfs-project/hadoop-hdfs U: hadoop-hdfs-project/hadoop-hdfs
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16804885#comment-16804885 ] Feilong He commented on HDFS-14355: --- Hi all, our code was rebased and also refined again. I have uploaded the new patch. Please review it. Thanks! > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch, HDFS-14355.007.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16804854#comment-16804854 ] Hadoop QA commented on HDFS-14355: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 36s{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} 18m 43s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 5s{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 9s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 13m 47s{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} 1m 53s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 48s{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 53s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 53s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 55s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 0m 58s{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} 12m 34s{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 3s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 48s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red}113m 22s{color} | {color:red} hadoop-hdfs in the patch failed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 44s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}172m 1s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.server.balancer.TestBalancer | | | hadoop.hdfs.server.namenode.ha.TestDFSUpgradeWithHA | \\ \\ || Subsystem || Report/Notes || | Docker | Client=17.05.0-ce Server=17.05.0-ce Image:yetus/hadoop:8f97d6f | | JIRA Issue | HDFS-14355 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12964150/HDFS-14355.007.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle xml | | uname | Linux 824425b54d26 3.13.0-153-generic #203-Ubuntu SMP Thu Jun 14 08:52:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/patchprocess/precommit/personality/provided.sh | | git revision | trunk / f41f938 | | maven | version: Apache Maven 3.3.9 | | Default Java | 1.8.0_191 | | findbugs | v3.1.0-RC1 | | unit | https://builds.apache.org/job/PreCommit-HDFS-Build/26544/artifact/out/patch-unit-hadoop-hdfs-project_hadoop-hdfs.txt | | Test Results | https://builds.apache.org/job/PreCommit-HDFS-Build/26544/testReport/ | | Max. process+thread count | 2959 (vs. ulimit of 1) | | modules | C: h
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16804551#comment-16804551 ] Feilong He commented on HDFS-14355: --- OK. Thanks for your help. I will do that immediately. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16804220#comment-16804220 ] Rakesh R commented on HDFS-14355: - [~PhiloHe], HDFS-14393 sub-task has been resolved, please rebase your patch based on the interface changes. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16803979#comment-16803979 ] Hadoop QA commented on HDFS-14355: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 15s{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 14s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 56s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 52s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 2s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 11m 54s{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 1s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 50s{color} | {color:green} trunk passed {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 0m 55s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 52s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 52s{color} | {color:green} the patch passed {color} | | {color:orange}-0{color} | {color:orange} checkstyle {color} | {color:orange} 0m 50s{color} | {color:orange} hadoop-hdfs-project/hadoop-hdfs: The patch generated 2 new + 581 unchanged - 0 fixed = 583 total (was 581) {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 4s{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} 11m 23s{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 8s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 46s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red} 79m 40s{color} | {color:red} hadoop-hdfs in the patch failed. {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}133m 0s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.server.datanode.TestBPOfferService | | | hadoop.hdfs.server.blockmanagement.TestUnderReplicatedBlocks | | | hadoop.hdfs.web.TestWebHdfsTimeouts | | | hadoop.hdfs.server.balancer.TestBalancerRPCDelay | \\ \\ || Subsystem || Report/Notes || | Docker | Client=17.05.0-ce Server=17.05.0-ce Image:yetus/hadoop:8f97d6f | | JIRA Issue | HDFS-14355 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12964023/HDFS-14355.006.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle xml | | uname | Linux d24d1d8bde6a 4.4.0-138-generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/patchprocess/precommit/personality/provided.sh | | git revision | trunk / 15d38b1 | | maven | version: Apache Maven 3.3.9 | | Default Java | 1.8.0_191 | | findbugs | v3.1.0-RC1 | | checkstyle | https://builds.apache.org/job/PreCommit-HDFS-Build/26537/artifact/out/
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16803869#comment-16803869 ] Feilong He commented on HDFS-14355: --- HDFS-14355.006.patch was uploaded with fixing [~rakeshr]'s comments. Suggestions are always welcome! Thanks! > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch, HDFS-14355.006.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16803862#comment-16803862 ] Feilong He commented on HDFS-14355: --- Thanks [~rakeshr] so much for giving me these valuable comments. {quote}How about adding an API to interface {{MappableBlockLoader#isTransientCache()}} to avoid checks specific to PMem. It can return specific flag value to differentiate NVMe/DRAM based cache. {quote} It's a good suggestion. In the new patch, I will add a similar method #isNonVolatileCache in interface. According to its return value: true/false, we can differentiate two kinds of cache. {quote}I'd like to avoid type casting. It won't work with another Pmem implementation, right? {quote} Indeed, it is not a good way to use cast type as #getReplicaCachePath method shows. In the new patch, I will make #getReplicaCachePath an API in interface MappableBlockLoader. So casting type can be avoided. {quote}Below type casting can be replaced with HDFS-14393 interface. {quote} Lazy Persist Write also use the same code for cache bytes management. For read cache, block can either be cached to DRAM or pmem. And for Lazy persist write cache, only DRAM cache is supported supported. So in our current implementation, actually we made DRAM cache and pmem cache coexist, which precisely means DRAM write cache and pmem read cache can be enabled simultaneously. So I am lean to keep getPmemCacheUsed & getPmemCacheCapacity, as well as getCacheUsed and getCacheCapacity. To avoid the issue you pointed out, I am considering that we may instantiate PmemVolumeManager in FsDataSetCache. So FsDataSetCache will keep a reference to PmemVolumeManager. {quote}{{FsDatasetUtil#deleteMappedFile}} - try-catch is not required, can we do like, {quote} I just noted that and I will update our patch. {quote}Why cant't we avoid {{LocalReplica}} changes and read directly from Util like below, {quote} Great insight. It is unnecessary to change LocalReplica then. I will update this piece code in our new patch. {quote}As the class {{PmemVolumeManager}} itself represents {{Pmem}} so its good to remove this extra keyword from the methods and entities from this class - PmemUsedBytesCount, getPmemCacheUsed, getPmemCacheCapacity etc.. {quote} Another good suggestion. It is indeed unnecessary to use extra keyword to name these class/method. I will update the code accordingly. {quote}Please avoid unchecked conversion and we can do like, {quote} Yes, the return type should be checked as you pointed out. {quote}Add exception message in PmemVolumeManager#verifyIfValidPmemVolume {quote} I will do that to give people more details for debugging. {quote}Here {{IOException}} clause is not required, please remove it. We can add it later, if needed. {quote} Yes, it is not required in current implementation. I will remove it. {quote}Can we include block id into the log message, that would improve debugging. {quote} Yes, including block id into log message is friendly to debugging. I will update the code. Thanks again! > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16803612#comment-16803612 ] Rakesh R commented on HDFS-14355: - Adding review comments, please take care. # How about adding an API to interface {{MappableBlockLoader#isTransientCache()}} to avoid checks specific to PMem. It can return specific flag value to differentiate NVMe/DRAM based cache. {code:java} public boolean isPmemCacheEnabled() { return mappableBlockLoader instanceof PmemMappableBlockLoader; } {code} # I'd like to avoid type casting. It won't work with another Pmem implementation, right? {code:java} public String getReplicaCachePath(String bpid, long blockId) { if (!isPmemCacheEnabled() || !isCached(bpid, blockId)) { return null; } ExtendedBlockId key = new ExtendedBlockId(blockId, bpid); String cachePath = ((PmemMappableBlockLoader)mappableBlockLoader) .getPmemVolumeManager() .getCachedFilePath(key); return cachePath; } {code} # Below type casting can be replaced with HDFS-14393 interface. {code:java} /** * Get cache capacity of persistent memory. * TODO: advertise this metric to NameNode by FSDatasetMBean */ public long getPmemCacheCapacity() { if (isPmemCacheEnabled()) { return ((PmemMappableBlockLoader)mappableBlockLoader) .getPmemVolumeManager().getPmemCacheCapacity(); } return 0; } public long getPmemCacheUsed() { if (isPmemCacheEnabled()) { return ((PmemMappableBlockLoader)mappableBlockLoader) .getPmemVolumeManager().getPmemCacheUsed(); } return 0; } {code} # {{FsDatasetUtil#deleteMappedFile}} - try-catch is not required, can we do like, {code:java} public static void deleteMappedFile(String filePath) throws IOException { boolean result = Files.deleteIfExists(Paths.get(filePath)); if (!result) { throw new IOException("Failed to delete the mapped file: " + filePath); } } {code} # Why cant't we avoid {{LocalReplica}} changes and read directly from Util like below, {code:java} FsDatasetImpl#getBlockInputStreamWithCheckingPmemCache() . if (cachePath != null) { return FsDatasetUtil.getInputStreamAndSeek(new File(cachePath), seekOffset); } {code} # As the class {{PmemVolumeManager}} itself represents {{Pmem}} so its good to remove this extra keyword from the methods and entities from this class - PmemUsedBytesCount, getPmemCacheUsed, getPmemCacheCapacity etc.. # Please avoid unchecked conversion and we can do like, {code:java} PmemVolumeManager.java private final Map blockKeyToVolume = new ConcurrentHashMap<>(); Map getBlockKeyToVolume() { return blockKeyToVolume; } {code} # Add exception message in PmemVolumeManager#verifyIfValidPmemVolume {code:java} if (out == null) { throw new IOException(); } {code} # Here {{IOException}} clause is not required, please remove it. We can add it later, if needed. {code:java} MappableBlock.java void afterCache() throws IOException; FsDatasetCache.java try { mappableBlock.afterCache(); } catch (IOException e) { LOG.warn(e.getMessage()); return; } {code} # Can we include block id into the log message, that would improve debugging. {code:java} LOG.info("Successfully cache one replica into persistent memory: " + "[path=" + filePath + ", length=" + length + "]"); to LOG.info("Successfully cached one replica:{} into persistent memory" + ", [cached path={}, length={}]", key, filePath, length); {code} > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16803307#comment-16803307 ] Rakesh R commented on HDFS-14355: - Thanks [~PhiloHe] for the updates. I have created HDFS-14393 to make {{FsDatasetCache}} more cleaner and interacts with loader, this would avoid the specific type casting to {{PMem}} in the current patch. I will continue reviewing your patch. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16802777#comment-16802777 ] Hadoop QA commented on HDFS-14355: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 15s{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} 16m 36s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 59s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 57s{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} 13m 3s{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 1s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 48s{color} | {color:green} trunk passed {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 0m 56s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 54s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 54s{color} | {color:green} the patch passed {color} | | {color:orange}-0{color} | {color:orange} checkstyle {color} | {color:orange} 0m 48s{color} | {color:orange} hadoop-hdfs-project/hadoop-hdfs: The patch generated 1 new + 592 unchanged - 0 fixed = 593 total (was 592) {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 0m 59s{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} 11m 58s{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 4s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 50s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red} 78m 20s{color} | {color:red} hadoop-hdfs in the patch failed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 28s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}132m 46s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.server.datanode.TestBPOfferService | | | hadoop.hdfs.web.TestWebHdfsTimeouts | | | hadoop.hdfs.server.namenode.ha.TestPendingCorruptDnMessages | \\ \\ || Subsystem || Report/Notes || | Docker | Client=17.05.0-ce Server=17.05.0-ce Image:yetus/hadoop:8f97d6f | | JIRA Issue | HDFS-14355 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12963877/HDFS-14355.005.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle xml | | uname | Linux 0dcb486c2402 4.4.0-138-generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/patchprocess/precommit/personality/provided.sh | | git revision | trunk / b226958 | | maven | version: Apache Maven 3.3.9 | | Default Java | 1.8.0_191 | | findbugs | v3.1.0-RC1 | | checkstyle | https://builds.apache.org/job/PreCommit-HDFS-Build/26523/artifact/out/diff-checkstyle-hadoop-hdfs-project_hadoop-hdfs.txt | | u
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16802698#comment-16802698 ] Feilong He commented on HDFS-14355: --- HDFS-14355.005.patch is uploaded with some code refinement. @[~umamaheswararao], @[~rakeshr], @[~daryn], @[~Sammi], please review the patch again to see whether it needs some more improvements. I would be happy to get your feedback. Thanks! > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch, > HDFS-14355.005.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16801851#comment-16801851 ] Hadoop QA commented on HDFS-14355: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 21s{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} 0m 54s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 48s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 2s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 11m 42s{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} 1m 57s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 44s{color} | {color:green} trunk passed {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 0m 54s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 52s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 52s{color} | {color:green} the patch passed {color} | | {color:orange}-0{color} | {color:orange} checkstyle {color} | {color:orange} 0m 45s{color} | {color:orange} hadoop-hdfs-project/hadoop-hdfs: The patch generated 3 new + 592 unchanged - 0 fixed = 595 total (was 592) {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 0m 58s{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} 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} 10m 44s{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 3s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 42s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red} 83m 24s{color} | {color:red} hadoop-hdfs in the patch failed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 34s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}135m 55s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.server.namenode.TestNameNodeMXBean | | | hadoop.hdfs.web.TestWebHdfsTimeouts | | | hadoop.hdfs.tools.TestDFSZKFailoverController | \\ \\ || Subsystem || Report/Notes || | Docker | Client=17.05.0-ce Server=17.05.0-ce Image:yetus/hadoop:8f97d6f | | JIRA Issue | HDFS-14355 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12963725/HDFS-14355.004.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle xml | | uname | Linux 7aa5719d052f 4.4.0-138-generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/patchprocess/precommit/personality/provided.sh | | git revision | trunk / 5c0a81a | | maven | version: Apache Maven 3.3.9 | | Default Java | 1.8.0_191 | | findbugs | v3.1.0-RC1 | | checkstyle | https://builds.apache.org/job/PreCommit-HDFS-Build/26519/artifact/out/diff-checkstyle-hadoop-hdfs-project_hadoop-hdfs.txt | | unit | https:/
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16801747#comment-16801747 ] Feilong He commented on HDFS-14355: --- Thanks [~rakeshr], [~umamaheswararao], [~daryn], [~Sammi] for giving us so many valuable suggestions. I have uploaded a newly updated patch. Please kindly review it to see whether I have addressed your comments. Also, if you have any other suggestion, please feel free to let us know by posting your comment. Thanks again! > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch, HDFS-14355.004.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16800592#comment-16800592 ] Feilong He commented on HDFS-14355: --- Thanks [~Sammi] for your valuable comments. {quote}User would like to know the relationship between dfs.datanode.cache.pmem.capacity and dfs.datanode.max.locked.memory by reading the descriptions in hdfs-default.xml {quote} I will proofread the description to make them clear to user. {quote}PmemUsedBytesCount, is there any forsee issue to reuse UsedBytesCount instead? Also byte roundup is not addressed in PmemUsedBytesCount {quote} As you know, {{UsedBytesCount }}is used to count the DRAM bytes. It can ensure that after reserving bytes for DRAM cache the used bytes will not exceed maxBytes (dfs.datanode.max.locked.memory) . We found that besides DRAM cache, Lazy Persist Writes also uses this {{UsedBytesCount}} to reserve/release bytes. Since supporting Lazy Persist Writes on pmem is not the target of this jira, we introduce Pmem{{UsedBytesCount}} for pmem. Thus Lazy Persist Writes will not be affected. User can still enable Lazy Persist Writes by configuring dfs.datanode.max.locked.memory. Pmem may not have page size like mechanism as DRAM (we will confirm it). So we didn't round up the bytes to a page size like value. Because of this difference, {{UsedBytesCount}} and Pmem{{UsedBytesCount}} has different reserve/release method. So we just introduced Pmem{{UsedBytesCount}}. {quote}FsDatasetCached is not a good place to put specific memory loader implemetation functions like reservePmem, releasePmem. FsDatasetCached should be generic. {quote} Good suggestion. We are aware of this issue as you pointed out. In the new path, we will move Pmem{{UsedBytesCount}}, reservePmem, releasePmem to a new class PmemVolumeManager to keep FsDatasetCache generic. {quote}As [~daryn] suggested, more elegant error handling. {quote} We are checking our code to make exceptions be handled elegantly. Thanks again for your huge efforts on reviewing this patch. Your suggestions will be seriously considered by us. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16800514#comment-16800514 ] Feilong He commented on HDFS-14355: --- [~daryn], thanks so much for your pretty valuable comments. {quote}I quickly skimmed the patch. At a high level, a plugin design should not leak details. This patch breaks the abstraction and litters the code with references to "pmem" and explicit conditionals. The details of pmem should be pushed down and hidden in the pmem specific classes. {quote} We tried to separate our impl for pmem cache with the current HDFS code. We introduced some classes for pmem such as PmemMappableBlockLoader, PmemMappedBlock, PmemVolumeManager. In FsdatasetCache, we indeed kept some references for pmem, for example pmemUsedBytesCount, which may be one issue you pointed out implicitly. In our new patch, pmemUsedBytesCount and reserve/release methods for pmem will be removed from FsdatasetCache to a new class PmemVolumeManager. We are trying to shade such unnecessarily exposed details for pmem as you suggested. {quote}Adding another reference (cacheFilePath) to {{ReplicaInfo}} is less than desirable from a memory perspective. For those not using the feature, it's not nearly as bad as adding one to inodes but may be an issue for very dense DNs. More importantly, those that DO use the feature will incur a substantial memory hit to store the paths. Why does a SCM block need to track a completely different path? Isn't the SCM just another storage dir? {quote} The cacheFilePath in ReplicaInfo is just used for pmem cache. Since multiple pmems can be configured by user, to locate the cache file on pmem, it is necessary to keep such info for a cached block. Also, we seriously considered your reasonable concerns that adding cacheFilePath there may cause issues for very Dense DNs. Thanks for pointing out this. We will optimize this part with a new patch. In the new patch, we will remove cacheFilePath from ReplicaInfo. Instead, we will add a PmemVolumeManager for pmem cache to keep cacheFilePath(precisely, pmem volume index, which is enough for inferring the cache file path in our new impl). TB sized HDFS pmem cache should be able to cache around 10k blocks at most. In our evaluation, pmem cache would not consume substantial DRAM space to maintain which pmem volume a block is cached to for 10k level blocks. On the other hand, enabling pmem cache can alleviate the pressure of competing DRAM resource. {quote}{{getCacheLoaderClaZZ}} should be {{getCacheLoaderClaSS}} and the returned {{Class}} must be instantiated. It's wrong to compare the class simple name against {{MemoryMappableBlockLoader}}. Consider if a user configures with {{my.custom.MemoryMappableBlockLoader}} and it instantiates {{org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.MemoryMappableBlockLoader}} anyway because of the matching simple name? Catching {{ReflectiveOperationException}} and just logging it masks a serious misconfiguration or error condition. {quote} The {{getCacheLoaderClaZZ}} has been changed to {{getCacheLoaderClass }}as you suggested. Your suggestion makes us aware of that comparing class simple name is inconsiderate. We have fixed this issue in our new patch. Since the constructor of cache loader requires a {{FsdatasetCache}} instance as its parameter, we still instantiate it there as you noted. The {{getCacheLoaderClass}} comes from DNconf and it should not depend on {{FsdatasetCache}} to return a instantiated cache loader. As you pointed out, it is not reasonable to catch {{ReflectiveOperationException and }}merely log it. We throw a RuntimeException inside the catch block to terminate the start of DN. {quote}There's quite a few other exceptions being swallowed or just logged when dubious "bad things" happen. Or discarding of exceptions and rethrowing generic "something went wrong" exceptions w/o the original exception as a cause. That complicates debugging. {quote} We are checking the code scrupulously and trying our best to fix the issues you mentioned to avoid complicating debugging. For loading pmem volume, we just log the error if one volume is not usable. We thought it is tolerable to have just one bad pmem volume configured by user. But an exception will be thrown to terminate the DN starting if all pmem volumes are invalid. {quote}New methods in {{FsDatasetUtil}} are not ok. Invalid arguments are not "ignorable". That's how bugs creep in which are insanely hard to debug. Don't check if offset is valid, just seek, let it throw if invalid. Don't ignore null filenames, just let it throw. Catching {{Throwable}} is a bad practice; let alone catching, discarding, and throwing a bland exception. {quote} Good suggestion! We noted the issues in {{FsDatasetUtil}}. As you pointed out, the invalid offset and null filenames shouldn't be ignored. We are als
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16800445#comment-16800445 ] Sammi Chen commented on HDFS-14355: --- Thanks [~PhiloHe] for working on it. Several quick comments, 1. User would like to know the relationship between dfs.datanode.cache.pmem.capacity and dfs.datanode.max.locked.memory by reading the descriptions in hdfs-default.xml 2. PmemUsedBytesCount, is there any forsee issue to reuse UsedBytesCount instead? Also byte roundup is not addressed in PmemUsedBytesCount 3. FsDatasetCached is not a good place to put specific memory loader implemetation functions like reservePmem, releasePmem. FsDatasetCached should be generic. 4. As [~daryn] suggested, more elegant error handling > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16798421#comment-16798421 ] Daryn Sharp commented on HDFS-14355: I quickly skimmed the patch. At a high level, a plugin design should not leak details. This patch breaks the abstraction and litters the code with references to "pmem" and explicit conditionals. The details of pmem should be pushed down and hidden in the pmem specific classes. Adding another reference (cacheFilePath) to {{ReplicaInfo}} is less than desirable from a memory perspective. For those not using the feature, it's not nearly as bad as adding one to inodes but may be an issue for very dense DNs. More importantly, those that DO use the feature will incur a substantial memory hit to store the paths. Why does a SCM block need to track a completely different path? Isn't the SCM just another storage dir? {{getCacheLoaderClaZZ}} should be {{getCacheLoaderClaSS}} and the returned {{Class}} must be instantiated. It's wrong to compare the class simple name against {{MemoryMappableBlockLoader}}. Consider if a user configures with {{my.custom.MemoryMappableBlockLoader}} and it instantiates {{org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.MemoryMappableBlockLoader}} anyway because of the matching simple name? Catching {{ReflectiveOperationException}} and just logging it masks a serious misconfiguration or error condition. There's quite a few other exceptions being swallowed or just logged when dubious "bad things" happen. Or discarding of exceptions and rethrowing generic "something went wrong" exceptions w/o the original exception as a cause. That complicates debugging. New methods in {{FsDatasetUtil}} are not ok. Invalid arguments are not "ignorable". That's how bugs creep in which are insanely hard to debug. Don't check if offset is valid, just seek, let it throw if invalid. Don't ignore null filenames, just let it throw. Catching {{Throwable}} is a bad practice; let alone catching, discarding, and throwing a bland exception. Why throw a {{RuntimeException}} in "getOneLocation"? Is the intent to take down the DN? Why do a costly compute of the checksum for a mmap file? Isn't the client is going to compute the checksum anyway? > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16798334#comment-16798334 ] Hadoop QA commented on HDFS-14355: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 31s{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 2 new or modified test files. {color} | || || || || {color:brown} trunk Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 20m 25s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 18s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 1m 11s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 22s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 15m 12s{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 13s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 2s{color} | {color:green} trunk passed {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 1m 13s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 12s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 1m 12s{color} | {color:green} the patch passed {color} | | {color:orange}-0{color} | {color:orange} checkstyle {color} | {color:orange} 1m 6s{color} | {color:orange} hadoop-hdfs-project/hadoop-hdfs: The patch generated 3 new + 609 unchanged - 0 fixed = 612 total (was 609) {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 15s{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} 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} 13m 42s{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 54s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red}130m 24s{color} | {color:red} hadoop-hdfs in the patch failed. {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}196m 11s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.server.namenode.TestNameNodeMXBean | | | hadoop.hdfs.server.datanode.fsdataset.impl.TestCacheWithPmemMappableBlockLoader | \\ \\ || Subsystem || Report/Notes || | Docker | Client=17.05.0-ce Server=17.05.0-ce Image:yetus/hadoop:8f97d6f | | JIRA Issue | HDFS-14355 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12963284/HDFS-14355.003.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle xml | | uname | Linux b3530b874e2b 3.13.0-153-generic #203-Ubuntu SMP Thu Jun 14 08:52:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/patchprocess/precommit/personality/provided.sh | | git revision | trunk / 9f1c017 | | maven | version: Apache Maven 3.3.9 | | Default Java | 1.8.0_191 | | findbugs | v3.1.0-RC1 | | checkstyle | https://builds.apache.org/job/PreCommit-HDFS-Build/26504/artifact/out/diff-checkstyle-hadoop-hdfs-project_hadoop-hdfs.txt | | unit | https://build
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16798203#comment-16798203 ] Feilong He commented on HDFS-14355: --- [~umamaheswararao], [~rakeshr], Thank you both for your valuable comments! I have updated our patch according to your suggestions except one. Feedback to Uma's above comment: # Datanode will clean up all the data under the configured pmem volumes. We will document this clearly. # Indeed, #verifyIfValidPmemVolume can/should be in package scope. I have updated. # For pmem, the cache loader also serves as volume manager. It would be better to move outside. I tend to refactor it in the next subtask. # Please also refer to Rakesh's above comment. I agree with you both and have named java based impl as PmemMappableBlockLoader. For native pmdk based impl in next subtask, I will name it as NativePmemMappableBlockLoader. FileMappedBlock has also been changed to PmemMappedBlock. # I think using FileChannel#transferTo is a good idea. Its JavaDoc says: {color:#629755}This method is potentially much more efficient than a simple loop {color}{color:#629755}* that reads from this channel and writes to the target channel.{color} *We can have more discussions on it.* cc. [~rakeshr] # As you pointed out, #afterCache just set the cache path after block replica is cached. It is evident that only pmem cache needs setting path for cached replica. So we use mappableBlock#afterCache to do that to avoid if-else check, which may be unavoidable if move replica#setCachePath into FSDataSetCache. Hope I have got your point. # As 6th item says. # We have a catch block to catch this exception and inside the catch block the IOException will be thrown again with specific exception message. Hope this is reasonable. # Agree with you. I have updated as you suggested. # Good insight. Currently, if a volume is full, the cache loader will not remove it. There are some potential improvements for volume management & selection strategy. I tend to optimize it in other JIRA. # I have updated as you suggested. # Good point. I have just refined that piece of code. Then, the exception will be thrown from #loadVolumes only if the count of valid pmem volumes is 0. # As I discussed with Uma offline, after considering the size of current pmem products, one pmem volume may not be able to cache 20k or more blocks. So in such level, we think it is OK to cache data into one dir as implemented currently. Thanks again for so many valuable comments from [~umamaheswararao] & [~rakeshr]. Since the new patch has so many updates, I have uploaded it to this JIRA. There still needs some refine work. More importantly, we will discuss the impl based on FileChannel#transferTo. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch, HDFS-14355.003.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16797940#comment-16797940 ] Rakesh R commented on HDFS-14355: - {quote} FileMappableBlockLoader: Actually this class implementing the block loading for pmem. So, should this name say PmemFileMappableBlockLoader/PmemMappableBlockLoader? HDFS-14356 impl may name that implementation class name as NativePmemMappableBlockLoader (that will be pmdk based impl) ? Does this make sense ? {quote} {{PmemMappableBlockLoader}} and {{NativePmemMappableBlockLoader}} looks good to me. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16797627#comment-16797627 ] Uma Maheswara Rao G commented on HDFS-14355: [~PhiloHe] Thanks for working on this. Thanks [~rakeshr] for thorough reviews. I have few more comments to address. # // Remove all files under the volume. FileUtils.cleanDirectory(locFile); is it safe to clean the existing files? # public static void verifyIfValidPmemVolume(File pmemDir) Why this is public? package scope does not work? # FileMappableBlockLoader: currently this implementation is handling more than block loading. Ex: volume management. Probably you may want to consider having PmemVolumeManager class which can manage all this volumes and refification etc? I am ok if you want to take up this in other JIRA. Similar/same volume management may be needed in HDFS-14356 as well. Considering that, it worth moving to common place. What do you say? # FileMappableBlockLoader: Actually this class implementing the block loading for pmem. So, should this name say PmemFileMappableBlockLoader/PmemMappableBlockLoader? HDFS-14356 impl may name that implementation class name as NativePmemMappableBlockLoader (that will be pmdk based impl) ? Does this make sense ? cc [~rakeshr] # FileMappableBlockLoader : Currently you are reading data from input stream and verifying checksum and writing that buffer to MBB. One thought here is: how about using FileChannel#transferTo API for transferring data from one channel to other natively. and then do mmap on destination file(assuming mmap may be faster in target file) and do checksum verification on it? I have not checked this here, just checking whether gives any further improvemeny as we are avoiding rading from HDD to user space. # FileMappedBlock: afterCache is basically getting block replica and setting the path. And this method used in FsDatasetCache. Why dont to expose required info from MappedBlock, that is key and filePath and call directly replica#setCachePath in FSDataSetCache? # ReplicaInfo replica = dataset.getBlockReplica(key.getBlockPoolId(), key.getBlockId()); replica.setCachePath(filePath); # if (!result) { throw new IOException(); } Please add message here, possible reason for failure etc. # Config Description: "Currently, there are two cache loaders implemented:" I don't think you need to mention exact number of loaders (1/2/3), instead you can say Current available cacheLoaders are x, y. So you need not update this number when added new loader, just add that loader next to existing ones. # What happens if no space available on after volume filled with cached blocks? do you still choose that volume? do you need to update count and removed that volume for further writes? # Javadoc comment: "TODO: Refine location selection policy by considering storage utilization" Add this TODO at getOneLocation API as thats the relavent place. I still dont think this valume management should be done by Loaders. # private void loadVolumes(String[] volumes): even one volume bad you would throw exception? or you have plans to skip that volume? I am ok if you would like to consider in next JIRAs. DN skips the bad volumes and proceed IIRC. # filePath = getOneLocation() + "/" + key.getBlockPoolId() + "-" + key.getBlockId(); This may be a problem when you cache more number of blocks? they all goes in same directory. DN creates subdirs in regular volumes. is there any issue if we maintain the same path structure in pmem volume? that way you can also avoid storing that cached path replica? Thanks [~PhiloHe] for the hard work you are doing on this. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16794975#comment-16794975 ] Feilong He commented on HDFS-14355: --- Thanks [~rakeshr] for your valuable comment. I got your point about the configuration for cache capacity of pmem. As synced with you, actually it is not reasonable to make pmem share this configuration with memory in the current implementation, since DataNode will also use this configuration to control memory usage for Lazy Persist Writes. I will update the patch for fixing this potential critical issue and other issues put forward in your other comments. Thanks so much! > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16794924#comment-16794924 ] Rakesh R commented on HDFS-14355: - {quote}This property specifies the cache capactiy for both memory & pmem. We kept same behavior upon the specified cache capacity for pmem cache as that for memory cache. {quote} Please look at my above comment#8. As we know the existing code deals with only the OS page cache, but now adding pmem as well and requires special intelligence to manage the stats/overflows if we allow to plug in two entities together. Just a quick thought is, to add new configuration {{dfs.datanode.cache.pmem.capacity}} and reserve/release logic can be moved to specific MappableBlockLoader's. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16794827#comment-16794827 ] Rakesh R commented on HDFS-14355: - Thanks [~PhiloHe] for the good progress. Adding second set of review comments, please go through it. # Close {{file = new RandomAccessFile(filePath, "rw");}} {code:java} IOUtils.closeQuietly(file); {code} # Looks like unused code, please remove it. {code:java} private FsDatasetImpl dataset; public MemoryMappableBlockLoader(FsDatasetImpl dataset) { this.dataset = dataset; } {code} # FileMappableBlockLoader#loadVolumes exception handling. I feel this is not required, please remove it. If you still need this for some purpose, then please add message arg to {{IOException("Failed to parse persistent memory location " + location, e)}} {code:java} } catch (IllegalArgumentException e) { LOG.error("Failed to parse persistent memory location " + location + " for " + e.getMessage()); throw new IOException(e); } {code} # Debuggability: FileMappableBlockLoader#verifyIfValidPmemVolume. Here, add exception message arg to {{throw new IOException(t);}} {code:java} throw new IOException( "Exception while writing data to persistent storage dir: " + pmemDir, t); {code} # Debuggability: FileMappableBlockLoader#load. Here, add blockFileName to the exception message. {code:java} if (out == null) { throw new IOException("Fail to map the block " + blockFileName + " to persistent storage."); } {code} # Debuggability: FileMappableBlockLoader#verifyChecksumAndMapBlock {code:java} throw new IOException( "checksum verification failed for the blockfile:" + blockFileName + ": premature EOF"); {code} # FileMappedBlock#afterCache. Suppressing exception may give wrong statistics, right? Assume, {{afterCache}} throws exception and not cached the file path. Here, the cached block won't be readable but unnecessarily consumes space. How about moving {{mappableBlock.afterCache();}} call right after {{mappableBlockLoader.load()}} function and add throws IOException clause to {{afterCache}} ? {code:java} LOG.warn("Fail to find the replica file of PoolID = " + key.getBlockPoolId() + ", BlockID = " + key.getBlockId() + " for :" + e.getMessage()); {code} # FsDatasetCache.java : reserve() and release() OS page size math is not required in FileMappedBlock. Appreciate if you could avoid these calls. Also, can you re-visit the caching and un-caching logic(for example, datanode.getMetrics() updates etc ) present in this class. {code:java} CachingTask#run(){ long newUsedBytes = reserve(length); ... if (reservedBytes) { release(length); } UncachingTask#run() { ... long newUsedBytes = release(value.mappableBlock.getLength()); {code} # I have changed jira status and triggered QA. Please fix checkstyle warnings and test case failures. Also, can you uncomment {{Test//(timeout=12)}} two occurrences in the test. > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16794759#comment-16794759 ] Feilong He commented on HDFS-14355: --- Hi [~rakeshr], I just noted that the following piece of code you mentioned is required actually. This property specifies the cache capactiy for both memory & pmem. We kept same behavior upon the specified cache capacity for pmem cache as that for memory cache. The default value is 0, which will disable HDFS cache on memory or pmem. It seems quite reasonable. Thanks! {code:java} myConf.setLong(DFSConfigKeys.DFS_DATANODE_MAX_LOCKED_MEMORY_KEY, CACHE_CAPACITY);{code} > Implement HDFS cache on SCM by using pure java mapped byte buffer > - > > Key: HDFS-14355 > URL: https://issues.apache.org/jira/browse/HDFS-14355 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: caching, datanode >Reporter: Feilong He >Assignee: Feilong He >Priority: Major > Attachments: HDFS-14355.000.patch, HDFS-14355.001.patch, > HDFS-14355.002.patch > > > This task is to implement the caching to persistent memory using pure > {{java.nio.MappedByteBuffer}}, which could be useful in case native support > isn't available or convenient in some environments or platforms. -- This message was sent by Atlassian JIRA (v7.6.3#76005) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-14355) Implement HDFS cache on SCM by using pure java mapped byte buffer
[ https://issues.apache.org/jira/browse/HDFS-14355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16794530#comment-16794530 ] Hadoop QA commented on HDFS-14355: -- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 23s{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 2 new or modified test files. {color} | || || || || {color:brown} trunk Compile Tests {color} || | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 17m 5s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 57s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 59s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 2s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 13m 17s{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} 1m 55s{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} 0m 58s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m 53s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 53s{color} | {color:green} the patch passed {color} | | {color:orange}-0{color} | {color:orange} checkstyle {color} | {color:orange} 0m 54s{color} | {color:orange} hadoop-hdfs-project/hadoop-hdfs: The patch generated 16 new + 528 unchanged - 0 fixed = 544 total (was 528) {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 0m 59s{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} 12m 17s{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 1s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 47s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red} 98m 54s{color} | {color:red} hadoop-hdfs in the patch failed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 31s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}154m 23s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.server.datanode.fsdataset.impl.TestCacheWithFileMappableBlockLoader | | | hadoop.hdfs.TestReconstructStripedFileWithRandomECPolicy | | | hadoop.hdfs.server.datanode.TestDataNodeErasureCodingMetrics | | | hadoop.hdfs.qjournal.server.TestJournalNodeSync | \\ \\ || Subsystem || Report/Notes || | Docker | Client=17.05.0-ce Server=17.05.0-ce Image:yetus/hadoop:8f97d6f | | JIRA Issue | HDFS-14355 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12962708/HDFS-14355.002.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle xml | | uname | Linux 65b244795663 3.13.0-153-generic #203-Ubuntu SMP Thu Jun 14 08:52:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/patchprocess/precommit/personality/provided.sh | | git revision | trunk / 926d548 | | maven | version: Apache Maven 3.3.9 | | Default Java | 1.8.0_191 | | findbugs | v3.1.0-RC1 | | checkstyle | https://buil