hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sangjin Lee (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HDFS-9579) Provide bytes-read-by-network-distance metrics at FileSystem.Statistics level
Date Tue, 26 Jan 2016 04:40:40 GMT

    [ https://issues.apache.org/jira/browse/HDFS-9579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15116671#comment-15116671

Sangjin Lee commented on HDFS-9579:

I went over the existing version of the patch.

First, I don't think using a {{HashMap}} for the bytes read per distance is thread safe. Note
that one thread (the owner) will modify this map in {{incrementBytesReadByDistance()}} while
any thread can read the values off the map via {{getBytesReadByDistance()}} and {{visitAll()}},
all unsynchronized. The problems could range memory visibility, ConcurrentModificationException,
and worse. We need to make this thread safe.

Another reservation I have with using a map: I'm a little concerned about memory implications.
An additional map per {{StatisticsData}} can add up. Can we find a way of avoiding using a
map? I know it may sound ugly, but one other option is to use individual long (volatile) variables.
That can also address the thread safety. Thoughts?

Also, in NetworkTopology.java (lines 373-381) {{equals()}} and {{hashCode()}} are superfluous
here as it does not modify the super behavior in any way.

> 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.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,
> 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

View raw message