You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by tb...@apache.org on 2014/12/01 18:38:00 UTC
ambari git commit: AMBARI-8492 - Pig View: readme + blueprint,
minor UI (Jeff Sposetti via tbeerbower)
Repository: ambari
Updated Branches:
refs/heads/trunk fd635e74c -> 5fc87355a
AMBARI-8492 - Pig View: readme + blueprint, minor UI (Jeff Sposetti via tbeerbower)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/5fc87355
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/5fc87355
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/5fc87355
Branch: refs/heads/trunk
Commit: 5fc87355a8fbd8c25ded9937f340ac131172f52b
Parents: fd635e7
Author: tbeerbower <tb...@hortonworks.com>
Authored: Mon Dec 1 12:37:20 2014 -0500
Committer: tbeerbower <tb...@hortonworks.com>
Committed: Mon Dec 1 12:37:51 2014 -0500
----------------------------------------------------------------------
contrib/views/pig/blueprint.json | 179 +++++++++++++++++++
contrib/views/pig/clustertemplate.json | 13 ++
contrib/views/pig/readme.md | 168 +++++++++++++++++
.../resources/ui/pig-web/app/styles/style.less | 17 +-
.../resources/ui/pig-web/app/templates/pig.hbs | 2 +-
.../ui/pig-web/app/templates/pig/history.hbs | 10 +-
.../ui/pig-web/app/templates/pig/udfs.hbs | 4 +-
.../ui/pig-web/app/templates/script/job.hbs | 8 +-
.../resources/ui/pig-web/app/translations.js | 38 ++--
contrib/views/pig/src/main/resources/view.xml | 9 +-
10 files changed, 409 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/5fc87355/contrib/views/pig/blueprint.json
----------------------------------------------------------------------
diff --git a/contrib/views/pig/blueprint.json b/contrib/views/pig/blueprint.json
new file mode 100644
index 0000000..e03e9f8
--- /dev/null
+++ b/contrib/views/pig/blueprint.json
@@ -0,0 +1,179 @@
+{
+ "configurations" : [
+ {
+ "capacity-scheduler" : {
+ "yarn.scheduler.capacity.root.default.maximum-am-resource-percent" : "0.5",
+ "yarn.scheduler.capacity.maximum-am-resource-percent" : "0.5"
+ }
+ },
+ {
+ "cluster-env": {
+ "cluster_name": "PigView",
+ "smokeuser": "ambari-qa",
+ "user_group": "hadoop",
+ "security_enabled": "false"
+ }
+ },
+ {
+ "core-site" : {
+ "hadoop.proxyuser.root.hosts" : "*",
+ "hadoop.proxyuser.root.groups" : "*",
+ "hadoop.proxyuser.hcat.hosts" : "*",
+ "hadoop.proxyuser.hcat.groups" : "*"
+ }
+ },
+ {
+ "hadoop-env": {
+ "dtnode_heapsize" : "250",
+ "hadoop_heapsize" : "250",
+ "namenode_heapsize" : "250",
+ "namenode_opt_newsize": "50",
+ "namenode_opt_maxnewsize": "100",
+ "content" : "\n# Set Hadoop-specific environment variables here.\n\n# The only required environment variable is JAVA_HOME. All others are\n# optional. When running a distributed configuration it is best to\n# set JAVA_HOME in this file, so that it is correctly defined on\n# remote nodes.\n\n# The java implementation to use. Required.\nexport JAVA_HOME={{java_home}}\nexport HADOOP_HOME_WARN_SUPPRESS=1\n\n# Hadoop home directory\nexport HADOOP_HOME=${HADOOP_HOME:-/usr/lib/hadoop}\n\n# Hadoop Configuration Directory\n#TODO: if env var set that can cause problems\nexport HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-{{hadoop_conf_dir}}}\n\n{# this is different for HDP1 #}\n# Path to jsvc required by secure HDP 2.0 datanode\nexport JSVC_HOME={{jsvc_path}}\n\n\n# The maximum amount of heap to use, in MB. Default is 1000.\nexport HADOOP_HEAPSIZE=\"{{hadoop_heapsize}}\"\n\nexport HADOOP_NAMENODE_INIT_HEAPSIZE=\"-Xms{{namenode_heapsize}}\"\n\n# Extra Java runtime options. Empty by d
efault.\nexport HADOOP_OPTS=\"-Djava.net.preferIPv4Stack=true ${HADOOP_OPTS}\"\n\n# Command specific options appended to HADOOP_OPTS when specified\nexport HADOOP_NAMENODE_OPTS=\"-server -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:ErrorFile={{hdfs_log_dir_prefix}}/$USER/hs_err_pid%p.log -XX:NewSize={{namenode_opt_newsize}} -XX:MaxNewSize={{namenode_opt_maxnewsize}} -Xloggc:{{hdfs_log_dir_prefix}}/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xms{{namenode_heapsize}} -Xmx{{namenode_heapsize}} -Dhadoop.security.logger=INFO,DRFAS -Dhdfs.audit.logger=INFO,DRFAAUDIT ${HADOOP_NAMENODE_OPTS}\"\nHADOOP_JOBTRACKER_OPTS=\"-server -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:ErrorFile={{hdfs_log_dir_prefix}}/$USER/hs_err_pid%p.log -XX:NewSize={{jtnode_opt_newsize}} -XX:MaxNewSize={{jtnode_opt_maxnewsize}} -Xloggc:{{hdfs_log_dir_prefix}}/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintG
CTimeStamps -XX:+PrintGCDateStamps -Xmx{{jtnode_heapsize}} -Dhadoop.security.logger=INFO,DRFAS -Dmapred.audit.logger=INFO,MRAUDIT -Dhadoop.mapreduce.jobsummary.logger=INFO,JSA ${HADOOP_JOBTRACKER_OPTS}\"\n\nHADOOP_TASKTRACKER_OPTS=\"-server -Xmx{{ttnode_heapsize}} -Dhadoop.security.logger=ERROR,console -Dmapred.audit.logger=ERROR,console ${HADOOP_TASKTRACKER_OPTS}\"\nHADOOP_DATANODE_OPTS=\"-Xmx{{dtnode_heapsize}} -Dhadoop.security.logger=ERROR,DRFAS ${HADOOP_DATANODE_OPTS}\"\nHADOOP_BALANCER_OPTS=\"-server -Xmx{{hadoop_heapsize}}m ${HADOOP_BALANCER_OPTS}\"\n\nexport HADOOP_SECONDARYNAMENODE_OPTS=\"-server -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:ErrorFile={{hdfs_log_dir_prefix}}/$USER/hs_err_pid%p.log -XX:NewSize={{namenode_opt_newsize}} -XX:MaxNewSize={{namenode_opt_maxnewsize}} -Xloggc:{{hdfs_log_dir_prefix}}/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps ${HADOOP_NAMENODE_INIT_HEAPSIZE} -Xmx{{namenode_hea
psize}} -Dhadoop.security.logger=INFO,DRFAS -Dhdfs.audit.logger=INFO,DRFAAUDIT ${HADOOP_SECONDARYNAMENODE_OPTS}\"\n\n# The following applies to multiple commands (fs, dfs, fsck, distcp etc)\nexport HADOOP_CLIENT_OPTS=\"-Xmx${HADOOP_HEAPSIZE}m $HADOOP_CLIENT_OPTS\"\n\n# Extra ssh options. Empty by default.\nexport HADOOP_SSH_OPTS=\"-o ConnectTimeout=5 -o SendEnv=HADOOP_CONF_DIR\"\n\n# Where log files are stored. $HADOOP_HOME/logs by default.\nexport HADOOP_LOG_DIR={{hdfs_log_dir_prefix}}/$USER\n\n# History server logs\nexport HADOOP_MAPRED_LOG_DIR={{mapred_log_dir_prefix}}/$USER\n\n# File naming remote slave hosts. $HADOOP_HOME/conf/slaves by default.\n# export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves\n\n# host:path where hadoop code should be rsync'd from. Unset by default.\n# export HADOOP_MASTER=master:/home/$USER/src/hadoop\n\n# Seconds to sleep between slave commands. Unset by default. This\n# can be useful in large clusters, where, e.g., slave rsyncs can\n# otherwise arri
ve faster than the master can service them.\n# export HADOOP_SLAVE_SLEEP=0.1\n\n# The directory where pid files are stored. /tmp by default.\nexport HADOOP_PID_DIR={{hadoop_pid_dir_prefix}}/$USER\n\n# History server pid\nexport HADOOP_MAPRED_PID_DIR={{mapred_pid_dir_prefix}}/$USER\n\nYARN_RESOURCEMANAGER_OPTS=\"-Dyarn.server.resourcemanager.appsummary.logger=INFO,RMSUMMARY\"\n\n# A string representing this instance of hadoop. $USER by default.\nexport HADOOP_IDENT_STRING=$USER\n\n# The scheduling priority for daemon processes. See 'man nice'.\n\n# export HADOOP_NICENESS=10\n\n# Use libraries from standard classpath\nJAVA_JDBC_LIBS=\"\"\n#Add libraries required by mysql connector\nfor jarFile in `ls /usr/share/java/*mysql* 2>/dev/null`\ndo\n JAVA_JDBC_LIBS=${JAVA_JDBC_LIBS}:$jarFile\ndone\n#Add libraries required by oracle connector\nfor jarFile in `ls /usr/share/java/*ojdbc* 2>/dev/null`\ndo\n JAVA_JDBC_LIBS=${JAVA_JDBC_LIBS}:$jarFile\ndone\n#Add libraries required by nodemanager
\nMAPREDUCE_LIBS={{mapreduce_libs_path}}\nexport HADOOP_CLASSPATH=${HADOOP_CLASSPATH}${JAVA_JDBC_LIBS}:${MAPREDUCE_LIBS}\n\nif [ -d \"/usr/hdp/current/tez-client\" ]; then\n export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/hdp/current/tez-client/*:/usr/hdp/current/tez-client/lib/*:/etc/tez/conf\nfi\n\n# Setting path to hdfs command line\nexport HADOOP_LIBEXEC_DIR={{hadoop_libexec_dir}}\n\n#Mostly required for hadoop 2.0\nexport JAVA_LIBRARY_PATH=${JAVA_LIBRARY_PATH}:/usr/lib/hadoop/lib/native/Linux-amd64-64\n\n#Hadoop logging options\nexport HADOOP_ROOT_LOGGER={{hadoop_root_logger}}\n "
+ }
+ },
+ {
+ "hive-env": {
+ "content" : "\n if [ \"$SERVICE\" = \"cli\" ]; then\n if [ -z \"$DEBUG\" ]; then\n export HADOOP_OPTS=\"$HADOOP_OPTS -XX:NewRatio=12 -Xms10m -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:+UseParNewGC -XX:-UseGCOverheadLimit\"\n else\n export HADOOP_OPTS=\"$HADOOP_OPTS -XX:NewRatio=12 -Xms10m -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:-UseGCOverheadLimit\"\n fi\n fi\n\n# The heap size of the jvm stared by hive shell script can be controlled via:\n\nexport HADOOP_HEAPSIZE=\"{{hive_heapsize}}\"\nexport HADOOP_CLIENT_OPTS=\"-Xmx${HADOOP_HEAPSIZE}m $HADOOP_CLIENT_OPTS\"\n\n# Larger heap size may be required when running queries over large number of files or partitions.\n# By default hive shell scripts use a heap size of 256 (MB). Larger heap size would also be\n# appropriate for hive server (hwi etc).\n\n\n# Set HADOOP_HOME to point to a specific hadoop install directory\nHADOOP_HOME=${HADOOP_HOME:-{{hadoop_home}}}\n\n# Hive Configuration Dir
ectory can be controlled by:\nexport HIVE_CONF_DIR={{hive_config_dir}}\n\n# Folder containing extra ibraries required for hive compilation/execution can be controlled by:\nif [ \"${HIVE_AUX_JARS_PATH}\" != \"\" ]; then\n export HIVE_AUX_JARS_PATH=${HIVE_AUX_JARS_PATH}\nelif [ -d \"/usr/lib/hive-webhcat/\" ]; then\n export HIVE_AUX_JARS_PATH=/usr/lib/hive-webhcat/share/hcatalog/hive-hcatalog-core-*.jar\nelse\n export HIVE_AUX_JARS_PATH=/usr/hdp/current/hive-webhcat/share/hcatalog/hive-hcatalog-core.jar\nfi\nexport METASTORE_PORT={{hive_metastore_port}}\n "
+ }
+ },
+ {
+ "hbase-site" : {
+ "hbase.security.authorization": "true",
+ "hbase.rpc.engine": "org.apache.hadoop.hbase.ipc.SecureRpcEngine",
+ "hbase_master_heapsize": "250",
+ "hbase_regionserver_heapsize": "250",
+ "hbase.rpc.protection": "PRIVACY"
+ }
+ },
+ {
+ "hdfs-site" : {
+ "dfs.block.size" : "34217472",
+ "dfs.replication" : "1",
+ "dfs.namenode.accesstime.precision" : "3600000",
+ "dfs.nfs3.dump.dir" : "/tmp/.hdfs-nfs",
+ "dfs.nfs.exports.allowed.hosts" : "* rw",
+ "dfs.datanode.max.xcievers" : "1024",
+ "dfs.block.access.token.enable" : "false"
+ }
+ },
+ {
+ "hive-site" : {
+ "javax.jdo.option.ConnectionPassword" : "hive",
+ "hive.tez.container.size" : "250",
+ "hive.tez.java.opts" : "-server -Xmx200m -Djava.net.preferIPv4Stack=true",
+ "hive.heapsize" : "250",
+ "hive.users.in.admin.role" : "hive",
+ "hive_metastore_user_passwd" : "hive",
+ "hive.server2.enable.impersonation": "true",
+ "hive.compactor.check.interval": "300s",
+ "hive.compactor.initiator.on": "true",
+ "hive.compactor.worker.timeout": "86400s",
+ "hive.enforce.bucketing": "true",
+ "hive.support.concurrency": "true",
+ "hive.exec.dynamic.partition.mode": "nonstrict",
+ "hive.server2.enable.doAs": "false",
+ "hive.txn.manager": "org.apache.hadoop.hive.ql.lockmgr.DbTxnManager",
+ "hive.txn.max.open.batch": "1000",
+ "hive.txn.timeout": "300",
+ "hive.security.authorization.enabled": "false"
+ }
+ },
+ {
+ "mapred-env": {
+ "jobhistory_heapsize" : "250"
+ }
+ },
+ {
+ "mapred-site" : {
+ "mapreduce.map.memory.mb" : "250",
+ "mapreduce.reduce.memory.mb" : "250",
+ "mapreduce.task.io.sort.mb" : "64",
+ "yarn.app.mapreduce.am.resource.mb" : "250",
+ "yarn.app.mapreduce.am.command-opts" : "-Xmx200m",
+ "mapred.job.reduce.memory.mb" : "250",
+ "mapred.child.java.opts" : "-Xmx200m",
+ "mapred.job.map.memory.mb" : "250",
+ "io.sort.mb" : "64",
+ "mapreduce.map.java.opts" : "-Xmx200m",
+ "mapreduce.reduce.java.opts" : "-Xmx200m"
+ }
+ },
+ {
+ "nagios-env":{
+ "nagios_contact" : "admin@localhost.localdomain",
+ "nagios_web_login" : "nagiosadmin",
+ "nagios_web_password" : "admin"
+ }
+ },
+ {
+ "tez-site" : {
+ "tez.am.java.opts" : "-server -Xmx200m -Djava.net.preferIPv4Stack=true -XX:+UseNUMA -XX:+UseParallelGC",
+ "tez.am.resource.memory.mb" : "250",
+ "tez.dag.am.resource.memory.mb" : "250",
+ "yarn.app.mapreduce.am.command-opts" : "-Xmx200m"
+ }
+ },
+ {
+ "webhcat-site" : {
+ "webhcat.proxyuser.hcat.hosts" : "*",
+ "webhcat.proxyuser.hcat.groups" : "*"
+ }
+ },
+ {
+ "yarn-env": {
+ "apptimelineserver_heapsize" : "250",
+ "resourcemanager_heapsize" : "250",
+ "nodemanager_heapsize" : "250",
+ "yarn_heapsize" : "250"
+ }
+
+ },
+ {
+ "yarn-site" : {
+ "yarn.nodemanager.resource.memory-mb": "2250",
+ "yarn.nodemanager.vmem-pmem-ratio" : "10",
+ "yarn.scheduler.minimum-allocation-mb" : "250",
+ "yarn.scheduler.maximum-allocation-mb" : "2250",
+ "yarn.nodemanager.pmem-check-enabled" : "false",
+ "yarn.acl.enable" : "false",
+ "yarn.resourcemanager.webapp.proxyuser.hcat.groups" : "*",
+ "yarn.resourcemanager.webapp.proxyuser.hcat.hosts" : "*"
+ }
+ }
+ ],
+ "host_groups" : [
+ {
+ "name" : "single_host",
+ "components" : [
+ {"name": "APP_TIMELINE_SERVER"},
+ {"name" : "DATANODE"},
+ {"name" : "GANGLIA_SERVER"},
+ {"name" : "HDFS_CLIENT"},
+ {"name" : "HISTORYSERVER"},
+ {"name" : "HIVE_CLIENT"},
+ {"name" : "HIVE_METASTORE"},
+ {"name" : "HIVE_SERVER"},
+ {"name" : "MAPREDUCE2_CLIENT"},
+ {"name" : "MYSQL_SERVER"},
+ {"name" : "NAGIOS_SERVER"},
+ {"name" : "NAMENODE"},
+ {"name" : "NODEMANAGER"},
+ {"name" : "PIG"},
+ {"name" : "RESOURCEMANAGER"},
+ {"name" : "SECONDARY_NAMENODE"},
+ {"name" : "TEZ_CLIENT"},
+ {"name" : "WEBHCAT_SERVER"},
+ {"name" : "YARN_CLIENT"},
+ {"name" : "ZOOKEEPER_CLIENT"},
+ {"name" : "ZOOKEEPER_SERVER"}
+ ],
+ "cardinality" : "1"
+ }
+ ],
+ "Blueprints" : {
+ "blueprint_name" : "pig-view",
+ "stack_name" : "HDP",
+ "stack_version" : "2.2"
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/5fc87355/contrib/views/pig/clustertemplate.json
----------------------------------------------------------------------
diff --git a/contrib/views/pig/clustertemplate.json b/contrib/views/pig/clustertemplate.json
new file mode 100644
index 0000000..e41f076
--- /dev/null
+++ b/contrib/views/pig/clustertemplate.json
@@ -0,0 +1,13 @@
+{
+ "blueprint" : "pig-view",
+ "host_groups" :[
+ {
+ "name" : "single_host",
+ "hosts" : [
+ {
+ "fqdn" : "c6403.ambari.apache.org"
+ }
+ ]
+ }
+ ]
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/5fc87355/contrib/views/pig/readme.md
----------------------------------------------------------------------
diff --git a/contrib/views/pig/readme.md b/contrib/views/pig/readme.md
new file mode 100644
index 0000000..c9714bc
--- /dev/null
+++ b/contrib/views/pig/readme.md
@@ -0,0 +1,168 @@
+<!---
+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](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.
+-->
+
+Pig View
+============
+
+Description
+-----
+This View provides a UI to create, save and run pig scripts. You can browse the list of pig scripts you have created and saved.
+You can see the history of runs of the pig scripts, view the logs and download the results. You can also upload and use
+UDFs with your pig scripts.
+
+Requirements
+-----
+
+- Ambari 1.7.0
+- HDFS with WebHDFS configured
+- WebHCat with Pig configured
+
+Build
+-----
+
+The view can be built as a maven project.
+
+ mvn clean install
+
+The build will produce the view archive.
+
+ target/pig-0.1.0-SNAPSHOT.jar
+
+Place the view archive on the Ambari Server and restart to deploy.
+
+ cp pig-0.1.0-SNAPSHOT.jar /var/lib/ambari-server/resources/views/
+ ambari-server restart
+
+View Definition
+-----
+
+ <!-- HDFS Configs -->
+ <parameter>
+ <name>webhdfs.url</name>
+ <description>WebHDFS FileSystem URL (example: webhdfs://namenode.host:50070)</description>
+ <required>true</required>
+ </parameter>
+
+ <parameter>
+ <name>webhdfs.username</name>
+ <description>User and doAs for proxy user for HDFS</description>
+ <required>false</required>
+ </parameter>
+
+ <!-- WebHCat Configs -->
+ <parameter>
+ <name>webhcat.url</name>
+ <description>WebHCat URL (example: http://webhcat.host:50111/templeton/v1)</description>
+ <required>true</required>
+ </parameter>
+
+ <parameter>
+ <name>webhcat.username</name>
+ <description>User and doAs for proxy user for WebHCat</description>
+ <required>false</required>
+ </parameter>
+
+ <!-- General Configs -->
+ <parameter>
+ <name>dataworker.username</name>
+ <description>The username (defaults to ViewContext username)</description>
+ <required>false</required>
+ </parameter>
+
+ <parameter>
+ <name>scripts.dir</name>
+ <description>HDFS directory path to store Pig scripts (example: /tmp/${username}/scripts)</description>
+ <required>true</required>
+ </parameter>
+
+ <parameter>
+ <name>jobs.dir</name>
+ <description>HDFS directory path to store Pig job status (example: /tmp/${username}/jobs)</description>
+ <required>true</required>
+ </parameter>
+
+ <parameter>
+ <name>store.dir</name>
+ <description>HDFS directory to store meta information about Pig scripts and jobs (example: /tmp/${username}/store)</description>
+ <required>false</required>
+ </parameter>
+
+Cluster Configuration
+-----
+Configure HDFS for a proxy user. In core-site.xml, add the following properties:
+
+ hadoop.proxyuser.root.hosts=*
+ hadoop.proxyuser.root.groups=*
+ hadoop.proxyuser.hcat.hosts=*
+ hadoop.proxyuser.hcat.groups=*
+
+Configure WebHCat for a proxy user. In webhcat-site.xml, add the following properties:
+
+ webhcat.proxyuser.hcat.hosts=*
+ webhcat.proxyuser.hcat.groups=*
+
+Create Hadoop users and make members of the hdfs, hadoop and users groups. For example, to create a user "admin":
+
+ useradd -G hdfs admin
+ usermod -a -G users admin
+ usermod -a -G hadoop admin
+
+Check the "admin" user has the correct group membership.
+
+ id admin
+ uid=1002(admin) gid=1002(admin) groups=1002(admin),100(users),503(hadoop),498(hdfs)
+
+
+Single Node Cluster
+-----
+
+The following section describes how to use the [Ambari Vagrant](https://cwiki.apache.org/confluence/display/AMBARI/Quick+Start+Guide) setup to create a single-node cluster with the Pig View.
+
+Install Ambari Server and Ambari Agent.
+
+Manually register Ambari Agent with Server.
+
+Setup and Start Ambari Server.
+
+Create Blueprint using the provided [blueprint.json](blueprint.json) file.
+
+ POST
+ http://c6401.ambari.apache.org:8080/api/v1/blueprints/pig-view
+
+Create Cluster using the provided [clustertemplate.json](clustertemplate.json) file
+
+ POST
+ http://c6401.ambari.apache.org:8080/api/v1/clusters/PigView
+
+After the cluster is created, deploy the Pig View into Ambari.
+
+ cp pig-0.1.0-SNAPSHOT.jar /var/lib/ambari-server/resources/views/
+ ambari-server restart
+
+From the Ambari Administration interface, create a Pig view instance.
+
+|Property|Value|
+|---|---|
+| Details: Instance Name | PIG_1 |
+| Details: Display Name | Pig |
+| Details: Description | Save and execute Pig scripts |
+| Properties: webhdfs.url | webhdfs://c6401.ambari.apache.org:50070 |
+| Properties: webhcat.url | http://c6401.ambari.apache.org:50111/templeton/v1 |
+| Properties: scripts.dir | /tmp/${username}/scripts |
+| Properties: jobs.dir | /tmp/${username}/jobs |
+
+Login to Ambari as "admin" and browse to the view instance.
+
+ http://c6401.ambari.apache.org:8080/#/main/views/PIG/0.1.0/PIG_1
http://git-wip-us.apache.org/repos/asf/ambari/blob/5fc87355/contrib/views/pig/src/main/resources/ui/pig-web/app/styles/style.less
----------------------------------------------------------------------
diff --git a/contrib/views/pig/src/main/resources/ui/pig-web/app/styles/style.less b/contrib/views/pig/src/main/resources/ui/pig-web/app/styles/style.less
index c8b8576..b9c248a 100644
--- a/contrib/views/pig/src/main/resources/ui/pig-web/app/styles/style.less
+++ b/contrib/views/pig/src/main/resources/ui/pig-web/app/styles/style.less
@@ -24,7 +24,7 @@
@import './../../bower_components/bootstrap/less/bootstrap.less';
.wrap {
- padding: 15px;
+ padding: 0px;
}
.moz-padding (@selector, @pre: ~'', @padding) {
@@ -172,7 +172,7 @@
text-align: left;
padding: 0;
&:hover {
- color: darken(#fff, 30%);
+ color: #fff;
text-decoration: none;
}
}
@@ -374,6 +374,7 @@
padding: 5px;
background-color: #f5f5f5;
border-bottom: 1px solid #dddddd;
+ border-radius: 4px;
.argadd {
font-size: 13px;
width:10%;
@@ -486,7 +487,7 @@
width: 140px;
}
th:last-child {
- width: 110px;
+ width: 260px;
}
td > h4 {
margin: 0;
@@ -506,6 +507,14 @@
}
}
+.editor-container.CodeMirror-scroll {
+ background-color: #fff;
+}
+
+.main-content {
+ padding-left: 0px;
+}
+
.job-container {
.progress-wrap {
.base-transition( width 200ms linear;);
@@ -535,6 +544,8 @@
.common-shadow-inset;
height: 215px;
border-bottom: 1px solid #dddddd;
+ cursor: not-allowed;
+ background-color: #fcfcfc;
.CodeMirror-gutters {
background-color: #fcfcfc;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/5fc87355/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig.hbs b/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig.hbs
index 881fd82..bf27deb 100644
--- a/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig.hbs
+++ b/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig.hbs
@@ -48,7 +48,7 @@
{{outlet alert}}
</div>
- <div class="col-md-9">
+ <div class="col-md-9 main-content">
{{outlet}}
</div>
</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/5fc87355/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig/history.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig/history.hbs b/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig/history.hbs
index 7e7eb96..7cba9d5 100644
--- a/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig/history.hbs
+++ b/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig/history.hbs
@@ -23,7 +23,7 @@
<table class="table table-striped ">
<thead>
<tr class="label-row">
- <th>{{t 'common.date'}}</th>
+ <th class="first">{{t 'common.date'}}</th>
<th>{{t 'scripts.script'}}</th>
<th>{{t 'job.status'}}</th>
<th>{{t 'history.duration'}}</th>
@@ -45,10 +45,10 @@
<td>{{#unless jobInProgress}}{{durationTime}}{{/unless}}</td>
<td>
{{#unless jobInProgress}}
- <a {{action 'logsPopup' this}} href="#" title="Logs"> <i class="fa fa-file-text-o"></i></a>
- <a {{action 'resultsPopup' this}} href="#" title="Results"> <i class="fa fa-table"></i></a>
+ <a {{action 'logsPopup' this}} href="#"> <i class="fa fa-file-text-o"></i> {{t 'job.logs'}}</a>
+ <a {{action 'resultsPopup' this}} href="#"> <i class="fa fa-table"></i> {{t 'job.results'}}</a>
{{/unless}}
- <a href="#" {{action 'deleteJob' this}} title="Delete"><i class="fa fa-trash-o"></i></a>
+ <a {{action 'deleteJob' this}} href="#"><i class="fa fa-trash-o"></i> {{t 'common.delete'}}</a>
</td>
</tr>
{{/each}}
@@ -61,4 +61,4 @@
{{#if content}}
{{partial 'partials/paginationControls'}}
-{{/if}}
\ No newline at end of file
+{{/if}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/5fc87355/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig/udfs.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig/udfs.hbs b/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig/udfs.hbs
index ff901b6..dab5a73 100644
--- a/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig/udfs.hbs
+++ b/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/pig/udfs.hbs
@@ -36,7 +36,7 @@
<td> {{this.name}}</td>
<td> {{this.path}}</td>
<td> {{this.owner}}</td>
- <td><a href="#" {{action "deleteUdf" this}} >{{t 'common.delete'}}</a></td>
+ <td><a href="#" {{action "deleteUdf" this}} ><i class="fa fa-trash-o"></i> {{t 'common.delete'}}</a></td>
</tr>
{{/each}}
</tbody>
@@ -50,4 +50,4 @@
<div class="alert alert-info" role="alert">{{t 'udfs.noUDFs'}}</div>
{{/unless}}
-</div>
\ No newline at end of file
+</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/5fc87355/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/script/job.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/script/job.hbs b/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/script/job.hbs
index bf406a9..5b42f18 100644
--- a/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/script/job.hbs
+++ b/contrib/views/pig/src/main/resources/ui/pig-web/app/templates/script/job.hbs
@@ -55,7 +55,7 @@
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#scriptResults">
- <i class="toggle-icon fa fa-fw fa-chevron-right"></i>
+ <i class="toggle-icon fa fa-fw fa-chevron-right fa-rotate-90"></i>
{{t 'job.results'}}
</a>
{{#if jobResults.isFulfilled }}
@@ -63,7 +63,7 @@
{{/if}}
</h4>
</div>
- {{#view "view.collapsePanel" id="scriptResults" class="panel-collapse collapse" }}
+ {{#view "view.collapsePanel" id="scriptResults" class="panel-collapse collapse in" }}
<div class="panel-body">
{{#if jobResults.isPending}}
<pre><div class="spinner-sm"></div></pre>
@@ -112,12 +112,12 @@
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#scriptDetails">
- <i class="toggle-icon fa fa-fw fa-chevron-right fa-rotate-90"></i>
+ <i class="toggle-icon fa fa-fw fa-chevron-right"></i>
{{t 'job.script_details'}}
</a>
</h4>
</div>
- {{#view "view.collapsePanel" id="scriptDetails" class="panel-collapse collapse in" }}
+ {{#view "view.collapsePanel" id="scriptDetails" class="panel-collapse collapse" }}
<div class="panel-body body-title">
{{t 'job.script_contents'}}:
</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/5fc87355/contrib/views/pig/src/main/resources/ui/pig-web/app/translations.js
----------------------------------------------------------------------
diff --git a/contrib/views/pig/src/main/resources/ui/pig-web/app/translations.js b/contrib/views/pig/src/main/resources/ui/pig-web/app/translations.js
index e1bb083..c7bf0b7 100644
--- a/contrib/views/pig/src/main/resources/ui/pig-web/app/translations.js
+++ b/contrib/views/pig/src/main/resources/ui/pig-web/app/translations.js
@@ -30,7 +30,7 @@ Ember.I18n.translations = {
'history':"History",
'clone':"Clone",
'cancel':"Cancel",
- 'discard_changes':"Discard changes",
+ 'discard_changes':"Discard Changes",
'arguments':"Arguments",
'errorLog':"Stack Trace",
'showErrorLog':"Show Stack Trace",
@@ -59,14 +59,14 @@ Ember.I18n.translations = {
'create_script':'New Script',
'unsaved_changes_warning':'You have unsaved changes in script.',
'script_title_placeholder': 'Script name',
- 'file_path_placeholder':'Full path to script file',
+ 'file_path_placeholder':'/hdfs/path/to/pig/script',
'file_path_hint':'Leave empty to create file automatically.',
'copy_created_massage':'{{title}} created successfully.',
'copy_created':'Copy Created',
'continue_editing':'Continue Editing',
'go_to_copy':'Go to Copy',
- 'error_empty_title':'Title can not be empty!',
+ 'error_empty_title':'Name cannot be empty',
'confirm_delete':'Confirm Delete',
'confirm_delete_massage':'Are you sure you want to delete {{title}} script?'
@@ -76,17 +76,17 @@ Ember.I18n.translations = {
'arg_present':'Argument already present',
'file_exist_error':'File already exist',
'script_saved':'{{title}} saved!',
- 'script_created':'{{title}} created!',
- 'script_deleted':'{{title}} deleted!',
- 'create_failed':'Failed to create script!',
- 'delete_failed':'Delete failed!',
+ 'script_created':'{{title}} created',
+ 'script_deleted':'{{title}} deleted',
+ 'create_failed':'Failed to create script',
+ 'delete_failed':'Delete failed',
'save_error':'Error while saving script',
'save_error_reason':'{{message}}',
'rename_unfinished':'Please rename script first.'
}
},
'editor':{
- 'title_updated':'Title updated.',
+ 'title_updated':'Name updated',
'pig_argument':'Pig argument',
'pighelper':'PIG helper',
'udfhelper':'UDF helper',
@@ -109,14 +109,14 @@ Ember.I18n.translations = {
'jobId':'Job ID',
'started':'Started',
'noJobs': "No jobs to display",
- 'kill_job': "Kill job",
+ 'kill_job': "Kill Job",
'script_details': "Script Details",
'script_contents': "Script contents",
'alert':{
'job_started' :'Job started!',
- 'job_killed' :'{{title}} job killed!',
- 'job_kill_error' :'Job kill failed!',
- 'start_filed' :'Job failed to start!',
+ 'job_killed' :'{{title}} job killed',
+ 'job_kill_error' :'Job kill failed',
+ 'start_filed' :'Job failed to start',
'load_error' :'Error loading job. Reason: {{message}}',
'stdout_error' :'Error loading STDOUT. \n Status: {{status}} Message: {{message}}',
'stderr_error' :'Error loading STDERR. \n Status: {{status}} Message: {{message}}',
@@ -145,15 +145,15 @@ Ember.I18n.translations = {
},
'noUDFs': "No UDFs to display",
'alert':{
- 'udf_created':'{{name}} created!',
- 'udf_deleted':'{{name}} deleted!',
- 'create_failed':'Failed to create UDF!',
- 'delete_failed':'Delete failed!'
+ 'udf_created':'{{name}} created',
+ 'udf_deleted':'{{name}} deleted',
+ 'create_failed':'Failed to create UDF',
+ 'delete_failed':'Delete failed'
},
'modal':{
'create_udf':'Create UDF',
'udf_name':'UDF name',
- 'hdfs_path':'HDFS path'
+ 'hdfs_path':'/hdfs/path/to/udf'
}
},
'history':{
@@ -162,8 +162,8 @@ Ember.I18n.translations = {
'load_error':'Error loading pig history.'
},
'splash':{
- 'welcome':'Welcome to Apache Pig UI',
- 'please_wait':'Please wait while we test connection to services',
+ 'welcome':'Welcome to the Pig View',
+ 'please_wait':'Testing connection to services...please wait.',
'storage_test':'Storage test',
'hdfs_test':'HDFS test',
'webhcat_test':'WebHCat test'
http://git-wip-us.apache.org/repos/asf/ambari/blob/5fc87355/contrib/views/pig/src/main/resources/view.xml
----------------------------------------------------------------------
diff --git a/contrib/views/pig/src/main/resources/view.xml b/contrib/views/pig/src/main/resources/view.xml
index 9c92a3b..89e3c56 100644
--- a/contrib/views/pig/src/main/resources/view.xml
+++ b/contrib/views/pig/src/main/resources/view.xml
@@ -35,7 +35,7 @@
<!-- WebHCat Configs -->
<parameter>
<name>webhcat.url</name>
- <description>WebHCat URL (example: http://webhcat.host:50111/templeton)</description>
+ <description>WebHCat URL (example: http://webhcat.host:50111/templeton/v1)</description>
<required>true</required>
</parameter>
@@ -46,7 +46,6 @@
</parameter>
<!-- General Configs -->
-
<parameter>
<name>dataworker.username</name>
<description>The username (defaults to ViewContext username)</description>
@@ -55,19 +54,19 @@
<parameter>
<name>scripts.dir</name>
- <description>HDFS directory path to store Pig scripts (example: /users/${username})</description>
+ <description>HDFS directory to store Pig scripts (example: /user/${username}/scripts)</description>
<required>true</required>
</parameter>
<parameter>
<name>jobs.dir</name>
- <description>HDFS directory path to store Pig job status (example: /users/${username})</description>
+ <description>HDFS directory to store Pig job status (example: /user/${username}/jobs)</description>
<required>true</required>
</parameter>
<parameter>
<name>store.dir</name>
- <description>HDFS directory to store meta information about Pig scripts and jobs (example: /users/${username})</description>
+ <description>HDFS directory to store meta information about Pig scripts and jobs (example: /user/${username}/store)</description>
<required>false</required>
</parameter>