You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by at...@apache.org on 2014/01/28 19:02:11 UTC

git commit: AMBARI-4443 Install/Show TEZ. (Denys Buzhor via atkach)

Updated Branches:
  refs/heads/trunk 5343c5e0c -> 6e0b01110


AMBARI-4443 Install/Show TEZ. (Denys Buzhor via atkach)


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

Branch: refs/heads/trunk
Commit: 6e0b01110c89327bdf06251bd6640b4dab9bd8e2
Parents: 5343c5e
Author: atkach <at...@hortonworks.com>
Authored: Tue Jan 28 20:01:43 2014 +0200
Committer: atkach <at...@hortonworks.com>
Committed: Tue Jan 28 20:01:43 2014 +0200

----------------------------------------------------------------------
 .../app/assets/data/clusters/cluster.json       |   3 +
 .../assets/data/clusters/tags_and_groups.json   |   3 +
 .../configurations/cluster_level_configs.json   |  34 ++
 .../assets/data/hosts/HDP2/hc_host_status.json  |   9 +
 .../app/assets/data/hosts/HDP2/hosts.json       |   8 +
 .../app/assets/data/services/HDP2/services.json |  14 +
 .../app/assets/data/wizard/stack/stacks.json    |  11 +
 .../app/controllers/wizard/step4_controller.js  |  16 +-
 .../app/controllers/wizard/step8_controller.js  |  18 +-
 ambari-web/app/data/HDP2/site_properties.js     | 313 +++++++++++++++++++
 ambari-web/app/data/service_configs.js          |  13 +-
 ambari-web/app/messages.js                      |   5 +
 ambari-web/app/models/service.js                |   1 +
 ambari-web/app/templates.js                     |   1 +
 .../app/templates/main/service/info/summary.hbs |   3 +
 .../templates/main/service/info/summary/tez.hbs |  22 ++
 ambari-web/app/views/main/host/summary.js       |   3 +
 .../app/views/main/service/info/summary.js      |   9 +-
 ambari-web/app/views/main/service/menu.js       |   6 +-
 19 files changed, 483 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/assets/data/clusters/cluster.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/clusters/cluster.json b/ambari-web/app/assets/data/clusters/cluster.json
index fb53d51..894c8fc 100644
--- a/ambari-web/app/assets/data/clusters/cluster.json
+++ b/ambari-web/app/assets/data/clusters/cluster.json
@@ -38,6 +38,9 @@
       "storm-site" : {
         "tag" : "version1"
       },
+      "tez-site" : {
+        "tag": "version1"
+      },
       "capacity-scheduler" : {
         "tag" : "version1"
       },

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/assets/data/clusters/tags_and_groups.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/clusters/tags_and_groups.json b/ambari-web/app/assets/data/clusters/tags_and_groups.json
index 8c43911..d4e1f3a 100644
--- a/ambari-web/app/assets/data/clusters/tags_and_groups.json
+++ b/ambari-web/app/assets/data/clusters/tags_and_groups.json
@@ -38,6 +38,9 @@
       "storm-site" : {
         "tag" : "version1"
       },
+      "tez-site": {
+        "tag": "version1"
+      },
       "core-site" : {
         "tag" : "version1"
       }

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/assets/data/configurations/cluster_level_configs.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/configurations/cluster_level_configs.json b/ambari-web/app/assets/data/configurations/cluster_level_configs.json
index 9fc68d6..1712a42 100644
--- a/ambari-web/app/assets/data/configurations/cluster_level_configs.json
+++ b/ambari-web/app/assets/data/configurations/cluster_level_configs.json
@@ -651,6 +651,40 @@
         "zmq.linger.millis" : "5000",
         "zmq.threads" : "1"
       }
+    },
+    {
+      "href" : "http://c6401.ambari.apache.org:8080/api/v1/clusters/c1/configurations?type=tez-site&tag=version1",
+      "tag" : "version1",
+      "type" : "tez-site",
+      "Config" : {
+        "cluster_name" : "c1"
+      },
+      "properties" : {
+        "tez.am.aggressive.scheduling" : "false",
+        "tez.am.am-rm.heartbeat.interval-ms.max" : "250",
+        "tez.am.container.reuse.enabled" : "true",
+        "tez.am.container.reuse.locality.delay-allocation-millis" : "250",
+        "tez.am.container.reuse.non-local-fallback.enabled" : "true",
+        "tez.am.container.reuse.rack-fallback.enabled" : "true",
+        "tez.am.container.session.delay-allocation-millis" : "300000",
+        "tez.am.grouping.split-waves" : "1.7",
+        "tez.am.java.opts" : "-server -Xmx1024m -Djava.net.preferIPv4Stack=true -XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps -XX:+UseNUMA -XX:+UseParallelGC",
+        "tez.am.log.level" : "INFO",
+        "tez.am.resource.memory.mb" : "1024",
+        "tez.lib.uris" : "file:///usr/lib/tez/,file:///usr/lib/tez/lib/",
+        "tez.runtime.broadcast.data-via-events.enabled" : "true",
+        "tez.runtime.broadcast.data-via-events.max-size" : "614400",
+        "tez.runtime.intermdiate-input.is-compressed" : "true",
+        "tez.runtime.intermediate-input.compress.codec" : "org.apache.hadoop.io.compress.DefaultCodec",
+        "tez.runtime.intermediate-output.compress.codec" : "org.apache.hadoop.io.compress.DefaultCodec",
+        "tez.runtime.intermediate-output.should-compress" : "true",
+        "tez.runtime.job.counters.groups.max" : "5000",
+        "tez.runtime.job.counters.max" : "5000",
+        "tez.slowstart-vertex-scheduler.max-src-fraction" : "0.1",
+        "tez.slowstart-vertex-scheduler.min-src-fraction" : "0.1",
+        "tez.staging-dir" : "/tmp/${user.name}/staging",
+        "tez.task.get-task.sleep.interval-ms.max" : "100"
+      }
     }
   ]
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/assets/data/hosts/HDP2/hc_host_status.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/hosts/HDP2/hc_host_status.json b/ambari-web/app/assets/data/hosts/HDP2/hc_host_status.json
index 4d87c53..b396e53 100644
--- a/ambari-web/app/assets/data/hosts/HDP2/hc_host_status.json
+++ b/ambari-web/app/assets/data/hosts/HDP2/hc_host_status.json
@@ -190,6 +190,15 @@
           }
         },
         {
+          "href" : "http://192.168.56.101:8080/api/v1/clusters/perf/hosts/dev01.hortonworks.com/host_components/TEZ_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "perf",
+            "component_name" : "TEZ_CLIENT",
+            "host_name" : "dev01.hortonworks.com",
+            "state" : "STARTED"
+          }
+        },
+        {
           "href" : "http://192.168.56.101:8080/api/v1/clusters/perf/hosts/dev01.hortonworks.com/host_components/ZOOKEEPER_CLIENT",
           "HostRoles" : {
             "cluster_name" : "perf",

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/assets/data/hosts/HDP2/hosts.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/hosts/HDP2/hosts.json b/ambari-web/app/assets/data/hosts/HDP2/hosts.json
index e82eb49..3cd7a6a 100644
--- a/ambari-web/app/assets/data/hosts/HDP2/hosts.json
+++ b/ambari-web/app/assets/data/hosts/HDP2/hosts.json
@@ -269,6 +269,14 @@
           }
         },
         {
+          "href" : "http://dev01.hortonworks.com:8080/api/v1/clusters/c1/hosts/dev01.hortonworks.com/host_components/TEZ_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "c1",
+            "component_name" : "TEZ_CLIENT",
+            "host_name" : "dev01.hortonworks.com"
+          }
+        },
+        {
           "href" : "http://dev01.hortonworks.com:8080/api/v1/clusters/c1/hosts/dev01.hortonworks.com/host_components/ZOOKEEPER_CLIENT",
           "HostRoles" : {
             "cluster_name" : "c1",

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/assets/data/services/HDP2/services.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/services/HDP2/services.json b/ambari-web/app/assets/data/services/HDP2/services.json
index 32bfbda..7859651 100644
--- a/ambari-web/app/assets/data/services/HDP2/services.json
+++ b/ambari-web/app/assets/data/services/HDP2/services.json
@@ -182,6 +182,20 @@
           "WARNING" : 0
         }
       }
+    },
+    {
+      "href" : "http://192.168.56.101:8080/api/v1/clusters/cl/services/TEZ",
+      "ServiceInfo" : {
+        "cluster_name" : "cl",
+        "service_name" : "TEZ"
+      },
+      "alerts" : {
+        "summary" : {
+          "CRITICAL" : 0,
+          "OK" : 0,
+          "WARNING" : 0
+        }
+      }
     }
   ]
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/assets/data/wizard/stack/stacks.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/wizard/stack/stacks.json b/ambari-web/app/assets/data/wizard/stack/stacks.json
index 60f5b4e..c52aa19 100644
--- a/ambari-web/app/assets/data/wizard/stack/stacks.json
+++ b/ambari-web/app/assets/data/wizard/stack/stacks.json
@@ -895,6 +895,17 @@
             "stack_version" : "2.0.5",
             "user_name" : "root"
           }
+        },
+        {
+          "href" : "http://192.168.56.101:8080/api/v1/stacks2/HDP/versions/2.0.5/stackServices/STORM",
+          "StackServices" : {
+            "comments" : "Tez is the next generation Hadoop Query Processing framework written on top of YARN",
+            "service_name" : "TEZ",
+            "service_version" : "0.4.0.2.1.1.0",
+            "stack_name" : "HDP",
+            "stack_version" : "2.0.5",
+            "user_name" : "root"
+          }
         }
       ]
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/controllers/wizard/step4_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step4_controller.js b/ambari-web/app/controllers/wizard/step4_controller.js
index b2011d7..5e2f216 100644
--- a/ambari-web/app/controllers/wizard/step4_controller.js
+++ b/ambari-web/app/controllers/wizard/step4_controller.js
@@ -119,7 +119,14 @@ App.WizardStep4Controller = Em.ArrayController.extend({
    * @return {Boolean}
    */
   needToAddYarnMapReduce2: function() {
-    return this.needAddService('YARN', ['PIG', 'OOZIE', 'HIVE']);
+    return this.needAddService('YARN', ['PIG', 'OOZIE', 'HIVE','TEZ']);
+  },
+  /**
+   * Check whether we should turn on <code>Tez</code> service
+   * @return {Boolean}
+   */
+  needToAddTez: function() {
+    return this.needAddService('TEZ', ['YARN']);
   },
   /**
    * Check whether we should turn on <code>ZooKeeper</code> service
@@ -200,6 +207,9 @@ App.WizardStep4Controller = Em.ArrayController.extend({
                 if(this.needToAddOozie()) {
                   this.oozieCheckPopup();
                 }
+                else if (this.needToAddTez()) {
+                  this.tezCheckPopup();
+                }
                 else {
                   this.validateMonitoring();
                 }
@@ -262,6 +272,10 @@ App.WizardStep4Controller = Em.ArrayController.extend({
     this.needToAddServicePopup({serviceName:'YARN', selected:true}, 'yarnCheck');
   },
 
+  tezCheckPopup: function() {
+    this.needToAddServicePopup({serviceName:'TEZ', selected: true}, 'tezCheck');
+  },
+
   zooKeeperCheckPopup: function () {
     this.needToAddServicePopup({serviceName:'ZOOKEEPER', selected: true}, 'zooKeeperCheck');
   },

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/controllers/wizard/step8_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step8_controller.js b/ambari-web/app/controllers/wizard/step8_controller.js
index ea141bd..f3ab770 100644
--- a/ambari-web/app/controllers/wizard/step8_controller.js
+++ b/ambari-web/app/controllers/wizard/step8_controller.js
@@ -1073,7 +1073,10 @@ App.WizardStep8Controller = Em.Controller.extend({
       this.get('serviceConfigTags').pushObject(this.createLog4jObj('PIG'));
     }
     if (selectedServices.someProperty('serviceName', 'STORM')) {
-      this.get('serviceConfigTags').pushObject(this.createStormSiteObj('STORM'));
+      this.get('serviceConfigTags').pushObject(this.createStormSiteObj());
+    }
+    if (selectedServices.someProperty('serviceName', 'TEZ')) {
+      this.get('serviceConfigTags').pushObject(this.createTezSiteObj());
     }
     if (selectedServices.someProperty('serviceName', 'ZOOKEEPER')) {
       this.get('serviceConfigTags').pushObject(this.createZooCfgObj());
@@ -1388,7 +1391,7 @@ App.WizardStep8Controller = Em.Controller.extend({
     return {type: 'zoo.cfg', tag: 'version1', properties: csProperties};
   },
 
-  createStormSiteObj: function (s) {
+  createStormSiteObj: function () {
     var configs = this.get('configs').filterProperty('filename', 'storm-site.xml');
     var stormProperties = {};
     configs.forEach(function (_configProperty) {
@@ -1401,6 +1404,17 @@ App.WizardStep8Controller = Em.Controller.extend({
     }, this);
     return {type: 'storm-site', tag: 'version1', properties: stormProperties};
   },
+
+  createTezSiteObj: function () {
+    var configs = this.get('configs').filterProperty('filename', 'tez-site.xml');
+    var tezProperty = {};
+    configs.forEach(function (_configProperty) {
+      tezProperty[_configProperty.name] = App.config.escapeXMLCharacters(_configProperty.value);
+      this._recordHostOverrideFromObj(_configProperty, 'tez-site', 'version1', this);
+    }, this);
+    return {type: 'tez-site', tag: 'version1', properties: tezProperty};
+  },
+
   ajaxQueueFinished: function () {
     //do something
   },

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/data/HDP2/site_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/HDP2/site_properties.js b/ambari-web/app/data/HDP2/site_properties.js
index 4e7f981..01ed45d 100644
--- a/ambari-web/app/data/HDP2/site_properties.js
+++ b/ambari-web/app/data/HDP2/site_properties.js
@@ -1364,6 +1364,319 @@ module.exports =
       "displayType": "string"
     },
 
+  /**********************************************tez-site***************************************/
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.lib.uris",
+      "name": "tez.lib.uris",
+      "defaultValue": "file:///usr/lib/tez/,file:///usr/lib/tez/lib/",
+      "displayType": "string"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.am.log.level",
+      "name": "tez.am.log.level",
+      "defaultValue": "INFO",
+      "displayType": "string"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.staging-dir",
+      "name": "tez.staging-dir",
+      "defaultValue": "/tmp/${user.name}/staging",
+      "displayType": "directory"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.slowstart-vertex-scheduler.min-src-fraction",
+      "name": "tez.slowstart-vertex-scheduler.min-src-fraction",
+      "defaultValue": "0.1",
+      "displayType": "string"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.slowstart-vertex-scheduler.max-src-fraction",
+      "name": "tez.slowstart-vertex-scheduler.max-src-fraction",
+      "defaultValue": "0.1",
+      "displayType": "string"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.am.am-rm.heartbeat.interval-ms.max",
+      "name": "tez.am.am-rm.heartbeat.interval-ms.max",
+      "defaultValue": "250",
+      "displayType": "int"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.runtime.broadcast.data-via-events.enabled",
+      "name": "tez.runtime.broadcast.data-via-events.enabled",
+      "defaultValue": "true",
+      "displayType": "checkbox"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.runtime.broadcast.data-via-events.max-size",
+      "name": "tez.runtime.broadcast.data-via-events.max-size",
+      "defaultValue": "614400",
+      "displayType": "int"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.am.aggressive.scheduling",
+      "name": "tez.am.aggressive.scheduling",
+      "defaultValue": "false",
+      "displayType": "checkbox"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.am.resource.memory.mb",
+      "name": "tez.am.resource.memory.mb",
+      "defaultValue": "1024",
+      "displayType": "int"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.am.java.opts",
+      "name": "tez.am.java.opts",
+      "defaultValue": "-server -Xmx1024m -Djava.net.preferIPv4Stack=true -XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps -XX:+UseNUMA -XX:+UseParallelGC",
+      "displayType": "string"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.am.grouping.split-waves",
+      "name": "tez.am.grouping.split-waves",
+      "defaultValue": "1.7",
+      "displayType": "string"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.am.container.reuse.enabled",
+      "name": "tez.am.container.reuse.enabled",
+      "defaultValue": "true",
+      "displayType": "checkbox"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.am.container.reuse.rack-fallback.enabled",
+      "name": "tez.am.container.reuse.rack-fallback.enabled",
+      "defaultValue": "true",
+      "displayType": "checkbox"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.am.container.reuse.non-local-fallback.enabled",
+      "name": "tez.am.container.reuse.non-local-fallback.enabled",
+      "defaultValue": "true",
+      "displayType": "checkbox"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.am.container.session.delay-allocation-millis",
+      "name": "tez.am.container.session.delay-allocation-millis",
+      "defaultValue": "300000",
+      "displayType": "int"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.am.container.reuse.locality.delay-allocation-millis",
+      "name": "tez.am.container.reuse.locality.delay-allocation-millis",
+      "defaultValue": "250",
+      "displayType": "int"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.runtime.intermediate-output.should-compress",
+      "name": "tez.runtime.intermediate-output.should-compress",
+      "defaultValue": "true",
+      "displayType": "checkbox"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.runtime.intermediate-output.compress.codec",
+      "name": "tez.runtime.intermediate-output.compress.codec",
+      "defaultValue": "org.apache.hadoop.io.compress.DefaultCodec",
+      "displayType": "string"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.runtime.intermdiate-input.is-compressed",
+      "name": "tez.runtime.intermdiate-input.is-compressed",
+      "defaultValue": "true",
+      "displayType": "checkbox"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.runtime.intermediate-input.compress.codec",
+      "name": "tez.runtime.intermediate-input.compress.codec",
+      "defaultValue": "org.apache.hadoop.io.compress.DefaultCodec",
+      "displayType": "string"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.task.get-task.sleep.interval-ms.max",
+      "name": "tez.task.get-task.sleep.interval-ms.max",
+      "defaultValue": "100",
+      "displayType": "int"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.runtime.job.counters.max",
+      "name": "tez.runtime.job.counters.max",
+      "defaultValue": "5000",
+      "displayType": "int"
+    },
+    {
+      "id": "site property",
+      "description": "",
+      "isReconfigurable": true,
+      "isVisible": true,
+      "isRequiredByAgent": true,
+      "serviceName": "TEZ",
+      "category": "General",
+      "displayName": "tez.runtime.job.counters.groups.max",
+      "name": "tez.runtime.job.counters.groups.max",
+      "defaultValue": "5000",
+      "displayType": "int"
+    },
   /**********************************************webhcat-site***************************************/
     {
       "id": "site property",

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/data/service_configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/service_configs.js b/ambari-web/app/data/service_configs.js
index 142e3b4..081abba 100644
--- a/ambari-web/app/data/service_configs.js
+++ b/ambari-web/app/data/service_configs.js
@@ -229,7 +229,7 @@ module.exports = [
     sites: ['falcon-site'],
     configs: []
   },
-  // @todo change to actual info
+
   {
     serviceName: 'STORM',
     displayName: 'Storm',
@@ -249,6 +249,17 @@ module.exports = [
     configs: []
   },
   {
+    serviceName: 'TEZ',
+    displayName: 'TEZ',
+    filename: 'tez-site',
+    configCategories: [
+      App.ServiceConfigCategory.create({ name: 'General', displayName : 'General'}),
+      App.ServiceConfigCategory.create({ name: 'AdvancedTezSite', displayName : 'Custom tez-site.xml', siteFileName: 'tez-site.xml', canAddProperty: true})
+    ],
+    sites: ['global', 'tez-site'],
+    configs: []
+  },
+  {
     serviceName: 'MISC',
     displayName: 'Misc',
     configCategories: [

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 99967dc..8884af5 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -476,6 +476,8 @@ Em.I18n.translations = {
   'installer.step4.zooKeeperCheck.popup.body':'You did not select ZooKeeper, but it is needed by other services you selected. We will automatically add ZooKeeper. Is this OK?',
   'installer.step4.oozieCheck.popup.header':'Oozie Needed',
   'installer.step4.oozieCheck.popup.body':'You did not select Oozie, but it is needed by other services you selected. We will automatically add Oozie. Is this OK?',
+  'installer.step4.tezCheck.popup.header':'Tez Needed',
+  'installer.step4.tezCheck.popup.body':'You did not select Tez, but it is needed by other services you selected. We will automatically add Tez. Is this OK?',
   'installer.step4.monitoringCheck.popup.header':'Limited Functionality Warning',
   'installer.step4.monitoringCheck.popup.body':'You did not select Nagios and/or Ganglia. If both are not selected, monitoring and alerts will not function properly. Is this OK?',
 
@@ -1310,6 +1312,9 @@ Em.I18n.translations = {
   'services.mapReduce.description.queue.admin.group':"Comma separated list of group names that are allowed to delete jobs or modify job's priority " +
     "for jobs not owned by the current user in the queue.",
 
+  'services.tez.client': 'Tez client',
+  'services.tez.clients': 'Tez clients',
+
   'services.hbase.master.error':'None of the HBase masters is active',
 
   'hosts.host.add':'Add New Hosts',

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/models/service.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/service.js b/ambari-web/app/models/service.js
index dacbec1..9da67cf 100644
--- a/ambari-web/app/models/service.js
+++ b/ambari-web/app/models/service.js
@@ -76,6 +76,7 @@ App.Service = DS.Model.extend({
       "NAGIOS",
       "GANGLIA",
       "HUE",
+      "TEZ",
       "STORM"
     ];
     return configurableServices.contains(this.get('serviceName'));

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/templates.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates.js b/ambari-web/app/templates.js
index 7e330e8..d139515 100644
--- a/ambari-web/app/templates.js
+++ b/ambari-web/app/templates.js
@@ -27,4 +27,5 @@ require('templates/main/service/info/summary/mapreduce2');
 require('templates/main/service/info/summary/hive');
 require('templates/main/service/info/summary/hue');
 require('templates/main/service/info/summary/falcon');
+require('templates/main/service/info/summary/tez');
 require('templates/main/admin/highAvailability/progress');

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/templates/main/service/info/summary.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/info/summary.hbs b/ambari-web/app/templates/main/service/info/summary.hbs
index 0fc8205..65cc6e9 100644
--- a/ambari-web/app/templates/main/service/info/summary.hbs
+++ b/ambari-web/app/templates/main/service/info/summary.hbs
@@ -68,6 +68,9 @@
             {{#if view.serviceStatus.storm}}
               {{view App.MainDashboardServiceStormView showOnlyRows=true serviceBinding="view.service"}}
             {{/if}}
+            {{#if view.serviceStatus.tez}}
+              {{template "templates/main/service/info/summary/tez"}}
+            {{/if}}
           </tbody>
         </table>
       </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/templates/main/service/info/summary/tez.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/info/summary/tez.hbs b/ambari-web/app/templates/main/service/info/summary/tez.hbs
new file mode 100644
index 0000000..8447693
--- /dev/null
+++ b/ambari-web/app/templates/main/service/info/summary/tez.hbs
@@ -0,0 +1,22 @@
+{{!
+* 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.
+}}
+<td class="summary-label"><a {{action filterHosts view.clientObj}} href="javascript:void(null)" >{{t services.tez.client}}</a></td>
+<td>
+  <span class="green-live">{{view.clients.length}} </span>{{pluralize view.clients.length singular="t:services.tez.client" plural="t:services.tez.clients"}} {{t common.installed}}
+</td>
+</tr>

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/views/main/host/summary.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host/summary.js b/ambari-web/app/views/main/host/summary.js
index 18875c3..395222b 100644
--- a/ambari-web/app/views/main/host/summary.js
+++ b/ambari-web/app/views/main/host/summary.js
@@ -144,6 +144,9 @@ App.MainHostSummaryView = Em.View.extend({
         case 'MAPREDUCE2':
           installableClients.push('MAPREDUCE2_CLIENT');
           break;
+        case 'TEZ':
+          installableClients.push('TEZ_CLIENT');
+          break;
       }
     });
     this.get('content.hostComponents').forEach(function (component) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/views/main/service/info/summary.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/summary.js b/ambari-web/app/views/main/service/info/summary.js
index 4bb15f2..26f4141 100644
--- a/ambari-web/app/views/main/service/info/summary.js
+++ b/ambari-web/app/views/main/service/info/summary.js
@@ -48,9 +48,12 @@ App.MainServiceInfoSummaryView = Em.View.extend({
     hue: false,
     flume: false,
     falcon: false,
-    storm: false
+    storm: false,
+    tez: false
   },
 
+  servicesHaveClients: ["OOZIE", "ZOOKEEPER", "HIVE", "MAPREDUCE2", "TEZ"],
+
   sumMasterComponentView : Em.View.extend({
     templateName: require('templates/main/service/info/summary/master_components'),
     mastersComp : function(){
@@ -71,7 +74,7 @@ App.MainServiceInfoSummaryView = Em.View.extend({
 
   clients: function () {
     var service = this.get('controller.content');
-    if (["OOZIE", "ZOOKEEPER", "HIVE", "MAPREDUCE2"].contains(service.get("id"))) {
+    if (this.get('servicesHaveClients').contains(service.get("id"))) {
       return service.get('hostComponents').filterProperty('isClient');
     }
     return [];
@@ -221,7 +224,7 @@ App.MainServiceInfoSummaryView = Em.View.extend({
    */
   clientObj: function() {
     var service = this.get('controller.content');
-    if (["OOZIE", "ZOOKEEPER", "HIVE", "MAPREDUCE2"].contains(service.get("id"))) {
+    if (this.get('servicesHaveClients').contains(service.get("id"))) {
       var clients = service.get('hostComponents').filterProperty('isClient', true);
       if (clients.length > 0) {
         return clients[0];

http://git-wip-us.apache.org/repos/asf/ambari/blob/6e0b0111/ambari-web/app/views/main/service/menu.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/menu.js b/ambari-web/app/views/main/service/menu.js
index b9ae802..1a95192 100644
--- a/ambari-web/app/views/main/service/menu.js
+++ b/ambari-web/app/views/main/service/menu.js
@@ -20,10 +20,12 @@ var App = require('app');
 var misc = require('utils/misc');
 
 App.MainServiceMenuView = Em.CollectionView.extend({
+  disabledServices: ['PIG', 'SQOOP', 'HCATALOG'],
+
   content:function () {
     var items = App.router.get('mainServiceController.content').filter(function(item){
-      return !['PIG', 'SQOOP', 'HCATALOG', 'TEZ'].contains(item.get('id'));
-    });
+      return !this.get('disabledServices').contains(item.get('id'));
+    }, this);
     return misc.sortByOrder(App.Service.servicesSortOrder, items);
   }.property('App.router.mainServiceController.content', 'App.router.mainServiceController.content.length'),