<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Top Applications</title>
    <link href="/hicc/css/bootstrap-theme.min.css" type="text/css" rel="stylesheet" />
    <link href="/hicc/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
    <script src="/hicc/js/jquery.js"></script>
    <script src="/hicc/js/bootstrap.min.js" type="text/javascript"></script>
  </head>
  <body>
    <table class="table">
      <tr><th>Top Applications</th><th>Resource Usage</th></tr>
      <tr><td>Mapreduce</td><td>45%</td></tr>
      <tr><td>HBase</td><td>29%</td></tr>
      <tr><td>Hive</td><td>21%</td></tr>
      <tr><td>Spark</td><td>3%</td></tr>
      <tr><td>BigSQL</td><td>2%</td></tr>
      <tr><td>R</td><td>1%</td></tr>
    </table>
  </body>
</html>
