You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ds...@apache.org on 2015/09/16 14:36:07 UTC

ambari git commit: AMBARI-13091 Upgrade AMS Phoenix + HBase to HDP-2.3.0.0 (dsen)

Repository: ambari
Updated Branches:
  refs/heads/trunk e9af9be37 -> 2fce6d258


AMBARI-13091 Upgrade AMS Phoenix + HBase to HDP-2.3.0.0 (dsen)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2fce6d25
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2fce6d25
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2fce6d25

Branch: refs/heads/trunk
Commit: 2fce6d258bb997fa80ace2bd2f637517ee4fbec2
Parents: e9af9be
Author: Dmytro Sen <ds...@apache.org>
Authored: Wed Sep 16 15:35:52 2015 +0300
Committer: Dmytro Sen <ds...@apache.org>
Committed: Wed Sep 16 15:35:52 2015 +0300

----------------------------------------------------------------------
 .../ambari-metrics-timelineservice/pom.xml      |   6 +-
 .../ApplicationHistoryClientService.java        | 164 +++++++++----------
 .../ApplicationHistoryManager.java              | 130 ++++++++++++++-
 .../ApplicationHistoryManagerImpl.java          |  10 +-
 .../ApplicationHistoryServer.java               |   3 +-
 .../webapp/AHSWebApp.java                       |  15 +-
 .../webapp/AHSWebServices.java                  |   6 +-
 .../timeline/AbstractMiniHBaseClusterTest.java  |   2 +-
 .../webapp/TestAHSWebApp.java                   |  84 ++++++----
 .../webapp/TestAHSWebServices.java              |  15 +-
 ambari-metrics/pom.xml                          |   8 +-
 .../AMBARI_METRICS/0.1.0/metrics.json           |   4 +-
 12 files changed, 291 insertions(+), 156 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/2fce6d25/ambari-metrics/ambari-metrics-timelineservice/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/pom.xml b/ambari-metrics/ambari-metrics-timelineservice/pom.xml
index 705ea0f..91abbf8 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/pom.xml
+++ b/ambari-metrics/ambari-metrics-timelineservice/pom.xml
@@ -34,9 +34,9 @@
     <!-- Needed for generating FindBugs warnings using parent pom -->
     <!--<yarn.basedir>${project.parent.parent.basedir}</yarn.basedir>-->
     <protobuf.version>2.5.0</protobuf.version>
-    <hadoop.version>(2.6.0.2.2.0.0, 2.6.0.2.2.1.0)</hadoop.version>
-    <phoenix.version>4.2.0.2.2.1.0-2340</phoenix.version>
-    <hbase.version>0.98.4.2.2.0.0-2041-hadoop2</hbase.version>
+    <hadoop.version>2.7.1.2.3.0.0-2557</hadoop.version>
+    <phoenix.version>4.4.0.2.3.0.0-2557</phoenix.version>
+    <hbase.version>1.1.1.2.3.0.0-2557</hbase.version>
   </properties>
 
   <build>

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fce6d25/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryClientService.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryClientService.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryClientService.java
index a12e373..08beb5d 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryClientService.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryClientService.java
@@ -60,11 +60,11 @@ import org.apache.hadoop.yarn.exceptions.YarnException;
 import org.apache.hadoop.yarn.ipc.YarnRPC;
 import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration;
 
-public class ApplicationHistoryClientService extends AbstractService {
+public class ApplicationHistoryClientService extends AbstractService implements
+  ApplicationHistoryProtocol {
   private static final Log LOG = LogFactory
     .getLog(ApplicationHistoryClientService.class);
   private ApplicationHistoryManager history;
-  private ApplicationHistoryProtocol protocolHandler;
   private Server server;
   private InetSocketAddress bindAddress;
   private TimelineMetricConfiguration metricConfiguration;
@@ -72,7 +72,6 @@ public class ApplicationHistoryClientService extends AbstractService {
   public ApplicationHistoryClientService(ApplicationHistoryManager history) {
     super("ApplicationHistoryClientService");
     this.history = history;
-    this.protocolHandler = new ApplicationHSClientProtocolHandler();
   }
 
   public ApplicationHistoryClientService(ApplicationHistoryManager history,
@@ -89,7 +88,7 @@ public class ApplicationHistoryClientService extends AbstractService {
         YarnConfiguration.DEFAULT_TIMELINE_SERVICE_PORT);
 
     server =
-        rpc.getServer(ApplicationHistoryProtocol.class, protocolHandler,
+        rpc.getServer(ApplicationHistoryProtocol.class, this,
           address, conf, null, metricConfiguration.getTimelineMetricsServiceHandlerThreadCount());
 
     server.start();
@@ -112,7 +111,7 @@ public class ApplicationHistoryClientService extends AbstractService {
 
   @Private
   public ApplicationHistoryProtocol getClientHandler() {
-    return this.protocolHandler;
+    return this;
   }
 
   @Private
@@ -120,98 +119,97 @@ public class ApplicationHistoryClientService extends AbstractService {
     return this.bindAddress;
   }
 
-  private class ApplicationHSClientProtocolHandler implements
-      ApplicationHistoryProtocol {
 
-    @Override
-    public CancelDelegationTokenResponse cancelDelegationToken(
-        CancelDelegationTokenRequest request) throws YarnException, IOException {
-      // TODO Auto-generated method stub
-      return null;
-    }
 
-    @Override
-    public GetApplicationAttemptReportResponse getApplicationAttemptReport(
-        GetApplicationAttemptReportRequest request) throws YarnException,
-        IOException {
-      try {
-        GetApplicationAttemptReportResponse response =
-            GetApplicationAttemptReportResponse.newInstance(history
-              .getApplicationAttempt(request.getApplicationAttemptId()));
-        return response;
-      } catch (IOException e) {
-        throw new ApplicationAttemptNotFoundException(e.getMessage());
-      }
-    }
+  @Override
+  public CancelDelegationTokenResponse cancelDelegationToken(
+    CancelDelegationTokenRequest request) throws YarnException, IOException {
+    // TODO Auto-generated method stub
+    return null;
+  }
 
-    @Override
-    public GetApplicationAttemptsResponse getApplicationAttempts(
-        GetApplicationAttemptsRequest request) throws YarnException,
-        IOException {
-      GetApplicationAttemptsResponse response =
-          GetApplicationAttemptsResponse
-            .newInstance(new ArrayList<ApplicationAttemptReport>(history
-              .getApplicationAttempts(request.getApplicationId()).values()));
+  @Override
+  public GetApplicationAttemptReportResponse getApplicationAttemptReport(
+    GetApplicationAttemptReportRequest request) throws YarnException,
+    IOException {
+    try {
+      GetApplicationAttemptReportResponse response =
+        GetApplicationAttemptReportResponse.newInstance(history
+          .getApplicationAttempt(request.getApplicationAttemptId()));
       return response;
+    } catch (IOException e) {
+      throw new ApplicationAttemptNotFoundException(e.getMessage());
     }
+  }
 
-    @Override
-    public GetApplicationReportResponse getApplicationReport(
-        GetApplicationReportRequest request) throws YarnException, IOException {
-      try {
-        ApplicationId applicationId = request.getApplicationId();
-        GetApplicationReportResponse response =
-            GetApplicationReportResponse.newInstance(history
-              .getApplication(applicationId));
-        return response;
-      } catch (IOException e) {
-        throw new ApplicationNotFoundException(e.getMessage());
-      }
-    }
+  @Override
+  public GetApplicationAttemptsResponse getApplicationAttempts(
+    GetApplicationAttemptsRequest request) throws YarnException,
+    IOException {
+    GetApplicationAttemptsResponse response =
+      GetApplicationAttemptsResponse
+        .newInstance(new ArrayList<ApplicationAttemptReport>(history
+          .getApplicationAttempts(request.getApplicationId()).values()));
+    return response;
+  }
 
-    @Override
-    public GetApplicationsResponse getApplications(
-        GetApplicationsRequest request) throws YarnException, IOException {
-      GetApplicationsResponse response =
-          GetApplicationsResponse.newInstance(new ArrayList<ApplicationReport>(
-            history.getAllApplications().values()));
+  @Override
+  public GetApplicationReportResponse getApplicationReport(
+    GetApplicationReportRequest request) throws YarnException, IOException {
+    try {
+      ApplicationId applicationId = request.getApplicationId();
+      GetApplicationReportResponse response =
+        GetApplicationReportResponse.newInstance(history
+          .getApplication(applicationId));
       return response;
+    } catch (IOException e) {
+      throw new ApplicationNotFoundException(e.getMessage());
     }
+  }
 
-    @Override
-    public GetContainerReportResponse getContainerReport(
-        GetContainerReportRequest request) throws YarnException, IOException {
-      try {
-        GetContainerReportResponse response =
-            GetContainerReportResponse.newInstance(history.getContainer(request
-              .getContainerId()));
-        return response;
-      } catch (IOException e) {
-        throw new ContainerNotFoundException(e.getMessage());
-      }
-    }
+  @Override
+  public GetApplicationsResponse getApplications(
+    GetApplicationsRequest request) throws YarnException, IOException {
+    GetApplicationsResponse response =
+      GetApplicationsResponse.newInstance(new ArrayList<ApplicationReport>(
+        history.getApplications(request.getLimit()).values()));
+    return response;
+  }
 
-    @Override
-    public GetContainersResponse getContainers(GetContainersRequest request)
-        throws YarnException, IOException {
-      GetContainersResponse response =
-          GetContainersResponse.newInstance(new ArrayList<ContainerReport>(
-            history.getContainers(request.getApplicationAttemptId()).values()));
+  @Override
+  public GetContainerReportResponse getContainerReport(
+    GetContainerReportRequest request) throws YarnException, IOException {
+    try {
+      GetContainerReportResponse response =
+        GetContainerReportResponse.newInstance(history.getContainer(request
+          .getContainerId()));
       return response;
+    } catch (IOException e) {
+      throw new ContainerNotFoundException(e.getMessage());
     }
+  }
 
-    @Override
-    public GetDelegationTokenResponse getDelegationToken(
-        GetDelegationTokenRequest request) throws YarnException, IOException {
-      // TODO Auto-generated method stub
-      return null;
-    }
+  @Override
+  public GetContainersResponse getContainers(GetContainersRequest request)
+    throws YarnException, IOException {
+    GetContainersResponse response =
+      GetContainersResponse.newInstance(new ArrayList<ContainerReport>(
+        history.getContainers(request.getApplicationAttemptId()).values()));
+    return response;
+  }
 
-    @Override
-    public RenewDelegationTokenResponse renewDelegationToken(
-        RenewDelegationTokenRequest request) throws YarnException, IOException {
-      // TODO Auto-generated method stub
-      return null;
-    }
+  @Override
+  public GetDelegationTokenResponse getDelegationToken(
+    GetDelegationTokenRequest request) throws YarnException, IOException {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public RenewDelegationTokenResponse renewDelegationToken(
+    RenewDelegationTokenRequest request) throws YarnException, IOException {
+    // TODO Auto-generated method stub
+    return null;
   }
+
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fce6d25/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManager.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManager.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManager.java
index db25d29..5ddb3af 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManager.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManager.java
@@ -18,11 +18,129 @@
 
 package org.apache.hadoop.yarn.server.applicationhistoryservice;
 
-import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.classification.InterfaceStability;
-import org.apache.hadoop.yarn.server.api.ApplicationContext;
+import java.io.IOException;
+import java.util.Map;
+
+import org.apache.hadoop.classification.InterfaceAudience.Private;
+import org.apache.hadoop.classification.InterfaceAudience.Public;
+import org.apache.hadoop.classification.InterfaceStability.Unstable;
+import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
+import org.apache.hadoop.yarn.api.records.ApplicationAttemptReport;
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.api.records.ApplicationReport;
+import org.apache.hadoop.yarn.api.records.ContainerId;
+import org.apache.hadoop.yarn.api.records.ContainerReport;
+import org.apache.hadoop.yarn.exceptions.YarnException;
+
+@Private
+@Unstable
+public interface ApplicationHistoryManager {
+  /**
+   * This method returns Application {@link ApplicationReport} for the specified
+   * {@link ApplicationId}.
+   *
+   * @param appId
+   *
+   * @return {@link ApplicationReport} for the ApplicationId.
+   * @throws YarnException
+   * @throws IOException
+   */
+  @Public
+  @Unstable
+  ApplicationReport getApplication(ApplicationId appId) throws YarnException,
+    IOException;
+
+  /**
+   * This method returns the given number of Application
+   * {@link ApplicationReport}s.
+   *
+   * @param appsNum
+   *
+   * @return map of {@link ApplicationId} to {@link ApplicationReport}s.
+   * @throws YarnException
+   * @throws IOException
+   */
+  @Public
+  @Unstable
+  Map<ApplicationId, ApplicationReport>
+  getApplications(long appsNum) throws YarnException,
+    IOException;
+
+  /**
+   * Application can have multiple application attempts
+   * {@link ApplicationAttemptReport}. This method returns the all
+   * {@link ApplicationAttemptReport}s for the Application.
+   *
+   * @param appId
+   *
+   * @return all {@link ApplicationAttemptReport}s for the Application.
+   * @throws YarnException
+   * @throws IOException
+   */
+  @Public
+  @Unstable
+  Map<ApplicationAttemptId, ApplicationAttemptReport> getApplicationAttempts(
+    ApplicationId appId) throws YarnException, IOException;
+
+  /**
+   * This method returns {@link ApplicationAttemptReport} for specified
+   * {@link ApplicationId}.
+   *
+   * @param appAttemptId
+   *          {@link ApplicationAttemptId}
+   * @return {@link ApplicationAttemptReport} for ApplicationAttemptId
+   * @throws YarnException
+   * @throws IOException
+   */
+  @Public
+  @Unstable
+  ApplicationAttemptReport getApplicationAttempt(
+    ApplicationAttemptId appAttemptId) throws YarnException, IOException;
+
+  /**
+   * This method returns {@link ContainerReport} for specified
+   * {@link ContainerId}.
+   *
+   * @param containerId
+   *          {@link ContainerId}
+   * @return {@link ContainerReport} for ContainerId
+   * @throws YarnException
+   * @throws IOException
+   */
+  @Public
+  @Unstable
+  ContainerReport getContainer(ContainerId containerId) throws YarnException,
+    IOException;
+
+  /**
+   * This method returns {@link ContainerReport} for specified
+   * {@link ApplicationAttemptId}.
+   *
+   * @param appAttemptId
+   *          {@link ApplicationAttemptId}
+   * @return {@link ContainerReport} for ApplicationAttemptId
+   * @throws YarnException
+   * @throws IOException
+   */
+  @Public
+  @Unstable
+  ContainerReport getAMContainer(ApplicationAttemptId appAttemptId)
+    throws YarnException, IOException;
+
+  /**
+   * This method returns Map of {@link ContainerId} to {@link ContainerReport}
+   * for specified {@link ApplicationAttemptId}.
+   *
+   * @param appAttemptId
+   *          {@link ApplicationAttemptId}
+   * @return Map of {@link ContainerId} to {@link ContainerReport} for
+   *         ApplicationAttemptId
+   * @throws YarnException
+   * @throws IOException
+   */
+  @Public
+  @Unstable
+  Map<ContainerId, ContainerReport> getContainers(
+    ApplicationAttemptId appAttemptId) throws YarnException, IOException;
 
-@InterfaceAudience.Public
-@InterfaceStability.Unstable
-public interface ApplicationHistoryManager extends ApplicationContext {
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fce6d25/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManagerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManagerImpl.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManagerImpl.java
index 386a9f1..d699264 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManagerImpl.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManagerImpl.java
@@ -104,12 +104,12 @@ public class ApplicationHistoryManagerImpl extends AbstractService implements
   }
 
   @Override
-  public Map<ApplicationId, ApplicationReport> getAllApplications()
-      throws IOException {
+  public Map<ApplicationId, ApplicationReport> getApplications(long appsNum)
+    throws IOException {
     Map<ApplicationId, ApplicationHistoryData> histData =
-        historyStore.getAllApplications();
+      historyStore.getAllApplications();
     HashMap<ApplicationId, ApplicationReport> applicationsReport =
-        new HashMap<ApplicationId, ApplicationReport>();
+      new HashMap<ApplicationId, ApplicationReport>();
     for (Entry<ApplicationId, ApplicationHistoryData> entry : histData
       .entrySet()) {
       applicationsReport.put(entry.getKey(),
@@ -222,7 +222,7 @@ public class ApplicationHistoryManagerImpl extends AbstractService implements
       containerHistory.getStartTime(), containerHistory.getFinishTime(),
       containerHistory.getDiagnosticsInfo(), logUrl,
       containerHistory.getContainerExitStatus(),
-      containerHistory.getContainerState());
+      containerHistory.getContainerState(), serverHttpAddress);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fce6d25/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryServer.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryServer.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryServer.java
index 24223a5..d79ca68 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryServer.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryServer.java
@@ -180,7 +180,8 @@ public class ApplicationHistoryServer extends CompositeService {
             .withHttpSpnegoKeytabKey(
               YarnConfiguration.TIMELINE_SERVICE_KEYTAB)
             .at(bindAddress)
-            .start(new AHSWebApp(historyManager, timelineStore, timelineMetricStore));
+            .start(new AHSWebApp(timelineStore, timelineMetricStore,
+              ahsClientService));
     } catch (Exception e) {
       String msg = "AHSWebApp failed to start.";
       LOG.error(msg, e);

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fce6d25/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AHSWebApp.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AHSWebApp.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AHSWebApp.java
index 8cff741..72facce 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AHSWebApp.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AHSWebApp.java
@@ -19,7 +19,8 @@ package org.apache.hadoop.yarn.server.applicationhistoryservice.webapp;
 
 import static org.apache.hadoop.yarn.util.StringHelper.pajoin;
 
-import org.apache.hadoop.yarn.server.api.ApplicationContext;
+import org.apache.hadoop.yarn.api.ApplicationBaseProtocol;
+import org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryClientService;
 import org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryManager;
 import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricStore;
 import org.apache.hadoop.yarn.server.applicationhistoryservice.timeline.TimelineStore;
@@ -30,15 +31,17 @@ import org.apache.hadoop.yarn.webapp.YarnWebParams;
 
 public class AHSWebApp extends WebApp implements YarnWebParams {
 
-  private final ApplicationHistoryManager applicationHistoryManager;
   private final TimelineStore timelineStore;
   private final TimelineMetricStore timelineMetricStore;
+  private final ApplicationHistoryClientService historyClientService;
+
+  public AHSWebApp(TimelineStore timelineStore,
+    TimelineMetricStore timelineMetricStore,
+    ApplicationHistoryClientService historyClientService) {
 
-  public AHSWebApp(ApplicationHistoryManager applicationHistoryManager,
-      TimelineStore timelineStore, TimelineMetricStore timelineMetricStore) {
-    this.applicationHistoryManager = applicationHistoryManager;
     this.timelineStore = timelineStore;
     this.timelineMetricStore = timelineMetricStore;
+    this.historyClientService = historyClientService;
   }
 
   @Override
@@ -47,7 +50,7 @@ public class AHSWebApp extends WebApp implements YarnWebParams {
     bind(AHSWebServices.class);
     bind(TimelineWebServices.class);
     bind(GenericExceptionHandler.class);
-    bind(ApplicationContext.class).toInstance(applicationHistoryManager);
+    bind(ApplicationBaseProtocol.class).toInstance(historyClientService);
     bind(TimelineStore.class).toInstance(timelineStore);
     bind(TimelineMetricStore.class).toInstance(timelineMetricStore);
     route("/", AHSController.class);

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fce6d25/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AHSWebServices.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AHSWebServices.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AHSWebServices.java
index 2040f57..3064d2d 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AHSWebServices.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/AHSWebServices.java
@@ -31,8 +31,8 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 
+import org.apache.hadoop.yarn.api.ApplicationBaseProtocol;
 import org.apache.hadoop.yarn.api.records.YarnApplicationState;
-import org.apache.hadoop.yarn.server.api.ApplicationContext;
 import org.apache.hadoop.yarn.server.webapp.WebServices;
 import org.apache.hadoop.yarn.server.webapp.dao.AppAttemptInfo;
 import org.apache.hadoop.yarn.server.webapp.dao.AppAttemptsInfo;
@@ -50,8 +50,8 @@ import com.google.inject.Singleton;
 public class AHSWebServices extends WebServices {
 
   @Inject
-  public AHSWebServices(ApplicationContext appContext) {
-    super(appContext);
+  public AHSWebServices(ApplicationBaseProtocol appBaseProt) {
+    super(appBaseProt);
   }
 
   @GET

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fce6d25/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/AbstractMiniHBaseClusterTest.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/AbstractMiniHBaseClusterTest.java b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/AbstractMiniHBaseClusterTest.java
index 442dbf5..a4d53b3 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/AbstractMiniHBaseClusterTest.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/AbstractMiniHBaseClusterTest.java
@@ -72,7 +72,7 @@ public abstract class AbstractMiniHBaseClusterTest extends BaseTest {
 
   @AfterClass
   public static void doTeardown() throws Exception {
-    dropAllTables();
+    dropNonSystemTables();
   }
 
   @After

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fce6d25/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebApp.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebApp.java b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebApp.java
index 5f23f83..605358f 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebApp.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebApp.java
@@ -20,15 +20,16 @@ package org.apache.hadoop.yarn.server.applicationhistoryservice.webapp;
 
 import static org.apache.hadoop.yarn.webapp.Params.TITLE;
 import static org.mockito.Mockito.mock;
-import junit.framework.Assert;
 
+import org.junit.Assert;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.yarn.api.ApplicationBaseProtocol;
 import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
 import org.apache.hadoop.yarn.api.records.ApplicationId;
 import org.apache.hadoop.yarn.api.records.ContainerId;
 import org.apache.hadoop.yarn.api.records.YarnApplicationState;
 import org.apache.hadoop.yarn.conf.YarnConfiguration;
-import org.apache.hadoop.yarn.server.api.ApplicationContext;
+import org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryClientService;
 import org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryManager;
 import org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryManagerImpl;
 import org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryStore;
@@ -42,8 +43,6 @@ import org.junit.Test;
 
 import com.google.inject.Injector;
 
-import javax.servlet.http.HttpServletResponse;
-
 public class TestAHSWebApp extends ApplicationHistoryStoreTestUtils {
 
   public void setApplicationHistoryStore(ApplicationHistoryStore store) {
@@ -59,102 +58,119 @@ public class TestAHSWebApp extends ApplicationHistoryStoreTestUtils {
   public void testAppControllerIndex() throws Exception {
     ApplicationHistoryManager ahManager = mock(ApplicationHistoryManager.class);
     Injector injector =
-        WebAppTests.createMockInjector(ApplicationHistoryManager.class,
-          ahManager);
+      WebAppTests.createMockInjector(ApplicationHistoryManager.class,
+        ahManager);
     AHSController controller = injector.getInstance(AHSController.class);
     controller.index();
-    Assert.assertEquals("Application History", controller.get(TITLE, "unknown"));
+    Assert
+      .assertEquals("Application History", controller.get(TITLE, "unknown"));
   }
 
   @Test
   public void testView() throws Exception {
     Injector injector =
-        WebAppTests.createMockInjector(ApplicationContext.class,
-          mockApplicationHistoryManager(5, 1, 1));
+      WebAppTests.createMockInjector(ApplicationBaseProtocol.class,
+        mockApplicationHistoryClientService(5, 1, 1));
     AHSView ahsViewInstance = injector.getInstance(AHSView.class);
 
     ahsViewInstance.render();
-    //WebAppTests.flushOutput(injector);
+    WebAppTests.flushOutput(injector);
 
     ahsViewInstance.set(YarnWebParams.APP_STATE,
       YarnApplicationState.FAILED.toString());
     ahsViewInstance.render();
-    //WebAppTests.flushOutput(injector);
+    WebAppTests.flushOutput(injector);
 
     ahsViewInstance.set(YarnWebParams.APP_STATE, StringHelper.cjoin(
       YarnApplicationState.FAILED.toString(), YarnApplicationState.KILLED));
     ahsViewInstance.render();
-    //WebAppTests.flushOutput(injector);
+    WebAppTests.flushOutput(injector);
+  }
+
+  @Test
+  public void testAboutPage() throws Exception {
+    Injector injector =
+      WebAppTests.createMockInjector(ApplicationBaseProtocol.class,
+        mockApplicationHistoryClientService(0, 0, 0));
+    AboutPage aboutPageInstance = injector.getInstance(AboutPage.class);
+
+    aboutPageInstance.render();
+    WebAppTests.flushOutput(injector);
+
+    aboutPageInstance.render();
+    WebAppTests.flushOutput(injector);
   }
 
   @Test
   public void testAppPage() throws Exception {
     Injector injector =
-        WebAppTests.createMockInjector(ApplicationContext.class,
-          mockApplicationHistoryManager(1, 5, 1));
+      WebAppTests.createMockInjector(ApplicationBaseProtocol.class,
+        mockApplicationHistoryClientService(1, 5, 1));
     AppPage appPageInstance = injector.getInstance(AppPage.class);
 
     appPageInstance.render();
-    //WebAppTests.flushOutput(injector);
+    WebAppTests.flushOutput(injector);
 
     appPageInstance.set(YarnWebParams.APPLICATION_ID, ApplicationId
       .newInstance(0, 1).toString());
     appPageInstance.render();
-   // WebAppTests.flushOutput(injector);
+    WebAppTests.flushOutput(injector);
   }
 
   @Test
   public void testAppAttemptPage() throws Exception {
     Injector injector =
-        WebAppTests.createMockInjector(ApplicationContext.class,
-          mockApplicationHistoryManager(1, 1, 5));
+      WebAppTests.createMockInjector(ApplicationBaseProtocol.class,
+        mockApplicationHistoryClientService(1, 1, 5));
     AppAttemptPage appAttemptPageInstance =
-        injector.getInstance(AppAttemptPage.class);
+      injector.getInstance(AppAttemptPage.class);
 
     appAttemptPageInstance.render();
-    //WebAppTests.flushOutput(injector);
+    WebAppTests.flushOutput(injector);
 
     appAttemptPageInstance.set(YarnWebParams.APPLICATION_ATTEMPT_ID,
       ApplicationAttemptId.newInstance(ApplicationId.newInstance(0, 1), 1)
         .toString());
     appAttemptPageInstance.render();
-    //WebAppTests.flushOutput(injector);
+    WebAppTests.flushOutput(injector);
   }
 
   @Test
   public void testContainerPage() throws Exception {
     Injector injector =
-        WebAppTests.createMockInjector(ApplicationContext.class,
-          mockApplicationHistoryManager(1, 1, 1));
+      WebAppTests.createMockInjector(ApplicationBaseProtocol.class,
+        mockApplicationHistoryClientService(1, 1, 1));
     ContainerPage containerPageInstance =
-        injector.getInstance(ContainerPage.class);
+      injector.getInstance(ContainerPage.class);
 
     containerPageInstance.render();
-    //WebAppTests.flushOutput(injector);
+    WebAppTests.flushOutput(injector);
 
     containerPageInstance.set(
       YarnWebParams.CONTAINER_ID,
       ContainerId
-        .newInstance(
+        .newContainerId(
           ApplicationAttemptId.newInstance(ApplicationId.newInstance(0, 1), 1),
           1).toString());
     containerPageInstance.render();
-    //WebAppTests.flushOutput(injector);
+    WebAppTests.flushOutput(injector);
   }
 
-  ApplicationHistoryManager mockApplicationHistoryManager(int numApps,
-      int numAppAttempts, int numContainers) throws Exception {
+  ApplicationHistoryClientService mockApplicationHistoryClientService(int numApps,
+                                                                      int numAppAttempts, int numContainers) throws Exception {
     ApplicationHistoryManager ahManager =
-        new MockApplicationHistoryManagerImpl(store);
+      new MockApplicationHistoryManagerImpl(store);
+    ApplicationHistoryClientService historyClientService =
+      new ApplicationHistoryClientService(ahManager);
     for (int i = 1; i <= numApps; ++i) {
       ApplicationId appId = ApplicationId.newInstance(0, i);
       writeApplicationStartData(appId);
       for (int j = 1; j <= numAppAttempts; ++j) {
         ApplicationAttemptId appAttemptId =
-            ApplicationAttemptId.newInstance(appId, j);
+          ApplicationAttemptId.newInstance(appId, j);
         writeApplicationAttemptStartData(appAttemptId);
         for (int k = 1; k <= numContainers; ++k) {
-          ContainerId containerId = ContainerId.newInstance(appAttemptId, k);
+          ContainerId containerId = ContainerId.newContainerId(appAttemptId, k);
           writeContainerStartData(containerId);
           writeContainerFinishData(containerId);
         }
@@ -162,7 +178,7 @@ public class TestAHSWebApp extends ApplicationHistoryStoreTestUtils {
       }
       writeApplicationFinishData(appId);
     }
-    return ahManager;
+    return historyClientService;
   }
 
   class MockApplicationHistoryManagerImpl extends ApplicationHistoryManagerImpl {
@@ -175,7 +191,7 @@ public class TestAHSWebApp extends ApplicationHistoryStoreTestUtils {
 
     @Override
     protected ApplicationHistoryStore createApplicationHistoryStore(
-        Configuration conf) {
+      Configuration conf) {
       return store;
     }
   };

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fce6d25/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebServices.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebServices.java b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebServices.java
index 7ca5a03..e78dfcc 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebServices.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TestAHSWebServices.java
@@ -26,6 +26,7 @@ import javax.ws.rs.core.MediaType;
 import junit.framework.Assert;
 
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.yarn.api.ApplicationBaseProtocol;
 import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
 import org.apache.hadoop.yarn.api.records.ApplicationId;
 import org.apache.hadoop.yarn.api.records.ContainerId;
@@ -36,7 +37,7 @@ import org.apache.hadoop.yarn.api.records.Priority;
 import org.apache.hadoop.yarn.api.records.YarnApplicationAttemptState;
 import org.apache.hadoop.yarn.api.records.YarnApplicationState;
 import org.apache.hadoop.yarn.conf.YarnConfiguration;
-import org.apache.hadoop.yarn.server.api.ApplicationContext;
+import org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryClientService;
 import org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryManager;
 import org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryStore;
 import org.apache.hadoop.yarn.server.applicationhistoryservice.MemoryApplicationHistoryStore;
@@ -63,7 +64,7 @@ import com.sun.jersey.test.framework.WebAppDescriptor;
 
 public class TestAHSWebServices extends JerseyTest {
 
-  private static ApplicationHistoryManager ahManager;
+  private static ApplicationHistoryClientService historyClientService;
 
   private Injector injector = Guice.createInjector(new ServletModule() {
 
@@ -73,11 +74,11 @@ public class TestAHSWebServices extends JerseyTest {
       bind(AHSWebServices.class);
       bind(GenericExceptionHandler.class);
       try {
-        ahManager = mockApplicationHistoryManager();
+        historyClientService = mockApplicationHistoryManager();
       } catch (Exception e) {
         Assert.fail();
       }
-      bind(ApplicationContext.class).toInstance(ahManager);
+      bind(ApplicationBaseProtocol.class).toInstance(historyClientService);
       serve("/*").with(GuiceContainer.class);
     }
   });
@@ -90,14 +91,12 @@ public class TestAHSWebServices extends JerseyTest {
     }
   }
 
-  private ApplicationHistoryManager mockApplicationHistoryManager()
+  private ApplicationHistoryClientService mockApplicationHistoryManager()
       throws Exception {
     ApplicationHistoryStore store = new MemoryApplicationHistoryStore();
     TestAHSWebApp testAHSWebApp = new TestAHSWebApp();
     testAHSWebApp.setApplicationHistoryStore(store);
-    ApplicationHistoryManager ahManager =
-        testAHSWebApp.mockApplicationHistoryManager(5, 5, 5);
-    return ahManager;
+    return testAHSWebApp.mockApplicationHistoryClientService(5, 5, 5);
   }
 
   public TestAHSWebServices() {

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fce6d25/ambari-metrics/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/pom.xml b/ambari-metrics/pom.xml
index 27d8347..4e63cf2 100644
--- a/ambari-metrics/pom.xml
+++ b/ambari-metrics/pom.xml
@@ -36,10 +36,10 @@
     <python.ver>python &gt;= 2.6</python.ver>
     <deb.python.ver>python (&gt;= 2.6)</deb.python.ver>
     <!--TODO change to HDP URL-->
-    <hbase.tar>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/GA/2.2.0.0/tars/hbase-0.98.4.2.2.0.0-2041-hadoop2.tar.gz</hbase.tar>
-    <hbase.folder>hbase-0.98.4.2.2.0.0-2041-hadoop2</hbase.folder>
-    <hadoop.tar>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/GA/2.2.0.0/tars/hadoop-2.6.0.2.2.0.0-2041.tar.gz</hadoop.tar>
-    <hadoop.folder>hadoop-2.6.0.2.2.0.0-2041</hadoop.folder>
+    <hbase.tar>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.0.0/tars/hbase-1.1.1.2.3.0.0-2557.tar.gz</hbase.tar>
+    <hbase.folder>hbase-1.1.1.2.3.0.0-2557</hbase.folder>
+    <hadoop.tar>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.0.0/tars/hadoop-2.7.1.2.3.0.0-2557.tar.gz</hadoop.tar>
+    <hadoop.folder>hadoop-2.7.1.2.3.0.0-2557</hadoop.folder>
     <hbase.winpkg.zip>https://msibuilds.blob.core.windows.net/hdp/2.x/2.2.4.2/2/hbase-0.98.4.2.2.4.2-0002-hadoop2.winpkg.zip</hbase.winpkg.zip>
     <hbase.winpkg.folder>hbase-0.98.4.2.2.4.2-0002-hadoop2</hbase.winpkg.folder>
     <hadoop.winpkg.zip>https://msibuilds.blob.core.windows.net/hdp/2.x/2.2.4.2/2/hadoop-2.6.0.2.2.4.2-0002.winpkg.zip</hadoop.winpkg.zip>

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fce6d25/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metrics.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metrics.json b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metrics.json
index 6131606..c12e09a 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metrics.json
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metrics.json
@@ -916,7 +916,7 @@
               "temporal": true
             },
             "metrics/hbase/regionserver/blockCacheHitPercent": {
-              "metric": "regionserver.Server.blockCountHitPercent",
+              "metric": "regionserver.Server.blockCacheCountHitPercent",
               "pointInTime": true,
               "temporal": true
             },
@@ -2150,7 +2150,7 @@
               "temporal": true
             },
             "metrics/hbase/regionserver/blockCacheHitPercent": {
-              "metric": "regionserver.Server.blockCountHitPercent",
+              "metric": "regionserver.Server.blockCacheCountHitPercent",
               "pointInTime": true,
               "temporal": true
             },