From a83a3ec21ed96d4682828ee355d6531f80b46ee8 Mon Sep 17 00:00:00 2001 From: Gang Liao Date: Thu, 10 Oct 2019 00:50:16 -0400 Subject: [PATCH] NN_BECHMARK route --- .../nnproxy/server/mount/MountsManager.java | 9 +++++ .../hdfs/nnproxy/server/proxy/Router.java | 34 +++++++++++-------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs-nnproxy/src/main/java/org/apache/hadoop/hdfs/nnproxy/server/mount/MountsManager.java b/hadoop-hdfs-project/hadoop-hdfs-nnproxy/src/main/java/org/apache/hadoop/hdfs/nnproxy/server/mount/MountsManager.java index fcd71f3a4b2..022fb138e87 100755 --- a/hadoop-hdfs-project/hadoop-hdfs-nnproxy/src/main/java/org/apache/hadoop/hdfs/nnproxy/server/mount/MountsManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs-nnproxy/src/main/java/org/apache/hadoop/hdfs/nnproxy/server/mount/MountsManager.java @@ -121,6 +121,15 @@ public String resolve(String path) { return chosen.fsUri; } + public String resolveForBench(String path) { + String parent = ""; + if (path.charAt(49) == '/') + parent = s.substring(0, 49); + else + parent = s.substring(0, 50); + return this.lookupMap.get(parent).get(0).fsUri; + } + public String resolveOpt(String path) { MountEntry chosen = null; if (path == null) { diff --git a/hadoop-hdfs-project/hadoop-hdfs-nnproxy/src/main/java/org/apache/hadoop/hdfs/nnproxy/server/proxy/Router.java b/hadoop-hdfs-project/hadoop-hdfs-nnproxy/src/main/java/org/apache/hadoop/hdfs/nnproxy/server/proxy/Router.java index c0b090f8a0c..df67060e542 100755 --- a/hadoop-hdfs-project/hadoop-hdfs-nnproxy/src/main/java/org/apache/hadoop/hdfs/nnproxy/server/proxy/Router.java +++ b/hadoop-hdfs-project/hadoop-hdfs-nnproxy/src/main/java/org/apache/hadoop/hdfs/nnproxy/server/proxy/Router.java @@ -43,21 +43,27 @@ ClientProtocol getUpstreamProtocol(String user, String fs) throws ExecutionExcep } RouteInfo route(String path) throws IOException { - String logicalPath = path; - Matcher mch = TRASH_PATTERN.matcher(path); - if (mch.find()) { - logicalPath = "/" + mch.group(1); - LOG.debug("Hit trash pattern: " + path + " -> " + logicalPath); + String nnbench = System.getenv("NN_BECHMARK"); + if (nnbench != null) { + String fs = nnProxy.getMounts().resolveForBench(path); + return new RouteInfo(getProtocol(fs), path, fs); + } else { + String logicalPath = path; + Matcher mch = TRASH_PATTERN.matcher(path); + if (mch.find()) { + logicalPath = "/" + mch.group(1); + LOG.debug("Hit trash pattern: " + path + " -> " + logicalPath); + } + String fs = nnProxy.getMounts().resolveOpt(logicalPath); + if (fs == null) { + // mount to default path + fs = defaultNN; + } + if (LOG.isDebugEnabled()) { + LOG.debug("Resolved: " + path + " -> " + fs + path); + } + return new RouteInfo(getProtocol(fs), path, fs); } - String fs = nnProxy.getMounts().resolveOpt(logicalPath); - if (fs == null) { - // mount to default path - fs = defaultNN; - } - if (LOG.isDebugEnabled()) { - LOG.debug("Resolved: " + path + " -> " + fs + path); - } - return new RouteInfo(getProtocol(fs), path, fs); } ClientProtocol getProtocol(String fs) throws IOException {