You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tez.apache.org by sr...@apache.org on 2016/02/04 10:23:04 UTC
tez git commit: TEZ-3092. Tez UI 2: Tuneups & Improvements (sree)
Repository: tez
Updated Branches:
refs/heads/TEZ-2980 3fb2a657a -> 46d181bfd
TEZ-3092. Tez UI 2: Tuneups & Improvements (sree)
Project: http://git-wip-us.apache.org/repos/asf/tez/repo
Commit: http://git-wip-us.apache.org/repos/asf/tez/commit/46d181bf
Tree: http://git-wip-us.apache.org/repos/asf/tez/tree/46d181bf
Diff: http://git-wip-us.apache.org/repos/asf/tez/diff/46d181bf
Branch: refs/heads/TEZ-2980
Commit: 46d181bfdd29567fd471eeb6cce6358713eb9ae4
Parents: 3fb2a65
Author: Sreenath Somarajapuram <sr...@apache.org>
Authored: Thu Feb 4 14:52:31 2016 +0530
Committer: Sreenath Somarajapuram <sr...@apache.org>
Committed: Thu Feb 4 14:52:31 2016 +0530
----------------------------------------------------------------------
TEZ-2980-CHANGES.txt | 1 +
tez-ui2/README.md | 83 +++++++++++++++-----
tez-ui2/src/main/webapp/README.md | 44 +++++++----
.../main/webapp/app/components/caller-info.js | 2 +
tez-ui2/src/main/webapp/app/router.js | 3 +-
tez-ui2/src/main/webapp/app/services/hosts.js | 3 +-
.../src/main/webapp/app/services/pollster.js | 7 +-
tez-ui2/src/main/webapp/app/styles/app.less | 1 +
.../src/main/webapp/app/styles/caller-info.less | 26 ++++++
.../webapp/app/styles/dags-page-search.less | 49 ++++++++----
.../src/main/webapp/app/styles/page-layout.less | 7 +-
tez-ui2/src/main/webapp/app/styles/shared.less | 6 +-
tez-ui2/src/main/webapp/config/build-info.js | 32 ++++++++
tez-ui2/src/main/webapp/config/configs.env | 29 ++++++-
.../src/main/webapp/config/default-app-conf.js | 4 +-
tez-ui2/src/main/webapp/config/environment.js | 3 +-
16 files changed, 239 insertions(+), 61 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/TEZ-2980-CHANGES.txt
----------------------------------------------------------------------
diff --git a/TEZ-2980-CHANGES.txt b/TEZ-2980-CHANGES.txt
index b653e42..bc74ffd 100644
--- a/TEZ-2980-CHANGES.txt
+++ b/TEZ-2980-CHANGES.txt
@@ -33,3 +33,4 @@ ALL CHANGES:
TEZ-3058. Tez UI 2: Add download data functionality
TEZ-3084. Tez UI 2: Display caller type and info
TEZ-3080. Tez UI 2: Ensure UI 2 is in-line with UI 1
+ TEZ-3092. Tez UI 2: Tuneups & Improvements
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/README.md
----------------------------------------------------------------------
diff --git a/tez-ui2/README.md b/tez-ui2/README.md
index 3ec46de..6a009ee 100644
--- a/tez-ui2/README.md
+++ b/tez-ui2/README.md
@@ -1,30 +1,76 @@
+<!--
+ 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.
+-->
+
# Tez-ui
-The Tez UI is an ember based web application that provides visualization of Tez applications
-running on the Apache Hadoop YARN framework.
+The Tez UI is an ember based web-app that provides visualization of Tez applications running on the Apache Hadoop YARN framework.
+
+For more information on Tez and the Tez UI - Check the [Tez homepage](http://tez.apache.org/ "Apache Tez Homepage").
+
+## Configurations
+
+### In tez-site.xml
+ * `tez.runtime.convert.user-payload.to.history-text` : Should be enabled to get the configuration options in. If enabled, the config options are set as userpayload per input/output.
+
+### In yarn-site.xml
+ * `yarn.timeline-service.http-cross-origin.enabled` : Enable CORS in timeline.
+ * `yarn.resourcemanager.system-metrics-publisher.enabled` : Enable generic history service in timeline server
+ * `yarn.timeline-service.enabled` : Enabled the timeline server for logging details
+ * `yarn.timeline-service.webapp.address` : Value must be the IP:PORT on which timeline server is running
+
+### In configs.env
+ This environment configuration file can be found at `./src/main/webapp/config/configs.env`
+
+ * `ENV.hosts.timeline` : Timeline Server Address. By default TEZ UI looks for timeline server at http://localhost:8188.
+ * `ENV.hosts.rm` : Resource Manager Address. By default RM REST APIs are expected to be at http://localhost:8088.
+ * `ENV.hosts.rmProxy` : This is options. Value configured as RM host will be taken as proxy address by default. Use this configuration when RM web proxy is configured at a different address than RM.
+ * `ENV.timeZone` : Time Zone in which dates are displayed in the UI. If not set, local time zone will be used. Refer http://momentjs.com/timezone/docs/ for valid entries.
-For more information on Tez and the Tez UI - the [tez homepage](http://tez.apache.org/ "Apache Tez Homepage").
+## Package & deploy
-## Prerequisites
+### Get war package
+ * Tez UI is distributed as a war package.
+ * To build & package UI without running test cases, run `mvn clean package -DskipTests` in this directory.
+ * This would give you a war file in `./target`.
+ * UI build is part of tez build, refer BUILDING.txt for more info.
+
+### Using UI war
+##### Remotely:
+ Use webfront tomcat manager to upload & deploy your war remotely.
+##### Manually:
+ The war can be added to any tomcat instance.
+ 1. Remove any old deployments in `$TOMCAT_HOME/webapps`
+ 2. Copy the war to `$TOMCAT_HOME/webapps`
+ 3. Restart tomcat and the war will get deployed. The content of the war would be available in
+ `$TOMCAT_HOME/webapps/tez-ui-[version]` directory.
+
+## Development
+
+All the following commands must be run inside `src/main/webapp`.
+
+### Prerequisites
You will need the following things properly installed on your computer.
* [Git](http://git-scm.com/)
* [Node.js](http://nodejs.org/) (with NPM)
* [Ember CLI](http://www.ember-cli.com/)
-* [PhantomJS](http://phantomjs.org/)
-## Installation
-
-* `git clone <repository-url>` this repository
-* In tez/tez-ui2/src/main/webapp
-* `npm install`
-
-## Configuring
-* By default timeline is expected at localhost:8188 & RM at localhost:8088
-* You can point the UI to custom locations by setting the environment variables in src/main/webapp/config/configs.env
-
-## Running / Development
+### Running UI
* `ember server`
* Visit your app at [http://localhost:4200](http://localhost:4200).
@@ -32,9 +78,10 @@ You will need the following things properly installed on your computer.
### Running Tests
* `ember test`
-* `ember test --server`
-### Building
+### Building UI manually
* `ember build` (development)
* `ember build --environment production` (production)
+
+Files would be stored in "dist/"
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/README.md
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/README.md b/tez-ui2/src/main/webapp/README.md
index fb8128e..a86e7da 100644
--- a/tez-ui2/src/main/webapp/README.md
+++ b/tez-ui2/src/main/webapp/README.md
@@ -1,9 +1,32 @@
+<!--
+ 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.
+-->
+
# Tez-ui
-The Tez UI is an ember based web application that provides visualization of Tez applications
-running on the Apache Hadoop YARN framework.
+The Tez UI is an ember based web-app that provides visualization of Tez applications running on the Apache Hadoop YARN framework.
+
+For more information on Tez and the Tez UI - Check the [Tez homepage](http://tez.apache.org/ "Apache Tez Homepage").
+
+## Configurations
-For more information on Tez and the Tez UI - the [tez homepage](http://tez.apache.org/ "Apache Tez Homepage").
+* By default timeline is expected at localhost:8188 & RM at localhost:8088
+* You can point the UI to custom locations by setting the environment variables in `src/main/webapp/config/configs.env`
+
+## Development
## Prerequisites
@@ -12,23 +35,12 @@ You will need the following things properly installed on your computer.
* [Git](http://git-scm.com/)
* [Node.js](http://nodejs.org/) (with NPM)
* [Ember CLI](http://www.ember-cli.com/)
-* [PhantomJS](http://phantomjs.org/)
-
-## Installation
-* `git clone <repository-url>` this repository
-* change into the new directory
-* `npm install`
-
-## Running / Development
+## Running UI
* `ember server`
* Visit your app at [http://localhost:4200](http://localhost:4200).
-### Code Generators
-
-Make use of the many generators for code, try `ember help generate` for more details
-
### Running Tests
* `ember test`
@@ -38,3 +50,5 @@ Make use of the many generators for code, try `ember help generate` for more det
* `ember build` (development)
* `ember build --environment production` (production)
+
+Files would be stored in "dist/"
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/app/components/caller-info.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/components/caller-info.js b/tez-ui2/src/main/webapp/app/components/caller-info.js
index 3680049..ece33ac 100644
--- a/tez-ui2/src/main/webapp/app/components/caller-info.js
+++ b/tez-ui2/src/main/webapp/app/components/caller-info.js
@@ -28,6 +28,8 @@ export default Ember.Component.extend({
codeMirror: null,
+ classNames: ['caller-info'],
+
mode: Ember.computed("type", function () {
switch(this.get("type")) {
case 'Hive':
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/app/router.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/router.js b/tez-ui2/src/main/webapp/app/router.js
index eb3afb3..4196675 100644
--- a/tez-ui2/src/main/webapp/app/router.js
+++ b/tez-ui2/src/main/webapp/app/router.js
@@ -30,7 +30,7 @@ Router.map(function() {
this.route('tasks');
this.route('attempts');
this.route('counters');
- this.route('index', function() {});
+ this.route('index', {path: '/'}, function() {});
this.route('graphical');
});
this.route('vertex', {path: '/vertex/:vertex_id'}, function() {
@@ -45,6 +45,7 @@ Router.map(function() {
this.route('attempt', {path: '/attempt/:attempt_id'}, function () {
this.route('counters');
});
+ this.route('app', {path: '/tez-app/:app_id'}, function () {}); // Alias for backward compatibility with Tez UI V1
this.route('app', {path: '/app/:app_id'}, function () {
this.route('dags');
this.route('configs');
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/app/services/hosts.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/services/hosts.js b/tez-ui2/src/main/webapp/app/services/hosts.js
index 0da7fe5..c9e7d25 100644
--- a/tez-ui2/src/main/webapp/app/services/hosts.js
+++ b/tez-ui2/src/main/webapp/app/services/hosts.js
@@ -64,7 +64,8 @@ export default Ember.Service.extend({
}),
am: Ember.computed(function () {
- return this.normalizeURL(this.get("env.app.hosts.rm"));
+ var url = this.get("env.app.hosts.rmProxy") || this.get("env.app.hosts.rm");
+ return this.normalizeURL(url);
}),
});
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/app/services/pollster.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/services/pollster.js b/tez-ui2/src/main/webapp/app/services/pollster.js
index 00a0c6c..7e41fa1 100644
--- a/tez-ui2/src/main/webapp/app/services/pollster.js
+++ b/tez-ui2/src/main/webapp/app/services/pollster.js
@@ -38,8 +38,13 @@ export default Ember.Service.extend({
pollCount: 0,
initState: Ember.on("init", function () {
+ var state = this.get("localStorage").get(STATE_STORAGE_KEY);
+
+ if(state === undefined || state === null) {
+ state = true;
+ }
Ember.run.later(this, function () {
- this.set("active", this.get("localStorage").get(STATE_STORAGE_KEY));
+ this.set("active", state);
});
}),
stateObserver: Ember.observer("active", function () {
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/app/styles/app.less
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/styles/app.less b/tez-ui2/src/main/webapp/app/styles/app.less
index 11c611c..a832446 100644
--- a/tez-ui2/src/main/webapp/app/styles/app.less
+++ b/tez-ui2/src/main/webapp/app/styles/app.less
@@ -27,6 +27,7 @@
@import "dags-page-search";
@import "table-controls";
@import "error-bar";
+@import "caller-info";
// Modals
@import "column-selector";
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/app/styles/caller-info.less
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/styles/caller-info.less b/tez-ui2/src/main/webapp/app/styles/caller-info.less
new file mode 100644
index 0000000..2dc78f1
--- /dev/null
+++ b/tez-ui2/src/main/webapp/app/styles/caller-info.less
@@ -0,0 +1,26 @@
+/**
+ * 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.
+ */
+
+.caller-info {
+ .panel-info {
+ overflow: hidden;
+ }
+ .CodeMirror {
+ height: auto;
+ }
+}
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/app/styles/dags-page-search.less
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/styles/dags-page-search.less b/tez-ui2/src/main/webapp/app/styles/dags-page-search.less
index ec64d11..25a470d 100644
--- a/tez-ui2/src/main/webapp/app/styles/dags-page-search.less
+++ b/tez-ui2/src/main/webapp/app/styles/dags-page-search.less
@@ -16,6 +16,39 @@
* limitations under the License.
*/
+.dags-page-search {
+ text-align: justify;
+
+ margin-bottom: 5px;
+
+ .search-element {
+ display: inline-block;
+ width: 16.66%;
+
+ padding-left: 3px;
+
+ label {
+ margin-bottom: 2px;
+ }
+
+ select {
+ top: -1px;
+ position: relative;
+ }
+ }
+
+ .dag-name {
+ padding-left: 0px;
+ }
+}
+
+.all-dags-table {
+ .pagination-ui, .table-controls {
+ margin-top: -5px;
+ margin-bottom: 5px;
+ }
+}
+
@media screen and (min-width: 1300px) {
.dags-page-search{
float: left;
@@ -32,19 +65,3 @@
}
}
}
-
-.dags-page-search {
- text-align: justify;
-
-
- .search-element {
- display: inline-block;
- width: 16.66%;
-
- padding-left: 3px;
- }
-
- .dag-name {
- padding-left: 0px;
- }
-}
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/app/styles/page-layout.less
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/styles/page-layout.less b/tez-ui2/src/main/webapp/app/styles/page-layout.less
index 0411fa0..ee62535 100644
--- a/tez-ui2/src/main/webapp/app/styles/page-layout.less
+++ b/tez-ui2/src/main/webapp/app/styles/page-layout.less
@@ -43,11 +43,13 @@ body, html {
position: absolute;
left: 70px;
right: 20px;
- top: 9px;
+ top: 6px;
.breadcrumb {
.no-border;
+ font-size: 1.2em;
+
background-color: transparent;
margin-bottom: 0px;
@@ -60,6 +62,7 @@ body, html {
position: absolute;
right: 0px;
top: 0px;
+ height: 27px;
span {
.left-delim;
@@ -108,7 +111,7 @@ body, html {
border-top: 1px @border-color solid;
- font-size: .8em;
+ font-size: .9em;
.ui-info {
background-color: @white;
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/app/styles/shared.less
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/app/styles/shared.less b/tez-ui2/src/main/webapp/app/styles/shared.less
index a96636f..5f4b8f4 100644
--- a/tez-ui2/src/main/webapp/app/styles/shared.less
+++ b/tez-ui2/src/main/webapp/app/styles/shared.less
@@ -48,6 +48,8 @@ b {
}
}
-.CodeMirror {
- height: auto;
+.em-table {
+ .em-progress-container {
+ padding-top: 1px;
+ }
}
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/config/build-info.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/config/build-info.js b/tez-ui2/src/main/webapp/config/build-info.js
new file mode 100644
index 0000000..ae2b33d
--- /dev/null
+++ b/tez-ui2/src/main/webapp/config/build-info.js
@@ -0,0 +1,32 @@
+/**
+ * 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.
+ */
+
+const POM_FILE = "../../../pom.xml";
+var fs = require('fs');
+
+function fetchVersion() {
+ try {
+ var fileData = fs.readFileSync(POM_FILE, 'ascii');
+ // Feel this is better than parsing the whole xml
+ return fileData.substring(fileData.indexOf("<version>") + 9, fileData.indexOf("</version>"));
+ }catch(e){}
+}
+
+module.exports = {
+ version: fetchVersion()
+};
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/config/configs.env
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/config/configs.env b/tez-ui2/src/main/webapp/config/configs.env
index 60421fd..a0d2198 100644
--- a/tez-ui2/src/main/webapp/config/configs.env
+++ b/tez-ui2/src/main/webapp/config/configs.env
@@ -1,6 +1,31 @@
ENV = {
hosts: {
+ /*
+ * Timeline Server Address:
+ * By default TEZ UI looks for timeline server at http://localhost:8188, uncomment and change
+ * the following value for pointing to a different address.
+ */
//timeline: "http://localhost:8188",
- //rm: "http://localhost:8088"
- }
+
+ /*
+ * Resource Manager Address:
+ * By default RM REST APIs are expected to be at http://localhost:8088, uncomment and change
+ * the following value to point to a different address.
+ */
+ //rm: "http://localhost:8088",
+
+ /*
+ * Resource Manager Web Proxy Address:
+ * Optional - By default, value configured as RM host will be taken as proxy address
+ * Use this configuration when RM web proxy is configured at a different address than RM.
+ */
+ //rmProxy: "http://localhost:8088",
+ },
+
+ /*
+ * Time Zone in which dates are displayed in the UI:
+ * If not set, local time zone will be used.
+ * Refer http://momentjs.com/timezone/docs/ for valid entries.
+ */
+ //timeZone: "UTC",
};
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/config/default-app-conf.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/config/default-app-conf.js b/tez-ui2/src/main/webapp/config/default-app-conf.js
index 084e9b7..c53e4d7 100644
--- a/tez-ui2/src/main/webapp/config/default-app-conf.js
+++ b/tez-ui2/src/main/webapp/config/default-app-conf.js
@@ -16,8 +16,10 @@
* limitations under the License.
*/
+var buildInfo = require('./build-info');
+
module.exports = { // Tez App configurations
- buildVersion: "",
+ buildVersion: buildInfo.version || "",
isStandalone: true, // Must be set false while running in wrapped mode
rowLoadLimit: 9007199254740991,
pollingInterval: 3000,
http://git-wip-us.apache.org/repos/asf/tez/blob/46d181bf/tez-ui2/src/main/webapp/config/environment.js
----------------------------------------------------------------------
diff --git a/tez-ui2/src/main/webapp/config/environment.js b/tez-ui2/src/main/webapp/config/environment.js
index c08549f..0c755ac 100644
--- a/tez-ui2/src/main/webapp/config/environment.js
+++ b/tez-ui2/src/main/webapp/config/environment.js
@@ -24,8 +24,7 @@ module.exports = function(environment) {
var ENV = {
modulePrefix: 'tez-ui',
environment: environment,
- baseURL: '/',
- locationType: 'auto',
+ locationType: 'hash',
EmberENV: {
FEATURES: {
// Here you can enable experimental features on an ember canary build