From ad60807238c4f7779cb0685e7d39ca0c50e01b2f Mon Sep 17 00:00:00 2001 From: Colin Patrick Mccabe Date: Tue, 30 Jun 2015 16:46:25 -0700 Subject: [PATCH] HADOOP-12124. Add HTrace support for FsShell (cmccabe) --- hadoop-common-project/hadoop-common/CHANGES.txt | 2 ++ .../main/java/org/apache/hadoop/fs/FsShell.java | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 4d69a22950..19ba620d8b 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -671,6 +671,8 @@ Release 2.8.0 - UNRELEASED TestCryptoStreamsWithOpensslAesCtrCryptoCodec when OpenSSL is not installed. (wang) + HADOOP-12124. Add HTrace support for FsShell (cmccabe) + OPTIMIZATIONS HADOOP-11785. Reduce the number of listStatus operation in distcp diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FsShell.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FsShell.java index db73f6d170..24b6339357 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FsShell.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FsShell.java @@ -33,8 +33,13 @@ import org.apache.hadoop.fs.shell.CommandFactory; import org.apache.hadoop.fs.shell.FsCommand; import org.apache.hadoop.tools.TableListing; +import org.apache.hadoop.tracing.TraceUtils; import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.ToolRunner; +import org.apache.htrace.Sampler; +import org.apache.htrace.SamplerBuilder; +import org.apache.htrace.Trace; +import org.apache.htrace.TraceScope; /** Provide command line access to a FileSystem. */ @InterfaceAudience.Private @@ -47,6 +52,7 @@ public class FsShell extends Configured implements Tool { private FileSystem fs; private Trash trash; protected CommandFactory commandFactory; + private Sampler traceSampler; private final String usagePrefix = "Usage: hadoop fs [generic options]"; @@ -272,7 +278,8 @@ private TableListing createOptionTableListing() { public int run(String argv[]) throws Exception { // initialize FsShell init(); - + traceSampler = new SamplerBuilder(TraceUtils. + wrapHadoopConf("dfs.shell.htrace.", getConf())).build(); int exitCode = -1; if (argv.length < 1) { printUsage(System.err); @@ -284,7 +291,12 @@ public int run(String argv[]) throws Exception { if (instance == null) { throw new UnknownCommandException(); } - exitCode = instance.run(Arrays.copyOfRange(argv, 1, argv.length)); + TraceScope scope = Trace.startSpan(instance.getCommandName(), traceSampler); + try { + exitCode = instance.run(Arrays.copyOfRange(argv, 1, argv.length)); + } finally { + scope.close(); + } } catch (IllegalArgumentException e) { displayError(cmd, e.getLocalizedMessage()); if (instance != null) {