فهرست منبع

AMBARI-5169. Associate applications seen on RM with tez jobs on ATS. (srimanth)

Srimanth Gunturi 11 سال پیش
والد
کامیت
2eda4d31b4

+ 3 - 0
ambari-web/app/assets/data/jobs/tezDag.json

@@ -14,5 +14,8 @@
       "vertex_1394502141829_0425_1_07",
       "vertex_1394502141829_0425_1_08"
     ]
+  },
+  "otherinfo": {
+    "applicationId": "application_1395263571423_0014"
   }
 }

+ 3 - 2
ambari-web/app/messages.js

@@ -1966,8 +1966,9 @@ Em.I18n.translations = {
   'jobs.customDateFilter.endTime':'End Time',
   'jobs.hive.more':'show more',
   'jobs.hive.less':'show less',
-  'jobs.hive.query':'Hive Query:',
-  'jobs.hive.stages':'Stages:',
+  'jobs.hive.query':'Hive Query',
+  'jobs.hive.stages':'Stages',
+  'jobs.hive.yarnApplication':'YARN Application',
   'jobs.hive.tez.tasks':'Tez Tasks',
   'jobs.hive.tez.hdfs':'HDFS',
   'jobs.hive.tez.localFiles':'Local Files',

+ 1 - 0
ambari-web/app/models/jobs/tez_dag.js

@@ -26,6 +26,7 @@ App.TezDag = DS.Model.extend({
    */
   instanceId : DS.attr('string'),
   name : DS.attr('string'),
+  yarnApplicationId: DS.attr('string'),
   stage : DS.attr('string'),
   vertices : DS.hasMany('App.TezDagVertex'),
   edges : DS.hasMany('App.TezDagEdge')

+ 11 - 5
ambari-web/app/styles/application.less

@@ -5681,11 +5681,17 @@ i.icon-asterisks {
   #toggle-query {
     margin-left: 20px;
   }
-  .query-section {
-    margin-top: 1em;
-  }
-  .query-title {
-    font-weight: bold;
+  #job-more-details-table {
+    td {
+      vertical-align: top;
+    }
+    td:first-child {
+      font-weight: bold;
+      padding-right: 7px;
+    }
+    a {
+      cursor: pointer;
+    }
   }
   .sections {
     margin-top: 10px;

+ 36 - 9
ambari-web/app/templates/main/jobs/hive_job_details.hbs

@@ -25,15 +25,42 @@
       <a {{action "toggleShowQuery" target="view"}} href="#" id="toggle-query">{{view.toggleShowQueryText}}</a>
       <div class="pull-right">Job Type: <span class="label label-info">{{view.content.jobType}}</span></div>
       <div {{bindAttr class="view.showQuery::hidden"}}>
-        <div class="query-section"><span class="query-title">{{t jobs.hive.query}}</span> {{view.content.queryText}}</div>
-        <div class="query-section">
-          <span class="query-title">{{t jobs.hive.stages}}</span>
-          <ol>
-            {{#each stage in view.content.stages}}
-              <li>{{stage.id}}{{stage.description}}.</li>
-            {{/each}}
-          </ol>
-        </div>
+        <table id="job-more-details-table">
+          <tr>
+            <td>
+              {{t jobs.hive.query}}
+            </td>
+            <td>
+              {{view.content.queryText}}
+            </td>
+          </tr>
+          <tr>
+            <td>
+              {{t jobs.hive.yarnApplication}}
+            </td>
+            <td>
+              {{#if view.yarnApplicationIdLink}}
+                <a {{bindAttr href="view.yarnApplicationIdLink"}} target="_blank">
+                  {{view.content.tezDag.yarnApplicationId}}
+                </a>
+              {{else}}
+                {{view.content.tezDag.yarnApplicationId}}
+              {{/if}}
+            </td>
+          </tr>
+          <tr>
+            <td>
+              {{t jobs.hive.stages}}
+            </td>
+            <td>
+              <ol>
+                {{#each stage in view.content.stages}}
+                  <li>{{stage.id}}{{stage.description}}.</li>
+                {{/each}}
+              </ol>
+            </td>
+          </tr>
+        </table>
       </div>
     </div>
 

+ 1 - 1
ambari-web/app/utils/ajax.js

@@ -1725,7 +1725,7 @@ var urls = {
     'apiPrefix': ''
   },
   'jobs.tezDag.tezDagId': {
-    'real': '/proxy?url=http://{historyServerHostName}:{ahsWebPort}/ws/v1/timeline/TEZ_DAG_ID/{tezDagId}?fields=relatedentities',
+    'real': '/proxy?url=http://{historyServerHostName}:{ahsWebPort}/ws/v1/timeline/TEZ_DAG_ID/{tezDagId}?fields=relatedentities,otherinfo',
     'mock': '/data/jobs/tezDag.json',
     'apiPrefix': ''
   },

+ 14 - 9
ambari-web/app/utils/jobs.js

@@ -123,16 +123,21 @@ module.exports = {
       var tezDagInstanceId = tezDag.get('instanceId');
       var sender = {
         loadTezDagSuccess : function(data) {
-          if (data && data.relatedentities && data.relatedentities.TEZ_VERTEX_ID != null) {
-            var count = data.relatedentities.TEZ_VERTEX_ID.length;
-            data.relatedentities.TEZ_VERTEX_ID.forEach(function(v) {
-              self.refreshTezDagVertex(tezDagId, v, function() {
-                if (--count <= 0) {
-                  // all vertices succeeded
-                  successCallback();
-                }
+          if (data) {
+            if (data.otherinfo && data.otherinfo.applicationId) {
+              tezDag.set('yarnApplicationId', data.otherinfo.applicationId);
+            }
+            if (data.relatedentities && data.relatedentities.TEZ_VERTEX_ID != null) {
+              var count = data.relatedentities.TEZ_VERTEX_ID.length;
+              data.relatedentities.TEZ_VERTEX_ID.forEach(function(v) {
+                self.refreshTezDagVertex(tezDagId, v, function() {
+                  if (--count <= 0) {
+                    // all vertices succeeded
+                    successCallback();
+                  }
+                });
               });
-            });
+            }
           }
         },
         loadTezDagError : function(jqXHR, url, method, showStatus) {

+ 23 - 0
ambari-web/app/views/main/jobs/hive_job_details_view.js

@@ -86,6 +86,29 @@ App.MainHiveJobDetailsView = Em.View.extend({
     }
   }.observes('controller.loaded'),
 
+  yarnApplicationIdLink : function() {
+    var yarnService = App.YARNService.find().objectAt(0);
+    var appId = this.get('content.tezDag.yarnApplicationId');
+    if (yarnService != null) {
+      var quickLinksView = App.QuickViewLinks.create();
+      try {
+        quickLinksView.set('content', yarnService);
+        quickLinksView.setQuickLinks();
+        var links = quickLinksView.get('quickLinks');
+        if (links && links.length > 0) {
+          var rmUILink = links.findProperty('label', 'ResourceManager UI');
+          if (rmUILink != null) {
+            return rmUILink.get('url') + '/cluster/app/' + appId;
+          }
+        }
+      } finally {
+        quickLinksView.destroy();
+        quickLinksView = null;
+      }
+    }
+    return null;
+  }.property('content.tezDag.yarnApplicationId', 'App.YARNService.resourceManagerNode.hostName'),
+
   jobObserver : function() {
     var content = this.get('content');
     var selectedVertex = this.get('selectedVertex');