[ https://issues.apache.org/jira/browse/HDFS-9579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15170428#comment-15170428 ]
Mingliang Liu commented on HDFS-9579: ------------------------------------- The latest patch looks pretty good to me overall. Nice work. Thanks for reporting and working on this, [~mingma]. +1 (non-binding) after the following comments are addressed/considered. 1. {{DFSClient#stats}} is package local mainly because it's used in {{DFSInputStream}} for updating the read bytes counter. I'm wondering if we can delegate the {{updateFileSystemReadStats}} logic to {{DFSClient}}. This way the {{stats}} is confined in {{DFSClient}} and thus transparent to {{DFSInputStream}}. 2. As the erasure coding merged in {{trunk}} branch, we have to maintain the {{DFSStripeInputStream}} along with {{DFSInputStream}}. In this case, we need update {{DFSStripeInputStream#readWithStrategy}} as well, I suppose? 3. Nit for reducing failing message confusion: {code:java} - assertEquals(cluster.getDistance(node1, node2), 0); + assertEquals(0, cluster.getDistance(node1, node2)); {code} See [http://junit.org/javadoc/latest/org/junit/Assert.html#assertEquals(java.lang.Object, java.lang.Object)] > Provide bytes-read-by-network-distance metrics at FileSystem.Statistics level > ----------------------------------------------------------------------------- > > Key: HDFS-9579 > URL: https://issues.apache.org/jira/browse/HDFS-9579 > Project: Hadoop HDFS > Issue Type: Improvement > Reporter: Ming Ma > Assignee: Ming Ma > Attachments: HDFS-9579-2.patch, HDFS-9579-3.patch, HDFS-9579-4.patch, > HDFS-9579-5.patch, HDFS-9579-6.patch, HDFS-9579.patch, MR job counters.png > > > For cross DC distcp or other applications, it becomes useful to have insight > as to the traffic volume for each network distance to distinguish cross-DC > traffic, local-DC-remote-rack, etc. > FileSystem's existing {{bytesRead}} metrics tracks all the bytes read. To > provide additional metrics for each network distance, we can add additional > metrics to FileSystem level and have {{DFSInputStream}} update the value > based on the network distance between client and the datanode. > {{DFSClient}} will resolve client machine's network location as part of its > initialization. It doesn't need to resolve datanode's network location for > each read as {{DatanodeInfo}} already has the info. > There are existing HDFS specific metrics such as {{ReadStatistics}} and > {{DFSHedgedReadMetrics}}. But these metrics are only accessible via > {{DFSClient}} or {{DFSInputStream}}. Not something that application framework > such as MR and Tez can get to. That is the benefit of storing these new > metrics in FileSystem.Statistics. > This jira only includes metrics generation by HDFS. The consumption of these > metrics at MR and Tez will be tracked by separated jiras. > We can add similar metrics for HDFS write scenario later if it is necessary. -- This message was sent by Atlassian JIRA (v6.3.4#6332)