diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index db0526ce709..dfe29e61b4d 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -80,6 +80,8 @@ Release 2.5.0 - UNRELEASED HADOOP-10691. Improve the readability of 'hadoop fs -help'. (Lei Xu via wang) + HADOOP-10688. Expose thread-level FileSystem StatisticsData (Sandy Ryza) + OPTIMIZATIONS BUG FIXES diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java index 93a9ac23c97..25cb147fc67 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java @@ -2805,7 +2805,7 @@ public abstract class FileSystem extends Configured implements Closeable { * be perceived as atomic with respect to other threads, which is all we * need. */ - private static class StatisticsData { + public static class StatisticsData { volatile long bytesRead; volatile long bytesWritten; volatile int readOps; @@ -2850,6 +2850,26 @@ public abstract class FileSystem extends Configured implements Closeable { + readOps + " read ops, " + largeReadOps + " large read ops, " + writeOps + " write ops"; } + + public long getBytesRead() { + return bytesRead; + } + + public long getBytesWritten() { + return bytesWritten; + } + + public int getReadOps() { + return readOps; + } + + public int getLargeReadOps() { + return largeReadOps; + } + + public int getWriteOps() { + return writeOps; + } } private interface StatisticsAggregator { @@ -2908,7 +2928,7 @@ public abstract class FileSystem extends Configured implements Closeable { /** * Get or create the thread-local data associated with the current thread. */ - private StatisticsData getThreadData() { + public StatisticsData getThreadStatistics() { StatisticsData data = threadData.get(); if (data == null) { data = new StatisticsData( @@ -2929,7 +2949,7 @@ public abstract class FileSystem extends Configured implements Closeable { * @param newBytes the additional bytes read */ public void incrementBytesRead(long newBytes) { - getThreadData().bytesRead += newBytes; + getThreadStatistics().bytesRead += newBytes; } /** @@ -2937,7 +2957,7 @@ public abstract class FileSystem extends Configured implements Closeable { * @param newBytes the additional bytes written */ public void incrementBytesWritten(long newBytes) { - getThreadData().bytesWritten += newBytes; + getThreadStatistics().bytesWritten += newBytes; } /** @@ -2945,7 +2965,7 @@ public abstract class FileSystem extends Configured implements Closeable { * @param count number of read operations */ public void incrementReadOps(int count) { - getThreadData().readOps += count; + getThreadStatistics().readOps += count; } /** @@ -2953,7 +2973,7 @@ public abstract class FileSystem extends Configured implements Closeable { * @param count number of large read operations */ public void incrementLargeReadOps(int count) { - getThreadData().largeReadOps += count; + getThreadStatistics().largeReadOps += count; } /** @@ -2961,7 +2981,7 @@ public abstract class FileSystem extends Configured implements Closeable { * @param count number of write operations */ public void incrementWriteOps(int count) { - getThreadData().writeOps += count; + getThreadStatistics().writeOps += count; } /**