浏览代码

AMBARI-3755: Config Refactor: Installer wizard should not save global configuration not used by agent. (jaimin)

Jaimin Jetly 11 年之前
父节点
当前提交
fb60f21dac
共有 33 个文件被更改,包括 810 次插入1282 次删除
  1. 198 188
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HDFS/configuration/hdfs-site.xml
  2. 10 4
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/configuration/hive-site.xml
  3. 255 250
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/MAPREDUCE/configuration/mapred-site.xml
  4. 12 2
      ambari-server/src/main/resources/stacks/HDP/1.3.3/services/HDFS/configuration/hdfs-site.xml
  5. 6 0
      ambari-server/src/main/resources/stacks/HDP/1.3.3/services/HIVE/configuration/hive-site.xml
  6. 9 2
      ambari-server/src/main/resources/stacks/HDP/1.3.3/services/MAPREDUCE/configuration/mapred-site.xml
  7. 12 2
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HDFS/configuration/hdfs-site.xml
  8. 7 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/configuration/hive-site.xml
  9. 12 2
      ambari-server/src/main/resources/stacks/HDPLocal/1.3.2/services/HDFS/configuration/hdfs-site.xml
  10. 6 0
      ambari-server/src/main/resources/stacks/HDPLocal/1.3.2/services/HIVE/configuration/hive-site.xml
  11. 10 5
      ambari-server/src/main/resources/stacks/HDPLocal/1.3.2/services/MAPREDUCE/configuration/mapred-site.xml
  12. 12 2
      ambari-server/src/main/resources/stacks/HDPLocal/1.3.3/services/HDFS/configuration/hdfs-site.xml
  13. 6 0
      ambari-server/src/main/resources/stacks/HDPLocal/1.3.3/services/HIVE/configuration/hive-site.xml
  14. 9 2
      ambari-server/src/main/resources/stacks/HDPLocal/1.3.3/services/MAPREDUCE/configuration/mapred-site.xml
  15. 12 2
      ambari-server/src/main/resources/stacks/HDPLocal/2.0.6/services/HDFS/configuration/hdfs-site.xml
  16. 7 0
      ambari-server/src/main/resources/stacks/HDPLocal/2.0.6/services/HIVE/configuration/hive-site.xml
  17. 0 6
      ambari-web/app/controllers/main/admin/security/add/step4.js
  18. 4 4
      ambari-web/app/controllers/main/admin/security/disable.js
  19. 1 1
      ambari-web/app/controllers/main/service/info/configs.js
  20. 1 0
      ambari-web/app/controllers/wizard.js
  21. 4 11
      ambari-web/app/controllers/wizard/step8_controller.js
  22. 0 15
      ambari-web/app/data/HDP2/config_mapping.js
  23. 49 170
      ambari-web/app/data/HDP2/global_properties.js
  24. 4 4
      ambari-web/app/data/HDP2/secure_mapping.js
  25. 14 0
      ambari-web/app/data/HDP2/site_properties.js
  26. 0 23
      ambari-web/app/data/config_mapping.js
  27. 22 504
      ambari-web/app/data/global_properties.js
  28. 4 4
      ambari-web/app/data/secure_mapping.js
  29. 26 0
      ambari-web/app/data/site_properties.js
  30. 1 0
      ambari-web/app/models/service_config.js
  31. 92 78
      ambari-web/app/utils/config.js
  32. 4 0
      ambari-web/app/utils/helper.js
  33. 1 1
      ambari-web/app/views/wizard/controls_view.js

+ 198 - 188
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HDFS/configuration/hdfs-site.xml

@@ -22,7 +22,7 @@
 
 <configuration>
 
-<!-- file system properties -->
+  <!-- file system properties -->
 
   <property>
     <name>dfs.name.dir</name>
@@ -49,7 +49,7 @@
     <final>true</final>
   </property>
 
- <property>
+  <property>
     <name>dfs.datanode.socket.write.timeout</name>
     <value>0</value>
     <description>DFS Client write socket timeout</description>
@@ -66,7 +66,7 @@
     <name>dfs.block.local-path-access.user</name>
     <value>hbase</value>
     <description>the user who is allowed to perform short
-    circuit reads.
+      circuit reads.
     </description>
     <final>true</final>
   </property>
@@ -75,11 +75,11 @@
     <name>dfs.data.dir</name>
     <value>/hadoop/hdfs/data</value>
     <description>Determines where on the local filesystem an DFS data node
-  should store its blocks.  If this is a comma-delimited
-  list of directories, then data will be stored in all named
-  directories, typically on different devices.
-  Directories that do not exist are ignored.
-  </description>
+      should store its blocks.  If this is a comma-delimited
+      list of directories, then data will be stored in all named
+      directories, typically on different devices.
+      Directories that do not exist are ignored.
+    </description>
     <final>true</final>
   </property>
 
@@ -87,32 +87,32 @@
     <name>dfs.hosts.exclude</name>
     <value>/etc/hadoop/conf/dfs.exclude</value>
     <description>Names a file that contains a list of hosts that are
-    not permitted to connect to the namenode.  The full pathname of the
-    file must be specified.  If the value is empty, no hosts are
-    excluded.</description>
+      not permitted to connect to the namenode.  The full pathname of the
+      file must be specified.  If the value is empty, no hosts are
+      excluded.</description>
   </property>
 
   <property>
     <name>dfs.hosts</name>
     <value>/etc/hadoop/conf/dfs.include</value>
     <description>Names a file that contains a list of hosts that are
-    permitted to connect to the namenode. The full pathname of the file
-    must be specified.  If the value is empty, all hosts are
-    permitted.</description>
+      permitted to connect to the namenode. The full pathname of the file
+      must be specified.  If the value is empty, all hosts are
+      permitted.</description>
   </property>
 
   <property>
     <name>dfs.replication.max</name>
     <value>50</value>
     <description>Maximal block replication.
-  </description>
+    </description>
   </property>
 
   <property>
     <name>dfs.replication</name>
     <value>3</value>
     <description>Default block replication.
-  </description>
+    </description>
   </property>
 
   <property>
@@ -125,21 +125,21 @@
     <name>dfs.safemode.threshold.pct</name>
     <value>1.0f</value>
     <description>
-        Specifies the percentage of blocks that should satisfy
-        the minimal replication requirement defined by dfs.replication.min.
-        Values less than or equal to 0 mean not to start in safe mode.
-        Values greater than 1 will make safe mode permanent.
-        </description>
+      Specifies the percentage of blocks that should satisfy
+      the minimal replication requirement defined by dfs.replication.min.
+      Values less than or equal to 0 mean not to start in safe mode.
+      Values greater than 1 will make safe mode permanent.
+    </description>
   </property>
 
   <property>
     <name>dfs.balance.bandwidthPerSec</name>
     <value>6250000</value>
     <description>
-        Specifies the maximum amount of bandwidth that each datanode
-        can utilize for the balancing purpose in term of
-        the number of bytes per second.
-  </description>
+      Specifies the maximum amount of bandwidth that each datanode
+      can utilize for the balancing purpose in term of
+      the number of bytes per second.
+    </description>
   </property>
 
   <property>
@@ -150,14 +150,24 @@
     </description>
   </property>
 
+  <property>
+    <name>ambari.dfs.datanode.port</name>
+    <value>50010</value>
+  </property>
+
   <property>
     <name>dfs.datanode.address</name>
-    <value></value>
+    <value>0.0.0.0:${ambari.dfs.datanode.port}</value>
+  </property>
+
+  <property>
+    <name>ambari.dfs.datanode.http.port</name>
+    <value>50075</value>
   </property>
 
   <property>
     <name>dfs.datanode.http.address</name>
-    <value></value>
+    <value>0.0.0.0:${ambari.dfs.datanode.http.port}</value>
   </property>
 
   <property>
@@ -169,133 +179,133 @@
   <property>
     <name>dfs.http.address</name>
     <value>localhost:50070</value>
-<description>The name of the default file system.  Either the
-literal string "local" or a host:port for NDFS.</description>
-<final>true</final>
-</property>
-
-<property>
-<name>dfs.datanode.du.reserved</name>
-<!-- cluster variant -->
-<value>1073741824</value>
-<description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
-</description>
-</property>
-
-<property>
-<name>dfs.datanode.ipc.address</name>
-<value>0.0.0.0:8010</value>
-<description>
-The datanode ipc server address and port.
-If the port is 0 then the server will start on a free port.
-</description>
-</property>
-
-<property>
-<name>dfs.blockreport.initialDelay</name>
-<value>120</value>
-<description>Delay for first block report in seconds.</description>
-</property>
-
-<property>
-<name>dfs.datanode.du.pct</name>
-<value>0.85f</value>
-<description>When calculating remaining space, only use this percentage of the real available space
-</description>
-</property>
-
-<property>
-<name>dfs.namenode.handler.count</name>
-<value>40</value>
-<description>The number of server threads for the namenode.</description>
-</property>
-
-<property>
-<name>dfs.datanode.max.xcievers</name>
-<value>4096</value>
-<description>PRIVATE CONFIG VARIABLE</description>
-</property>
-
-<!-- Permissions configuration -->
-
-<property>
-<name>dfs.umaskmode</name>
-<value>077</value>
-<description>
-The octal umask used when creating files and directories.
-</description>
-</property>
-
-<property>
-<name>dfs.web.ugi</name>
-<!-- cluster variant -->
-<value>gopher,gopher</value>
-<description>The user account used by the web interface.
-Syntax: USERNAME,GROUP1,GROUP2, ...
-</description>
-</property>
-
-<property>
-<name>dfs.permissions</name>
-<value>true</value>
-<description>
-If "true", enable permission checking in HDFS.
-If "false", permission checking is turned off,
-but all other behavior is unchanged.
-Switching from one parameter value to the other does not change the mode,
-owner or group of files or directories.
-</description>
-</property>
-
-<property>
-<name>dfs.permissions.supergroup</name>
-<value>hdfs</value>
-<description>The name of the group of super-users.</description>
-</property>
-
-<property>
-<name>dfs.namenode.handler.count</name>
-<value>100</value>
-<description>Added to grow Queue size so that more client connections are allowed</description>
-</property>
-
-<property>
-<name>ipc.server.max.response.size</name>
-<value>5242880</value>
-</property>
-<property>
-<name>dfs.block.access.token.enable</name>
-<value>true</value>
-<description>
-If "true", access tokens are used as capabilities for accessing datanodes.
-If "false", no access tokens are checked on accessing datanodes.
-</description>
-</property>
-
-<property>
-<name>dfs.namenode.kerberos.principal</name>
-<value></value>
-<description>
-Kerberos principal name for the NameNode
-</description>
-</property>
-
-<property>
-<name>dfs.secondary.namenode.kerberos.principal</name>
-<value></value>
+    <description>The name of the default file system.  Either the
+      literal string "local" or a host:port for NDFS.</description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>dfs.datanode.du.reserved</name>
+    <!-- cluster variant -->
+    <value>1073741824</value>
+    <description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.ipc.address</name>
+    <value>0.0.0.0:8010</value>
     <description>
-        Kerberos principal name for the secondary NameNode.
+      The datanode ipc server address and port.
+      If the port is 0 then the server will start on a free port.
     </description>
   </property>
 
+  <property>
+    <name>dfs.blockreport.initialDelay</name>
+    <value>120</value>
+    <description>Delay for first block report in seconds.</description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.du.pct</name>
+    <value>0.85f</value>
+    <description>When calculating remaining space, only use this percentage of the real available space
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.namenode.handler.count</name>
+    <value>40</value>
+    <description>The number of server threads for the namenode.</description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.max.xcievers</name>
+    <value>4096</value>
+    <description>PRIVATE CONFIG VARIABLE</description>
+  </property>
+
+  <!-- Permissions configuration -->
+
+  <property>
+    <name>dfs.umaskmode</name>
+    <value>077</value>
+    <description>
+      The octal umask used when creating files and directories.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.web.ugi</name>
+    <!-- cluster variant -->
+    <value>gopher,gopher</value>
+    <description>The user account used by the web interface.
+      Syntax: USERNAME,GROUP1,GROUP2, ...
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.permissions</name>
+    <value>true</value>
+    <description>
+      If "true", enable permission checking in HDFS.
+      If "false", permission checking is turned off,
+      but all other behavior is unchanged.
+      Switching from one parameter value to the other does not change the mode,
+      owner or group of files or directories.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.permissions.supergroup</name>
+    <value>hdfs</value>
+    <description>The name of the group of super-users.</description>
+  </property>
+
+  <property>
+    <name>dfs.namenode.handler.count</name>
+    <value>100</value>
+    <description>Added to grow Queue size so that more client connections are allowed</description>
+  </property>
+
+  <property>
+    <name>ipc.server.max.response.size</name>
+    <value>5242880</value>
+  </property>
+  <property>
+    <name>dfs.block.access.token.enable</name>
+    <value>true</value>
+    <description>
+      If "true", access tokens are used as capabilities for accessing datanodes.
+      If "false", no access tokens are checked on accessing datanodes.
+    </description>
+  </property>
 
-<!--
-  This is KRB DOMAIN specific. The FQDN of the namenode has to be mentioned.
--->
+  <property>
+    <name>dfs.namenode.kerberos.principal</name>
+    <value></value>
+    <description>
+      Kerberos principal name for the NameNode
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.secondary.namenode.kerberos.principal</name>
+    <value></value>
+    <description>
+      Kerberos principal name for the secondary NameNode.
+    </description>
+  </property>
+
+
+  <!--
+    This is KRB DOMAIN specific. The FQDN of the namenode has to be mentioned.
+  -->
   <property>
     <name>dfs.namenode.kerberos.https.principal</name>
     <value></value>
-     <description>The Kerberos principal for the host that the NameNode runs on.</description>
+    <description>The Kerberos principal for the host that the NameNode runs on.</description>
 
   </property>
 
@@ -341,84 +351,84 @@ Kerberos principal name for the NameNode
   <property>
     <name>dfs.datanode.kerberos.principal</name>
     <value></value>
- <description>
-        The Kerberos principal that the DataNode runs as. "_HOST" is replaced by the real host name.
+    <description>
+      The Kerberos principal that the DataNode runs as. "_HOST" is replaced by the real host name.
     </description>
   </property>
 
   <property>
     <name>dfs.namenode.keytab.file</name>
     <value></value>
- <description>
-        Combined keytab file containing the namenode service and host principals.
+    <description>
+      Combined keytab file containing the namenode service and host principals.
     </description>
   </property>
 
   <property>
     <name>dfs.secondary.namenode.keytab.file</name>
     <value></value>
-  <description>
-        Combined keytab file containing the namenode service and host principals.
+    <description>
+      Combined keytab file containing the namenode service and host principals.
     </description>
   </property>
 
   <property>
     <name>dfs.datanode.keytab.file</name>
     <value></value>
- <description>
-        The filename of the keytab file for the DataNode.
+    <description>
+      The filename of the keytab file for the DataNode.
     </description>
   </property>
 
   <property>
     <name>dfs.https.port</name>
     <value>50470</value>
- <description>The https port where namenode binds</description>
+    <description>The https port where namenode binds</description>
 
   </property>
 
   <property>
     <name>dfs.https.address</name>
     <value>localhost:50470</value>
-  <description>The https address where namenode binds</description>
+    <description>The https address where namenode binds</description>
 
   </property>
 
   <property>
     <name>dfs.datanode.data.dir.perm</name>
     <value>750</value>
-<description>The permissions that should be there on dfs.data.dir
-directories. The datanode will not come up if the permissions are
-different on existing dfs.data.dir directories. If the directories
-don't exist, they will be created with this permission.</description>
-  </property>
-
-  <property>
-  <name>dfs.access.time.precision</name>
-  <value>0</value>
-  <description>The access time for HDFS file is precise upto this value.
-               The default value is 1 hour. Setting a value of 0 disables
-               access times for HDFS.
-  </description>
-</property>
-
-<property>
- <name>dfs.cluster.administrators</name>
- <value> hdfs</value>
- <description>ACL for who all can view the default servlets in the HDFS</description>
-</property>
-
-<property>
-  <name>ipc.server.read.threadpool.size</name>
-  <value>5</value>
-  <description></description>
-</property>
-
-<property>
-  <name>dfs.datanode.failed.volumes.tolerated</name>
-  <value>0</value>
-  <description>Number of failed disks datanode would tolerate</description>
-</property>
+    <description>The permissions that should be there on dfs.data.dir
+      directories. The datanode will not come up if the permissions are
+      different on existing dfs.data.dir directories. If the directories
+      don't exist, they will be created with this permission.</description>
+  </property>
+
+  <property>
+    <name>dfs.access.time.precision</name>
+    <value>0</value>
+    <description>The access time for HDFS file is precise upto this value.
+      The default value is 1 hour. Setting a value of 0 disables
+      access times for HDFS.
+    </description>
+  </property>
+
+  <property>
+    <name>dfs.cluster.administrators</name>
+    <value> hdfs</value>
+    <description>ACL for who all can view the default servlets in the HDFS</description>
+  </property>
+
+  <property>
+    <name>ipc.server.read.threadpool.size</name>
+    <value>5</value>
+    <description></description>
+  </property>
+
+  <property>
+    <name>dfs.datanode.failed.volumes.tolerated</name>
+    <value>0</value>
+    <description>Number of failed disks datanode would tolerate</description>
+  </property>
 
   <property>
     <name>dfs.namenode.avoid.read.stale.datanode</name>

+ 10 - 4
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/configuration/hive-site.xml

@@ -18,6 +18,12 @@ limitations under the License.
 -->
 
 <configuration>
+  <property>
+    <name>ambari.hive.db.schema.name</name>
+    <value>hive</value>
+    <description>Database name used as the Hive Metastore</description>
+  </property>
+
   <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc</value>
@@ -52,21 +58,21 @@ limitations under the License.
     <name>hive.metastore.sasl.enabled</name>
     <value></value>
     <description>If true, the metastore thrift interface will be secured with SASL.
-     Clients must authenticate with Kerberos.</description>
+      Clients must authenticate with Kerberos.</description>
   </property>
 
   <property>
     <name>hive.metastore.kerberos.keytab.file</name>
     <value></value>
     <description>The path to the Kerberos Keytab file containing the metastore
-     thrift server's service principal.</description>
+      thrift server's service principal.</description>
   </property>
 
   <property>
     <name>hive.metastore.kerberos.principal</name>
     <value></value>
     <description>The service principal for the metastore thrift server. The special
-    string _HOST will be replaced automatically with the correct host name.</description>
+      string _HOST will be replaced automatically with the correct host name.</description>
   </property>
 
   <property>
@@ -109,7 +115,7 @@ limitations under the License.
     <name>hive.security.authorization.manager</name>
     <value>org.apache.hcatalog.security.HdfsAuthorizationProvider</value>
     <description>the hive client authorization manager class name.
-    The user defined authorization class should implement interface org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider.  </description>
+      The user defined authorization class should implement interface org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider.  </description>
   </property>
 
   <property>

+ 255 - 250
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/MAPREDUCE/configuration/mapred-site.xml

@@ -22,7 +22,7 @@
 
 <configuration xmlns:xi="http://www.w3.org/2001/XInclude">
 
-<!-- i/o properties -->
+  <!-- i/o properties -->
 
   <property>
     <name>io.sort.mb</name>
@@ -50,25 +50,25 @@
     <description>No description</description>
   </property>
 
-<!-- map/reduce properties -->
+  <!-- map/reduce properties -->
 
-<property>
-  <name>mapred.tasktracker.tasks.sleeptime-before-sigkill</name>
-  <value>250</value>
-  <description>Normally, this is the amount of time before killing
-  processes, and the recommended-default is 5.000 seconds - a value of
-  5000 here.  In this case, we are using it solely to blast tasks before
-  killing them, and killing them very quickly (1/4 second) to guarantee
-  that we do not leave VMs around for later jobs.
-  </description>
-</property>
+  <property>
+    <name>mapred.tasktracker.tasks.sleeptime-before-sigkill</name>
+    <value>250</value>
+    <description>Normally, this is the amount of time before killing
+      processes, and the recommended-default is 5.000 seconds - a value of
+      5000 here.  In this case, we are using it solely to blast tasks before
+      killing them, and killing them very quickly (1/4 second) to guarantee
+      that we do not leave VMs around for later jobs.
+    </description>
+  </property>
 
   <property>
     <name>mapred.job.tracker.handler.count</name>
     <value>50</value>
     <description>
-    The number of server threads for the JobTracker. This should be roughly
-    4% of the number of tasktracker nodes.
+      The number of server threads for the JobTracker. This should be roughly
+      4% of the number of tasktracker nodes.
     </description>
   </property>
 
@@ -91,11 +91,10 @@
     <name>mapred.job.tracker.http.address</name>
     <!-- cluster variant -->
     <value>localhost:50030</value>
-    <description>Http address for JobTracker</description>
+    <description>JobTracker host and http port address</description>
     <final>true</final>
   </property>
 
-
   <property>
     <!-- cluster specific -->
     <name>mapred.local.dir</name>
@@ -105,8 +104,8 @@
   </property>
 
   <property>
-  <name>mapreduce.cluster.administrators</name>
-  <value> hadoop</value>
+    <name>mapreduce.cluster.administrators</name>
+    <value> hadoop</value>
   </property>
 
   <property>
@@ -136,14 +135,14 @@
     <name>mapred.map.tasks.speculative.execution</name>
     <value>false</value>
     <description>If true, then multiple instances of some map tasks
-               may be executed in parallel.</description>
+      may be executed in parallel.</description>
   </property>
 
   <property>
     <name>mapred.reduce.tasks.speculative.execution</name>
     <value>false</value>
     <description>If true, then multiple instances of some reduce tasks
-               may be executed in parallel.</description>
+      may be executed in parallel.</description>
   </property>
 
   <property>
@@ -155,29 +154,29 @@
     <name>mapred.inmem.merge.threshold</name>
     <value>1000</value>
     <description>The threshold, in terms of the number of files
-  for the in-memory merge process. When we accumulate threshold number of files
-  we initiate the in-memory merge and spill to disk. A value of 0 or less than
-  0 indicates we want to DON'T have any threshold and instead depend only on
-  the ramfs's memory consumption to trigger the merge.
-  </description>
+      for the in-memory merge process. When we accumulate threshold number of files
+      we initiate the in-memory merge and spill to disk. A value of 0 or less than
+      0 indicates we want to DON'T have any threshold and instead depend only on
+      the ramfs's memory consumption to trigger the merge.
+    </description>
   </property>
 
   <property>
     <name>mapred.job.shuffle.merge.percent</name>
     <value>0.66</value>
     <description>The usage threshold at which an in-memory merge will be
-  initiated, expressed as a percentage of the total memory allocated to
-  storing in-memory map outputs, as defined by
-  mapred.job.shuffle.input.buffer.percent.
-  </description>
+      initiated, expressed as a percentage of the total memory allocated to
+      storing in-memory map outputs, as defined by
+      mapred.job.shuffle.input.buffer.percent.
+    </description>
   </property>
 
   <property>
     <name>mapred.job.shuffle.input.buffer.percent</name>
     <value>0.7</value>
     <description>The percentage of memory to be allocated from the maximum heap
-  size to storing map outputs during the shuffle.
-  </description>
+      size to storing map outputs during the shuffle.
+    </description>
   </property>
 
   <property>
@@ -188,13 +187,13 @@
     </description>
   </property>
 
-<property>
-  <name>mapred.output.compression.type</name>
-  <value>BLOCK</value>
-  <description>If the job outputs are to compressed as SequenceFiles, how should
-               they be compressed? Should be one of NONE, RECORD or BLOCK.
-  </description>
-</property>
+  <property>
+    <name>mapred.output.compression.type</name>
+    <value>BLOCK</value>
+    <description>If the job outputs are to compressed as SequenceFiles, how should
+      they be compressed? Should be one of NONE, RECORD or BLOCK.
+    </description>
+  </property>
 
 
   <property>
@@ -211,7 +210,7 @@
     <name>mapred.jobtracker.restart.recover</name>
     <value>false</value>
     <description>"true" to enable (job) recovery upon restart,
-               "false" to start afresh
+      "false" to start afresh
     </description>
   </property>
 
@@ -219,20 +218,20 @@
     <name>mapred.job.reduce.input.buffer.percent</name>
     <value>0.0</value>
     <description>The percentage of memory- relative to the maximum heap size- to
-  retain map outputs during the reduce. When the shuffle is concluded, any
-  remaining map outputs in memory must consume less than this threshold before
-  the reduce can begin.
-  </description>
+      retain map outputs during the reduce. When the shuffle is concluded, any
+      remaining map outputs in memory must consume less than this threshold before
+      the reduce can begin.
+    </description>
   </property>
 
- <property>
-  <name>mapreduce.reduce.input.limit</name>
-  <value>10737418240</value>
-  <description>The limit on the input size of the reduce. (This value
-  is 10 Gb.)  If the estimated input size of the reduce is greater than
-  this value, job is failed. A value of -1 means that there is no limit
-  set. </description>
-</property>
+  <property>
+    <name>mapreduce.reduce.input.limit</name>
+    <value>10737418240</value>
+    <description>The limit on the input size of the reduce. (This value
+      is 10 Gb.)  If the estimated input size of the reduce is greater than
+      this value, job is failed. A value of -1 means that there is no limit
+      set. </description>
+  </property>
 
 
   <!-- copied from kryptonite configuration -->
@@ -246,9 +245,9 @@
     <name>mapred.task.timeout</name>
     <value>600000</value>
     <description>The number of milliseconds before a task will be
-  terminated if it neither reads an input, writes an output, nor
-  updates its status string.
-  </description>
+      terminated if it neither reads an input, writes an output, nor
+      updates its status string.
+    </description>
   </property>
 
   <property>
@@ -260,9 +259,9 @@
   <property>
     <name>mapred.task.tracker.task-controller</name>
     <value>org.apache.hadoop.mapred.DefaultTaskController</value>
-   <description>
-     TaskController which is used to launch and manage task execution.
-  </description>
+    <description>
+      TaskController which is used to launch and manage task execution.
+    </description>
   </property>
 
   <property>
@@ -271,10 +270,16 @@
   </property>
 
   <property>
-    <name>mapred.child.java.opts</name>
-    <value></value>
+    <name>ambari.mapred.child.java.opts.memory</name>
+    <value>768</value>
 
-    <description>No description</description>
+    <description>Java options Memory for the TaskTracker child processes</description>
+  </property>
+
+  <property>
+    <name>mapred.child.java.opts</name>
+    <value>-server -Xmx${ambari.mapred.child.java.opts.memory}m -Djava.net.preferIPv4Stack=true</value>
+    <description>Java options for the TaskTracker child processes</description>
   </property>
 
   <property>
@@ -289,7 +294,7 @@
     <name>mapred.cluster.reduce.memory.mb</name>
     <value>2048</value>
     <description>
-    The virtual memory size of a single Reduce slot in the MapReduce framework
+      The virtual memory size of a single Reduce slot in the MapReduce framework
     </description>
   </property>
 
@@ -335,137 +340,137 @@
     </description>
   </property>
 
-<property>
-  <name>mapred.hosts.exclude</name>
-  <value>/etc/hadoop/conf/mapred.exclude</value>
-  <description>
-    Names a file that contains the list of hosts that
-    should be excluded by the jobtracker.  If the value is empty, no
-    hosts are excluded.
-  </description>
-</property>
-
-<property>
-  <name>mapred.max.tracker.blacklists</name>
-  <value>16</value>
-  <description>
-    if node is reported blacklisted by 16 successful jobs within timeout-window, it will be graylisted
-  </description>
-</property>
-
-<property>
-  <name>mapred.healthChecker.script.path</name>
-  <value>file:////mapred/jobstatus</value>
-  <description>
-    Directory path to view job status
-  </description>
-</property>
-
-<property>
-  <name>mapred.healthChecker.interval</name>
-  <value>135000</value>
-</property>
-
-<property>
-  <name>mapred.healthChecker.script.timeout</name>
-  <value>60000</value>
-</property>
-
-<property>
-  <name>mapred.job.tracker.persist.jobstatus.active</name>
-  <value>false</value>
-  <description>Indicates if persistency of job status information is
-  active or not.
-  </description>
-</property>
-
-<property>
-  <name>mapred.job.tracker.persist.jobstatus.hours</name>
-  <value>1</value>
-  <description>The number of hours job status information is persisted in DFS.
-    The job status information will be available after it drops of the memory
-    queue and between jobtracker restarts. With a zero value the job status
-    information is not persisted at all in DFS.
-  </description>
-</property>
-
-<property>
-  <name>mapred.job.tracker.persist.jobstatus.dir</name>
-  <value>/etc/hadoop/conf/health_check</value>
-  <description>The directory where the job status information is persisted
-    in a file system to be available after it drops of the memory queue and
-    between jobtracker restarts.
-  </description>
-</property>
-
-<property>
-  <name>mapred.jobtracker.retirejob.check</name>
-  <value>10000</value>
-</property>
-
-<property>
-  <name>mapred.jobtracker.retirejob.interval</name>
-  <value>21600000</value>
-</property>
-
-<property>
-  <name>mapred.job.tracker.history.completed.location</name>
-  <value>/mapred/history/done</value>
-  <description>No description</description>
-</property>
-
-<property>
-  <name>mapred.task.maxvmem</name>
-  <value></value>
-  <final>true</final>
-   <description>No description</description>
-</property>
-
-<property>
-  <name>mapred.jobtracker.maxtasks.per.job</name>
-  <value>-1</value>
-  <final>true</final>
-  <description>The maximum number of tasks for a single job.
-  A value of -1 indicates that there is no maximum.  </description>
-</property>
-
-<property>
-  <name>mapreduce.fileoutputcommitter.marksuccessfuljobs</name>
-  <value>false</value>
-</property>
-
-<property>
-  <name>mapred.userlog.retain.hours</name>
-  <value>24</value>
-  <description>
-    The maximum time, in hours, for which the user-logs are to be retained after the job completion.
-  </description>
-</property>
-
-<property>
-  <name>mapred.job.reuse.jvm.num.tasks</name>
-  <value>1</value>
-  <description>
-    How many tasks to run per jvm. If set to -1, there is no limit
-  </description>
-  <final>true</final>
-</property>
-
-<property>
-  <name>mapreduce.jobtracker.kerberos.principal</name>
-  <value></value>
-  <description>
+  <property>
+    <name>mapred.hosts.exclude</name>
+    <value>/etc/hadoop/conf/mapred.exclude</value>
+    <description>
+      Names a file that contains the list of hosts that
+      should be excluded by the jobtracker.  If the value is empty, no
+      hosts are excluded.
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.max.tracker.blacklists</name>
+    <value>16</value>
+    <description>
+      if node is reported blacklisted by 16 successful jobs within timeout-window, it will be graylisted
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.healthChecker.script.path</name>
+    <value>file:////mapred/jobstatus</value>
+    <description>
+      Directory path to view job status
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.healthChecker.interval</name>
+    <value>135000</value>
+  </property>
+
+  <property>
+    <name>mapred.healthChecker.script.timeout</name>
+    <value>60000</value>
+  </property>
+
+  <property>
+    <name>mapred.job.tracker.persist.jobstatus.active</name>
+    <value>false</value>
+    <description>Indicates if persistency of job status information is
+      active or not.
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.job.tracker.persist.jobstatus.hours</name>
+    <value>1</value>
+    <description>The number of hours job status information is persisted in DFS.
+      The job status information will be available after it drops of the memory
+      queue and between jobtracker restarts. With a zero value the job status
+      information is not persisted at all in DFS.
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.job.tracker.persist.jobstatus.dir</name>
+    <value>/etc/hadoop/conf/health_check</value>
+    <description>The directory where the job status information is persisted
+      in a file system to be available after it drops of the memory queue and
+      between jobtracker restarts.
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.jobtracker.retirejob.check</name>
+    <value>10000</value>
+  </property>
+
+  <property>
+    <name>mapred.jobtracker.retirejob.interval</name>
+    <value>21600000</value>
+  </property>
+
+  <property>
+    <name>mapred.job.tracker.history.completed.location</name>
+    <value>/mapred/history/done</value>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>mapred.task.maxvmem</name>
+    <value></value>
+    <final>true</final>
+    <description>No description</description>
+  </property>
+
+  <property>
+    <name>mapred.jobtracker.maxtasks.per.job</name>
+    <value>-1</value>
+    <final>true</final>
+    <description>The maximum number of tasks for a single job.
+      A value of -1 indicates that there is no maximum.  </description>
+  </property>
+
+  <property>
+    <name>mapreduce.fileoutputcommitter.marksuccessfuljobs</name>
+    <value>false</value>
+  </property>
+
+  <property>
+    <name>mapred.userlog.retain.hours</name>
+    <value>24</value>
+    <description>
+      The maximum time, in hours, for which the user-logs are to be retained after the job completion.
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.job.reuse.jvm.num.tasks</name>
+    <value>1</value>
+    <description>
+      How many tasks to run per jvm. If set to -1, there is no limit
+    </description>
+    <final>true</final>
+  </property>
+
+  <property>
+    <name>mapreduce.jobtracker.kerberos.principal</name>
+    <value></value>
+    <description>
       JT user name key.
- </description>
-</property>
+    </description>
+  </property>
 
-<property>
-  <name>mapreduce.tasktracker.kerberos.principal</name>
-   <value></value>
-  <description>
-       tt user name key. "_HOST" is replaced by the host name of the task tracker.
-   </description>
-</property>
+  <property>
+    <name>mapreduce.tasktracker.kerberos.principal</name>
+    <value></value>
+    <description>
+      tt user name key. "_HOST" is replaced by the host name of the task tracker.
+    </description>
+  </property>
 
 
   <property>
@@ -475,54 +480,54 @@
   </property>
 
 
- <property>
-   <name>mapreduce.jobtracker.keytab.file</name>
-   <value></value>
-   <description>
-       The keytab for the jobtracker principal.
-   </description>
+  <property>
+    <name>mapreduce.jobtracker.keytab.file</name>
+    <value></value>
+    <description>
+      The keytab for the jobtracker principal.
+    </description>
 
-</property>
+  </property>
 
- <property>
-   <name>mapreduce.tasktracker.keytab.file</name>
-   <value></value>
+  <property>
+    <name>mapreduce.tasktracker.keytab.file</name>
+    <value></value>
     <description>The filename of the keytab for the task tracker</description>
- </property>
+  </property>
 
- <property>
-   <name>mapred.task.tracker.http.address</name>
-   <value></value>
-   <description>Http address for task tracker.</description>
- </property>
+  <property>
+    <name>mapred.task.tracker.http.address</name>
+    <value></value>
+    <description>Http address for task tracker.</description>
+  </property>
 
- <property>
-   <name>mapreduce.jobtracker.staging.root.dir</name>
-   <value>/user</value>
- <description>The Path prefix for where the staging directories should be placed. The next level is always the user's
-   name. It is a path in the default file system.</description>
- </property>
+  <property>
+    <name>mapreduce.jobtracker.staging.root.dir</name>
+    <value>/user</value>
+    <description>The Path prefix for where the staging directories should be placed. The next level is always the user's
+      name. It is a path in the default file system.</description>
+  </property>
 
- <property>
-      <name>mapreduce.tasktracker.group</name>
-      <value>hadoop</value>
-      <description>The group that the task controller uses for accessing the task controller. The mapred user must be a member and users should *not* be members.</description>
+  <property>
+    <name>mapreduce.tasktracker.group</name>
+    <value>hadoop</value>
+    <description>The group that the task controller uses for accessing the task controller. The mapred user must be a member and users should *not* be members.</description>
 
- </property>
+  </property>
 
   <property>
     <name>mapreduce.jobtracker.split.metainfo.maxsize</name>
     <value>50000000</value>
     <final>true</final>
-     <description>If the size of the split metainfo file is larger than this, the JobTracker will fail the job during
-    initialize.
-   </description>
+    <description>If the size of the split metainfo file is larger than this, the JobTracker will fail the job during
+      initialize.
+    </description>
   </property>
   <property>
     <name>mapreduce.history.server.embedded</name>
     <value>false</value>
     <description>Should job history server be embedded within Job tracker
-process</description>
+      process</description>
     <final>true</final>
   </property>
 
@@ -537,38 +542,38 @@ process</description>
   <property>
     <name>mapreduce.jobhistory.kerberos.principal</name>
     <!-- cluster variant -->
-  <value></value>
+    <value></value>
     <description>Job history user name key. (must map to same user as JT
-user)</description>
+      user)</description>
   </property>
 
- <property>
-   <name>mapreduce.jobhistory.keytab.file</name>
+  <property>
+    <name>mapreduce.jobhistory.keytab.file</name>
     <!-- cluster variant -->
-   <value></value>
-   <description>The keytab for the job history server principal.</description>
- </property>
-
-<property>
-  <name>mapred.jobtracker.blacklist.fault-timeout-window</name>
-  <value>180</value>
-  <description>
-    3-hour sliding window (value is in minutes)
-  </description>
-</property>
-
-<property>
-  <name>mapred.jobtracker.blacklist.fault-bucket-width</name>
-  <value>15</value>
-  <description>
-    15-minute bucket size (value is in minutes)
-  </description>
-</property>
-
-<property>
-  <name>mapred.queue.names</name>
-  <value>default</value>
-  <description> Comma separated list of queues configured for this jobtracker.</description>
-</property>
+    <value></value>
+    <description>The keytab for the job history server principal.</description>
+  </property>
+
+  <property>
+    <name>mapred.jobtracker.blacklist.fault-timeout-window</name>
+    <value>180</value>
+    <description>
+      3-hour sliding window (value is in minutes)
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.jobtracker.blacklist.fault-bucket-width</name>
+    <value>15</value>
+    <description>
+      15-minute bucket size (value is in minutes)
+    </description>
+  </property>
+
+  <property>
+    <name>mapred.queue.names</name>
+    <value>default</value>
+    <description> Comma separated list of queues configured for this jobtracker.</description>
+  </property>
 
 </configuration>

+ 12 - 2
ambari-server/src/main/resources/stacks/HDP/1.3.3/services/HDFS/configuration/hdfs-site.xml

@@ -150,14 +150,24 @@
     </description>
   </property>
 
+  <property>
+    <name>ambari.dfs.datanode.port</name>
+    <value>50010</value>
+  </property>
+
   <property>
     <name>dfs.datanode.address</name>
-    <value></value>
+    <value>0.0.0.0:${ambari.dfs.datanode.port}</value>
+  </property>
+
+  <property>
+    <name>ambari.dfs.datanode.http.port</name>
+    <value>50075</value>
   </property>
 
   <property>
     <name>dfs.datanode.http.address</name>
-    <value></value>
+    <value>0.0.0.0:${ambari.dfs.datanode.http.port}</value>
   </property>
 
   <property>

+ 6 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.3/services/HIVE/configuration/hive-site.xml

@@ -18,6 +18,12 @@ limitations under the License.
 -->
 
 <configuration>
+  <property>
+    <name>ambari.hive.db.schema.name</name>
+    <value>hive</value>
+    <description>Database name used as the Hive Metastore</description>
+  </property>
+
   <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc</value>

+ 9 - 2
ambari-server/src/main/resources/stacks/HDP/1.3.3/services/MAPREDUCE/configuration/mapred-site.xml

@@ -269,11 +269,18 @@
     <value>INFO,TLA</value>
   </property>
 
+  <property>
+    <name>ambari.mapred.child.java.opts.memory</name>
+    <value>768</value>
+
+    <description>Java options Memory for the TaskTracker child processes</description>
+  </property>
+
   <property>
     <name>mapred.child.java.opts</name>
-    <value></value>
+    <value>-server -Xmx${ambari.mapred.child.java.opts.memory}m -Djava.net.preferIPv4Stack=true</value>
 
-    <description>No description</description>
+    <description>Java options for the TaskTracker child processes</description>
   </property>
 
   <property>

+ 12 - 2
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HDFS/configuration/hdfs-site.xml

@@ -180,14 +180,24 @@
     </description>
   </property>
 
+  <property>
+    <name>ambari.dfs.datanode.port</name>
+    <value>50010</value>
+  </property>
+
   <property>
     <name>dfs.datanode.address</name>
-    <value>0.0.0.0:50010</value>
+    <value>0.0.0.0:${ambari.dfs.datanode.port}</value>
+  </property>
+
+  <property>
+    <name>ambari.dfs.datanode.http.port</name>
+    <value>50075</value>
   </property>
 
   <property>
     <name>dfs.datanode.http.address</name>
-    <value>0.0.0.0:50075</value>
+    <value>0.0.0.0:${ambari.dfs.datanode.http.port}</value>
   </property>
 
   <property>

+ 7 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/configuration/hive-site.xml

@@ -18,6 +18,13 @@ limitations under the License.
 -->
 
 <configuration>
+
+  <property>
+    <name>ambari.hive.db.schema.name</name>
+    <value>hive</value>
+    <description>Database name used as the Hive Metastore</description>
+  </property>
+
   <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc</value>

+ 12 - 2
ambari-server/src/main/resources/stacks/HDPLocal/1.3.2/services/HDFS/configuration/hdfs-site.xml

@@ -150,14 +150,24 @@
     </description>
   </property>
 
+  <property>
+    <name>ambari.dfs.datanode.port</name>
+    <value>50010</value>
+  </property>
+
   <property>
     <name>dfs.datanode.address</name>
-    <value></value>
+    <value>0.0.0.0:${ambari.dfs.datanode.port}</value>
+  </property>
+
+  <property>
+    <name>ambari.dfs.datanode.http.port</name>
+    <value>50075</value>
   </property>
 
   <property>
     <name>dfs.datanode.http.address</name>
-    <value></value>
+    <value>0.0.0.0:${ambari.dfs.datanode.http.port}</value>
   </property>
 
   <property>

+ 6 - 0
ambari-server/src/main/resources/stacks/HDPLocal/1.3.2/services/HIVE/configuration/hive-site.xml

@@ -18,6 +18,12 @@ limitations under the License.
 -->
 
 <configuration>
+  <property>
+    <name>ambari.hive.db.schema.name</name>
+    <value>hive</value>
+    <description>Database name used as the Hive Metastore</description>
+  </property>
+
   <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc</value>

+ 10 - 5
ambari-server/src/main/resources/stacks/HDPLocal/1.3.2/services/MAPREDUCE/configuration/mapred-site.xml

@@ -91,11 +91,10 @@
     <name>mapred.job.tracker.http.address</name>
     <!-- cluster variant -->
     <value>localhost:50030</value>
-    <description>Http address for JobTracker</description>
+    <description>JobTracker host and http port address</description>
     <final>true</final>
   </property>
 
-
   <property>
     <!-- cluster specific -->
     <name>mapred.local.dir</name>
@@ -271,10 +270,16 @@
   </property>
 
   <property>
-    <name>mapred.child.java.opts</name>
-    <value></value>
+    <name>ambari.mapred.child.java.opts.memory</name>
+    <value>768</value>
 
-    <description>No description</description>
+    <description>Java options Memory for the TaskTracker child processes</description>
+  </property>
+
+  <property>
+    <name>mapred.child.java.opts</name>
+    <value>-server -Xmx${ambari.mapred.child.java.opts.memory}m -Djava.net.preferIPv4Stack=true</value>
+    <description>Java options for the TaskTracker child processes</description>
   </property>
 
   <property>

+ 12 - 2
ambari-server/src/main/resources/stacks/HDPLocal/1.3.3/services/HDFS/configuration/hdfs-site.xml

@@ -150,14 +150,24 @@
     </description>
   </property>
 
+  <property>
+    <name>ambari.dfs.datanode.port</name>
+    <value>50010</value>
+  </property>
+
   <property>
     <name>dfs.datanode.address</name>
-    <value></value>
+    <value>0.0.0.0:${ambari.dfs.datanode.port}</value>
+  </property>
+
+  <property>
+    <name>ambari.dfs.datanode.http.port</name>
+    <value>50075</value>
   </property>
 
   <property>
     <name>dfs.datanode.http.address</name>
-    <value></value>
+    <value>0.0.0.0:${ambari.dfs.datanode.http.port}</value>
   </property>
 
   <property>

+ 6 - 0
ambari-server/src/main/resources/stacks/HDPLocal/1.3.3/services/HIVE/configuration/hive-site.xml

@@ -18,6 +18,12 @@ limitations under the License.
 -->
 
 <configuration>
+  <property>
+    <name>ambari.hive.db.schema.name</name>
+    <value>hive</value>
+    <description>Database name used as the Hive Metastore</description>
+  </property>
+
   <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc</value>

+ 9 - 2
ambari-server/src/main/resources/stacks/HDPLocal/1.3.3/services/MAPREDUCE/configuration/mapred-site.xml

@@ -269,11 +269,18 @@
     <value>INFO,TLA</value>
   </property>
 
+  <property>
+    <name>ambari.mapred.child.java.opts.memory</name>
+    <value>768</value>
+
+    <description>Java options Memory for the TaskTracker child processes</description>
+  </property>
+
   <property>
     <name>mapred.child.java.opts</name>
-    <value></value>
+    <value>-server -Xmx${ambari.mapred.child.java.opts.memory}m -Djava.net.preferIPv4Stack=true</value>
 
-    <description>No description</description>
+    <description>Java options for the TaskTracker child processes</description>
   </property>
 
   <property>

+ 12 - 2
ambari-server/src/main/resources/stacks/HDPLocal/2.0.6/services/HDFS/configuration/hdfs-site.xml

@@ -180,14 +180,24 @@
     </description>
   </property>
 
+  <property>
+    <name>ambari.dfs.datanode.port</name>
+    <value>50010</value>
+  </property>
+
   <property>
     <name>dfs.datanode.address</name>
-    <value>0.0.0.0:50010</value>
+    <value>0.0.0.0:${ambari.dfs.datanode.port}</value>
+  </property>
+
+  <property>
+    <name>ambari.dfs.datanode.http.port</name>
+    <value>50075</value>
   </property>
 
   <property>
     <name>dfs.datanode.http.address</name>
-    <value>0.0.0.0:50075</value>
+    <value>0.0.0.0:${ambari.dfs.datanode.http.port}</value>
   </property>
 
   <property>

+ 7 - 0
ambari-server/src/main/resources/stacks/HDPLocal/2.0.6/services/HIVE/configuration/hive-site.xml

@@ -18,6 +18,13 @@ limitations under the License.
 -->
 
 <configuration>
+
+  <property>
+    <name>ambari.hive.db.schema.name</name>
+    <value>hive</value>
+    <description>Database name used as the Hive Metastore</description>
+  </property>
+
   <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc</value>

+ 0 - 6
ambari-web/app/controllers/main/admin/security/add/step4.js

@@ -418,12 +418,6 @@ App.MainAdminSecurityAddStep4Controller = Em.Controller.extend({
         case 'security_enabled':
           _property.value = 'true';
           break;
-        case 'dfs_datanode_address':
-          _property.value = '1019';
-          break;
-        case 'dfs_datanode_http_address':
-          _property.value = '1022';
-          break;
       }
     }, this);
   },

+ 4 - 4
ambari-web/app/controllers/main/admin/security/disable.js

@@ -387,11 +387,11 @@ App.MainAdminSecurityDisableController = Em.Controller.extend({
             var configName = _config.name;
             if (configName in _serviceConfigTags.configs) {
               switch (configName) {
-                case 'dfs.datanode.address':
-                  _serviceConfigTags.configs[configName] = '0.0.0.0:50010';
+                case 'ambari.dfs.datanode.port':
+                  _serviceConfigTags.configs[configName] = '50010';
                   break;
-                case 'dfs.datanode.http.address':
-                  _serviceConfigTags.configs[configName] = '0.0.0.0:50075';
+                case 'ambari.dfs.datanode.http.port':
+                  _serviceConfigTags.configs[configName] = '50075';
                   break;
                 case 'mapred.task.tracker.task-controller':
                   _serviceConfigTags.configs[configName] = 'org.apache.hadoop.mapred.DefaultTaskController';

+ 1 - 1
ambari-web/app/controllers/main/service/info/configs.js

@@ -1378,7 +1378,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     var globalSiteProperties = {};
     this.get('globalConfigs').forEach(function (_globalSiteObj) {
       // do not pass any globalConfigs whose name ends with _host or _hosts
-      if (!/_hosts?$/.test(_globalSiteObj.name)) {
+      if (_globalSiteObj.isRequiredByAgent === true) {
         // append "m" to JVM memory options except for hadoop_heapsize
         if (/_heapsize|_newsize|_maxnewsize$/.test(_globalSiteObj.name) && !heapsizeException.contains(_globalSiteObj.name)) {
           _globalSiteObj.value += "m";

+ 1 - 0
ambari-web/app/controllers/wizard.js

@@ -736,6 +736,7 @@ App.WizardController = Em.Controller.extend({
           domain: _configProperties.get('domain'),
           filename: _configProperties.get('filename'),
           displayType: _configProperties.get('displayType'),
+          isRequiredByAgent: _configProperties.get('isRequiredByAgent'),
           overrides: overridesArray
         };
         serviceConfigProperties.push(configProperty);

+ 4 - 11
ambari-web/app/controllers/wizard/step8_controller.js

@@ -1404,18 +1404,16 @@ App.WizardStep8Controller = Em.Controller.extend({
     globalSiteObj.forEach(function (_globalSiteObj) {
       var heapsizeException =  ['hadoop_heapsize','yarn_heapsize','nodemanager_heapsize','resourcemanager_heapsize'];
       // do not pass any globals whose name ends with _host or _hosts
-      if (!/_hosts?$/.test(_globalSiteObj.name)) {
+      if (_globalSiteObj.isRequiredByAgent === true) {
         // append "m" to JVM memory options except for hadoop_heapsize
         if (/_heapsize|_newsize|_maxnewsize$/.test(_globalSiteObj.name) && !heapsizeException.contains(_globalSiteObj.name)) {
           globalSiteProperties[_globalSiteObj.name] = _globalSiteObj.value + "m";
         } else {
           globalSiteProperties[_globalSiteObj.name] = App.config.escapeXMLCharacters(_globalSiteObj.value);
         }
-        console.log("STEP8: name of the global property is: " + _globalSiteObj.name);
-        console.log("STEP8: value of the global property is: " + _globalSiteObj.value);
-      }
-      if (_globalSiteObj.name == 'java64_home') {
-        globalSiteProperties['java64_home'] = this.get('content.installOptions.javaHome');
+        if (_globalSiteObj.name == 'java64_home') {
+          globalSiteProperties['java64_home'] = this.get('content.installOptions.javaHome');
+        }
       }
       this._recordHostOverrideFromObj(_globalSiteObj, 'global', 'version1', this);
     }, this);
@@ -1572,16 +1570,11 @@ App.WizardStep8Controller = Em.Controller.extend({
     var globals = this.get('content.serviceConfigProperties').filterProperty('id', 'puppet var');
     if (globals.someProperty('name', 'hive_database')) {
       var hiveDb = globals.findProperty('name', 'hive_database');
-      var hiveHost = globals.findProperty('name', 'hive_hostname').value;
-      var hiveDbName = globals.findProperty('name', 'hive_database_name').value;
       if (hiveDb.value === 'New MySQL Database') {
-        // hiveProperties["javax.jdo.option.ConnectionURL"] = "jdbc:mysql://"+ hiveHost + "/" + hiveDbName + "?createDatabaseIfNotExist=true";
         hiveProperties["javax.jdo.option.ConnectionDriverName"] = "com.mysql.jdbc.Driver";
       } else if (hiveDb.value === 'Existing MySQL Database'){
-        // hiveProperties["javax.jdo.option.ConnectionURL"] = "jdbc:mysql://"+ hiveHost + "/" + hiveDbName + "?createDatabaseIfNotExist=true";
         hiveProperties["javax.jdo.option.ConnectionDriverName"] = "com.mysql.jdbc.Driver";
       } else { //existing oracle database
-        // hiveProperties["javax.jdo.option.ConnectionURL"] = "jdbc:oracle:thin:@//"+ hiveHost + ":1521/" + hiveDbName;
         hiveProperties["javax.jdo.option.ConnectionDriverName"] = "oracle.jdbc.driver.OracleDriver";
       }
     }

+ 0 - 15
ambari-web/app/data/HDP2/config_mapping.js

@@ -67,21 +67,6 @@ var configs = [
     "filename": "core-site.xml",
     "isOverridable": true
   },
-/**********************************************hdfs-site***************************************/
-  {
-    "name": "dfs.datanode.address",
-    "templateName": ["dfs_datanode_address"],
-    "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
-    "filename": "hdfs-site.xml"
-  },
-  {
-    "name": "dfs.datanode.http.address",
-    "templateName": ["dfs_datanode_http_address"],
-    "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
-    "filename": "hdfs-site.xml"
-  },
 
 /**********************************************hbase-site***************************************/
   {

+ 49 - 170
ambari-web/app/data/HDP2/global_properties.js

@@ -47,6 +47,10 @@
  *     If this is unspecified, true is assumed.
  *     E.g., true, false
  *
+ *     isRequiredByAgent:
+ *     Whether the config property is required by agent or not.
+ *     If value is true then it will be persisted in global configuration
+ *
  *   displayType:
  *     How the config property is to be rendered for user input.
  *     If this is left unspecified, "string" is assumed
@@ -86,6 +90,7 @@ module.exports =
       "displayType": "masterHosts",
       "isOverridable": false,
       "isVisible": true,
+      "isRequiredByAgent": false,
       "domain": "global",
       "serviceName": "HDFS",
       "category": "NameNode",
@@ -101,6 +106,7 @@ module.exports =
       "unit": "MB",
       "isOverridable": false,
       "isVisible": true,
+      "isRequiredByAgent": true,
       "domain": "global",
       "serviceName": "HDFS",
       "category": "NameNode",
@@ -116,6 +122,7 @@ module.exports =
       "unit": "MB",
       "isOverridable": false,
       "isVisible": true,
+      "isRequiredByAgent": true,
       "domain": "global",
       "serviceName": "HDFS",
       "category": "NameNode",
@@ -130,6 +137,7 @@ module.exports =
       "description": "The host that has been assigned to run SecondaryNameNode",
       "displayType": "masterHost",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HDFS",
@@ -147,6 +155,7 @@ module.exports =
       "isRequired": false,
       "isOverridable": false,
       "isVisible": true,
+      "isRequiredByAgent": false,
       "domain": "datanode-global",
       "serviceName": "HDFS",
       "category": "DataNode",
@@ -161,6 +170,7 @@ module.exports =
       "displayType": "int",
       "unit": "MB",
       "isVisible": true,
+      "isRequiredByAgent": true,
       "domain": "datanode-global",
       "serviceName": "HDFS",
       "category": "DataNode",
@@ -174,6 +184,7 @@ module.exports =
       "defaultValue": "1024",
       "displayType": "int",
       "unit": "MB",
+      "isRequiredByAgent": true,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HDFS",
@@ -188,6 +199,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
+      "isRequiredByAgent": true,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HDFS",
@@ -202,6 +214,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
+      "isRequiredByAgent": true,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HDFS",
@@ -216,6 +229,7 @@ module.exports =
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
+      "isRequiredByAgent": true,
       "isVisible": false,
       "domain": "global",
       "serviceName": "HDFS",
@@ -230,25 +244,12 @@ module.exports =
       "isRequired": false,
       "displayType": "checkbox",
       "isOverridable": false,
+      "isRequiredByAgent": true,
       "isVisible": false,
       "domain": "global",
       "serviceName": "HDFS",
       "category": "Advanced"
     },
-    {
-      "id": "puppet var",
-      "name": "namenode_formatted_mark_dir",
-      "displayName": "Hadoop formatted mark directory",
-      "description": "",
-      "defaultValue": "/var/run/hadoop/hdfs/namenode/formatted/",
-      "isRequired": false,
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "HDFS",
-      "category": "NameNode"
-    },
     {
       "id": "puppet var",
       "name": "hcat_conf_dir",
@@ -258,24 +259,12 @@ module.exports =
       "isRequired": false,
       "isReconfigurable": false,
       "displayType": "directory",
+      "isRequiredByAgent": true,
       "isVisible": false,
       "domain": "global",
       "serviceName": "HDFS",
       "category": "Advanced"
     },
-    {
-      "id": "puppet var",
-      "name": "hdfs_enable_shortcircuit_read",
-      "displayName": "HDFS Short-circuit read",
-      "description": "",
-      "defaultValue": true,
-      "isRequired": false,
-      "displayType": "checkbox",
-      "isVisible": true,
-      "domain": "global",
-      "serviceName": "HDFS",
-      "category": "Advanced"
-    },
     {
       "id": "puppet var",
       "name": "lzo_enabled",
@@ -284,6 +273,7 @@ module.exports =
       "defaultValue": true,
       "displayType": "checkbox",
       "isOverridable": false,
+      "isRequiredByAgent": true,
       "isVisible": false,
       "domain": "global",
       "serviceName": "HDFS"
@@ -298,6 +288,7 @@ module.exports =
       "defaultValue": "",
       "isOverridable": false,
       "displayType": "masterHost",
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "MAPREDUCE2",
@@ -311,6 +302,7 @@ module.exports =
       "description": "",
       "defaultValue": "/var/log/hadoop-mapreduce",
       "displayType": "directory",
+      "isRequiredByAgent": true,
       "isVisible": true,
       "isReconfigurable": false,
       "domain": "global",
@@ -324,6 +316,7 @@ module.exports =
       "description": "",
       "defaultValue": "/var/run/hadoop-mapreduce",
       "displayType": "directory",
+      "isRequiredByAgent": true,
       "isVisible": true,
       "isReconfigurable": false,
       "domain": "global",
@@ -341,6 +334,7 @@ module.exports =
       "isOverridable": false,
       "displayType": "int",
       "unit": "MB",
+      "isRequiredByAgent": true,
       "isVisible": true,
       "domain": "global",
       "serviceName": "YARN",
@@ -355,6 +349,7 @@ module.exports =
       "defaultValue": "",
       "isOverridable": false,
       "displayType": "masterHost",
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "YARN",
@@ -370,6 +365,7 @@ module.exports =
       "isOverridable": false,
       "displayType": "int",
       "unit": "MB",
+      "isRequiredByAgent": true,
       "isVisible": true,
       "domain": "global",
       "serviceName": "YARN",
@@ -384,6 +380,7 @@ module.exports =
       "defaultValue": "",
       "isOverridable": false,
       "displayType": "slaveHosts",
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "YARN",
@@ -399,6 +396,7 @@ module.exports =
       "isOverridable": false,
       "displayType": "int",
       "unit": "MB",
+      "isRequiredByAgent": true,
       "isVisible": true,
       "domain": "global",
       "serviceName": "YARN",
@@ -413,6 +411,7 @@ module.exports =
       "defaultValue": "/var/log/hadoop-yarn",
       "displayType": "directory",
       "isReconfigurable": false,
+      "isRequiredByAgent": true,
       "isVisible": true,
       "domain": "global",
       "serviceName": "YARN",
@@ -425,6 +424,7 @@ module.exports =
       "description": "",
       "defaultValue": "/var/run/hadoop-yarn",
       "displayType": "directory",
+      "isRequiredByAgent": true,
       "isVisible": true,
       "isReconfigurable": false,
       "domain": "global",
@@ -441,6 +441,7 @@ module.exports =
       "description": "The host that has been assigned to run HBase Master",
       "displayType": "masterHosts",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HBASE",
@@ -456,6 +457,7 @@ module.exports =
       "displayType": "int",
       "unit": "MB",
       "isOverridable": false,
+      "isRequiredByAgent": true,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HBASE",
@@ -471,6 +473,7 @@ module.exports =
       "description": "The hosts that have been assigned to run RegionServer",
       "displayType": "slaveHosts",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "isRequired": false,
       "domain": "regionserver-global",
@@ -486,6 +489,7 @@ module.exports =
       "defaultValue": "1024",
       "displayType": "int",
       "unit": "MB",
+      "isRequiredByAgent": true,
       "isVisible": true,
       "domain": "regionserver-global",
       "serviceName": "HBASE",
@@ -501,6 +505,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
+      "isRequiredByAgent": true,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HBASE",
@@ -515,6 +520,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
+      "isRequiredByAgent": true,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HBASE",
@@ -543,6 +549,7 @@ module.exports =
       "description": "The host that has been assigned to run Hive Metastore",
       "displayType": "masterHost",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "serviceName": "HIVE",
       "category": "Hive Metastore",
@@ -655,6 +662,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "host",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": false,
       "isObserved": true,
       "domain": "global",
@@ -671,6 +679,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "host",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": false,
       "isObserved": true,
       "domain": "global",
@@ -687,6 +696,7 @@ module.exports =
       "description": "Host on which the database will be created by Ambari",
       "isReconfigurable": false,
       "displayType": "masterHost",
+      "isRequiredByAgent": false,
       "isOverridable": false,
       "isVisible": false,
       "domain": "global",
@@ -694,22 +704,6 @@ module.exports =
       "category": "Hive Metastore",
       "index": 3
     },
-    {
-      "id": "puppet var",
-      "name": "hive_database_name",
-      "displayName": "Database Name",
-      "description": "Database name used as the Hive Metastore",
-      "defaultValue": "hive",
-      "isReconfigurable": true,
-      "displayType": "host",
-      "isOverridable": false,
-      "isVisible": true,
-      "isObserved": true,
-      "domain": "global",
-      "serviceName": "HIVE",
-      "category": "Hive Metastore",
-      "index": 4
-    },
     {
       "id": "puppet var",
       "name": "hive_metastore_port",
@@ -719,6 +713,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "int",
       "isOverridable": false,
+      "isRequiredByAgent": false, // Make this to true when we expose the property on ui by making "isVisible": true
       "isVisible": false,
       "domain": "global",
       "serviceName": "HIVE",
@@ -733,19 +728,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "directory",
       "isVisible": false,
-      "domain": "global",
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_conf_dir",
-      "displayName": "Hive conf directory",
-      "description": "",
-      "defaultValue": "/etc/hive/conf",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
+      "isRequiredByAgent": false, // Make this to true when we expose the property on ui by making "isVisible": true
       "domain": "global",
       "serviceName": "HIVE",
       "category": "Advanced"
@@ -759,6 +742,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "directory",
       "isVisible": false,
+      "isRequiredByAgent": false, // Make this to true when we expose the property on ui by making "isVisible": true
       "domain": "global",
       "serviceName": "HIVE",
       "category": "Advanced"
@@ -791,19 +775,6 @@ module.exports =
       "serviceName": "HIVE",
       "category": "Advanced"
     },
-    {
-      "id": "puppet var",
-      "name": "mysql_connector_url",
-      "displayName": "MySQL connector url",
-      "description": "",
-      "defaultValue": "${download_url}/mysql-connector-java-5.1.18.zip",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
     {
       "id": "puppet var",
       "name": "hive_aux_jars_path",
@@ -828,6 +799,7 @@ module.exports =
       "displayType": "masterHost",
       "isOverridable": false,
       "isVisible": true,
+      "isRequiredByAgent": false,
       "domain": "global",
       "serviceName": "WEBHCAT",
       "category": "WebHCat Server"
@@ -871,6 +843,7 @@ module.exports =
       "displayType": "masterHost",
       "isOverridable": false,
       "isVisible": true,
+      "isRequiredByAgent": false,
       "domain": "global",
       "serviceName": "OOZIE",
       "category": "Oozie Server",
@@ -1055,6 +1028,7 @@ module.exports =
       "isOverridable": false,
       "displayType": "masterHost",
       "isVisible": false,
+      "isRequiredByAgent": false,
       //"domain": "global",
       "serviceName": "OOZIE",
       "category": "Oozie Server"
@@ -1139,6 +1113,7 @@ module.exports =
       "description": "The host that has been assigned to run ZooKeeper Server",
       "displayType": "masterHosts",
       "isVisible": true,
+      "isRequiredByAgent": false,
       "isOverridable": false,
       "isRequired": false,
       "serviceName": "ZOOKEEPER",
@@ -1247,19 +1222,6 @@ module.exports =
       "category": "Advanced",
       "index": 1
     },
-    {
-      "id": "puppet var",
-      "name": "zk_pid_file",
-      "displayName": "ZooKeeper PID File",
-      "description": "",
-      "defaultValue": "/var/run/zookeeper/zookeeper_server.pid",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "ZOOKEEPER",
-      "category": "Advanced"
-    },
   /**********************************************HUE***************************************/
     {
       "id": "puppet var",
@@ -1270,6 +1232,7 @@ module.exports =
       "description": "The host that has been assigned to run Hue Server",
       "displayType": "masterHost",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HUE",
@@ -1284,6 +1247,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HUE",
@@ -1298,6 +1262,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HUE",
@@ -1313,6 +1278,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "directory",
       "isVisible": false,
+      "isRequiredByAgent": false,
       "domain": "global",
       "serviceName": "GANGLIA",
       "category": "Advanced"
@@ -1327,6 +1293,7 @@ module.exports =
       "isRequired": false,
       "displayType": "directory",
       "isVisible": false,
+      "isRequiredByAgent": false,
       "domain": "global",
       "serviceName": "MISC",
       "category": "General",
@@ -1348,64 +1315,6 @@ module.exports =
       "category": "Users and Groups",
       "belongsToService":["HIVE","WEBHCAT","OOZIE"]
     },
-    {
-      "id": "puppet var",
-      "name": "dfs_datanode_address",
-      "displayName": "dfs_datanode_address",
-      "description": "",
-      "defaultValue": "50010",
-      "isReconfigurable": true,
-      "displayType": "int",
-      "isVisible": true,
-      "filename": "hdfs-site.xml",
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "Advanced",
-      "belongsToService":[]
-    },
-    {
-      "id": "puppet var",
-      "name": "dfs_datanode_http_address",
-      "displayName": "dfs_datanode_http_address",
-      "description": "",
-      "defaultValue": "50075",
-      "isReconfigurable": true,
-      "displayType": "int",
-      "isVisible": true,
-      "filename": "hdfs-site.xml",
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "Advanced",
-      "belongsToService":[]
-    },
-    {
-      "id": "puppet var",
-      "name": "gpl_artifacts_download_url",
-      "displayName": "gpl artifact download url",
-      "description": "",
-      "defaultValue": "",
-      "isReconfigurable": false,
-      "displayType": "advanced",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General",
-      "belongsToService":[]
-    },
-    {
-      "id": "puppet var",
-      "name": "apache_artifacts_download_url",
-      "displayName": "apache artifact download url",
-      "description": "",
-      "defaultValue": "",
-      "isReconfigurable": false,
-      "displayType": "advanced",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General",
-      "belongsToService":[]
-    },
     {
       "id": "puppet var",
       "name": "ganglia_runtime_dir",
@@ -1434,36 +1343,6 @@ module.exports =
       "serviceName": "MISC",
       "belongsToService":[]
     },
-    {
-      "id": "puppet var",
-      "name": "run_dir",
-      "displayName": "Hadoop run directory",
-      "description": "",
-      "defaultValue": "/var/run/hadoop",
-      "isRequired": false,
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "Advanced",
-      "belongsToService":[]
-    },
-    {
-      "id": "puppet var",
-      "name": "hadoop_conf_dir",
-      "displayName": "Hadoop conf directory",
-      "description": "",
-      "defaultValue": "/etc/hadoop/conf",
-      "isRequired": false,
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "Advanced",
-      "belongsToService":[]
-    },
     {
       "id": "puppet var",
       "name": "hdfs_user",

+ 4 - 4
ambari-web/app/data/HDP2/secure_mapping.js

@@ -146,18 +146,18 @@ module.exports = [
     "serviceName": "HDFS"
   },
   {
-    "name": "dfs.datanode.address",
+    "name": "ambari.dfs.datanode.port",
     "templateName": ["dfs_datanode_address"],
     "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
+    "value": "<templateName[0]>",
     "filename": "hdfs-site.xml",
     "serviceName": "HDFS"
   },
   {
-    "name": "dfs.datanode.http.address",
+    "name": "ambari.dfs.datanode.http.port",
     "templateName": ["dfs_datanode_http_address"],
     "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
+    "value": "<templateName[0]>",
     "filename": "hdfs-site.xml",
     "serviceName": "HDFS"
   },

+ 14 - 0
ambari-web/app/data/HDP2/site_properties.js

@@ -485,6 +485,20 @@ module.exports =
       "serviceName": "HIVE",
       "index": 7
     },
+    {
+      "id": "site property",
+      "name": "ambari.hive.db.schema.name",
+      "displayName": "Database Name",
+      "description": "Database name used as the Hive Metastore",
+      "defaultValue": "",
+      "isReconfigurable": true,
+      "displayType": "host",
+      "isOverridable": false,
+      "isObserved": true,
+      "serviceName": "HIVE",
+      "category": "Hive Metastore",
+      "index": 4
+    },
 
   /**********************************************hbase-site***************************************/
     {

+ 0 - 23
ambari-web/app/data/config_mapping.js

@@ -66,29 +66,6 @@ var configs = [
     "filename": "core-site.xml",
     "isOverridable" : true
   },
-  {
-    "name": "dfs.datanode.address",
-    "templateName": ["dfs_datanode_address"],
-    "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
-    "filename": "hdfs-site.xml"
-  },
-  {
-    "name": "dfs.datanode.http.address",
-    "templateName": ["dfs_datanode_http_address"],
-    "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
-    "filename": "hdfs-site.xml"
-  },
-
-  /******************************************MAPREDUCE***************************************/
-  {
-    "name": "mapred.child.java.opts",
-    "templateName": ["mapred_child_java_opts_sz"],
-    "foreignKey": null,
-    "value": "-server -Xmx<templateName[0]>m -Djava.net.preferIPv4Stack=true",
-    "filename": "mapred-site.xml"
-  },
 
 /**********************************************hbase-site***************************************/
   {

+ 22 - 504
ambari-web/app/data/global_properties.js

@@ -85,6 +85,7 @@ module.exports =
       "description": "The host that has been assigned to run NameNode",
       "displayType": "masterHost",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HDFS",
@@ -129,6 +130,7 @@ module.exports =
       "defaultValue": "",
       "description": "The host that has been assigned to run SecondaryNameNode",
       "displayType": "masterHost",
+      "isRequiredByAgent": false,
       "isOverridable": false,
       "isVisible": true,
       "domain": "global",
@@ -145,6 +147,7 @@ module.exports =
       "description": "The hosts that have been assigned to run DataNode",
       "displayType": "slaveHosts",
       "isRequired": false,
+      "isRequiredByAgent": false,
       "isOverridable": false,
       "isVisible": true,
       "domain": "datanode-global",
@@ -262,20 +265,7 @@ module.exports =
       "serviceName": "HDFS",
       "category": "NameNode"
     },
-    {
-      "id": "puppet var",
-      "name": "hcat_conf_dir",
-      "displayName": "HCat conf directory",
-      "description": "",
-      "defaultValue": "",
-      "isRequired": false,
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "HDFS",
-      "category": "Advanced"
-    },
+
     /**********************************************HCFS***************************************/    
     {
       "id": "puppet var",
@@ -371,6 +361,7 @@ module.exports =
       "description": "The host that has been assigned to run JobTracker",
       "displayType": "masterHost",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "MAPREDUCE",
@@ -433,25 +424,12 @@ module.exports =
       "isOverridable": false,
       "isVisible": true,
       "isRequired": false,
+      "isRequiredByAgent": false,
       "domain": "tasktracker-global",
       "serviceName": "MAPREDUCE",
       "category": "TaskTracker",
       "index": 0
     },
-    {
-      "id": "puppet var",
-      "name": "mapred_child_java_opts_sz",
-      "displayName": "Java options for MapReduce tasks",
-      "description": "Java options for the TaskTracker child processes.",
-      "defaultValue": "768",
-      "displayType": "int",
-      "unit": "MB",
-      "isVisible": true,
-      "domain": "tasktracker-global",
-      "serviceName": "MAPREDUCE",
-      "category": "TaskTracker",
-      "index": 4
-    },
     {
       "id": "puppet var",
       "name": "lzo_enabled",
@@ -503,6 +481,7 @@ module.exports =
       "description": "The host that has been assigned to run HBase Master",
       "displayType": "masterHosts",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HBASE",
@@ -533,6 +512,7 @@ module.exports =
       "description": "The hosts that have been assigned to run RegionServer",
       "displayType": "slaveHosts",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "isRequired": false,
       "domain": "regionserver-global",
@@ -604,6 +584,7 @@ module.exports =
       "defaultValue": "",
       "description": "The host that has been assigned to run Hive Metastore",
       "displayType": "masterHost",
+      "isRequiredByAgent": false,
       "isOverridable": false,
       "isVisible": true,
       "serviceName": "HIVE",
@@ -716,6 +697,7 @@ module.exports =
       "defaultValue": "",
       "isReconfigurable": false,
       "displayType": "host",
+      "isRequiredByAgent": false,
       "isOverridable": false,
       "isVisible": false,
       "isObserved": true,
@@ -733,6 +715,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "host",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": false,
       "isObserved": true,
       "domain": "global",
@@ -749,6 +732,7 @@ module.exports =
       "description": "The host where Hive Metastore database is located",
       "isReconfigurable": false,
       "displayType": "masterHost",
+      "isRequiredByAgent": false,
       "isOverridable": false,
       "isVisible": false,
       "domain": "global",
@@ -756,22 +740,6 @@ module.exports =
       "category": "Hive Metastore",
       "index": 3
     },
-    {
-      "id": "puppet var",
-      "name": "hive_database_name",
-      "displayName": "Database Name",
-      "description": "Database name used as the Hive Metastore",
-      "defaultValue": "hive",
-      "isReconfigurable": true,
-      "displayType": "host",
-      "isOverridable": false,
-      "isVisible": true,
-      "isObserved": true,
-      "domain": "global",
-      "serviceName": "HIVE",
-      "category": "Hive Metastore",
-      "index": 4
-    },
     {
       "id": "puppet var",
       "name": "hive_metastore_port",
@@ -786,45 +754,6 @@ module.exports =
       "serviceName": "HIVE",
       "category": "Advanced"
     },
-    {
-      "id": "puppet var",
-      "name": "hive_lib",
-      "displayName": "Hive library",
-      "description": "",
-      "defaultValue": "/usr/lib/hive/lib/",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_conf_dir",
-      "displayName": "Hive conf directory",
-      "description": "",
-      "defaultValue": "/etc/hive/conf",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
-    {
-      "id": "puppet var",
-      "name": "hive_dbroot",
-      "displayName": "Hive db directory",
-      "description": "",
-      "defaultValue": "/usr/lib/hive/lib",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },
     {
       "id": "puppet var",
       "name": "hive_log_dir",
@@ -889,6 +818,7 @@ module.exports =
       "description": "The host that has been assigned to run WebHCat Server",
       "displayType": "masterHost",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "WEBHCAT",
@@ -932,6 +862,7 @@ module.exports =
       "description": "The host that has been assigned to run Oozie Server",
       "displayType": "masterHost",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "OOZIE",
@@ -956,22 +887,6 @@ module.exports =
       "category": "Oozie Server",
       "index": 1
     },
-    // for new MySQL
-    /*{
-      "id": "puppet var",
-      "name": "oozie_ambari_database",
-      "displayName": "Database Type",
-      "value": "",
-      "defaultValue": "MySQL",
-      "description": "MySQL will be installed by Ambari",
-      "displayType": "masterHost",
-      "isVisible": false,
-      "isOverridable": false,
-      // "domain": "global",
-      "serviceName": "OOZIE",
-      "category": "Oozie Server",
-      "index": 1
-    },*/
     // for current derby
     {
       "id": "puppet var",
@@ -1068,6 +983,7 @@ module.exports =
           "isReconfigurable": false,
           "isOverridable": false,
           "displayType": "host",
+          "isRequiredByAgent": false,
           "isVisible": false,
           "isObserved": true,
           "domain": "global",
@@ -1083,6 +999,7 @@ module.exports =
           "defaultValue": "",
           "isReconfigurable": false,
           "isOverridable": false,
+          "isRequiredByAgent": false,
           "displayType": "host",
           "isVisible": false,
           "isObserved": true,
@@ -1100,6 +1017,7 @@ module.exports =
           "description": "Host on which the database will be created by Ambari",
           "isReconfigurable": false,
           "isOverridable": false,
+          "isRequiredByAgent": false,
           "displayType": "masterHost",
           "isVisible": false,
           "domain": "global",
@@ -1153,80 +1071,6 @@ module.exports =
       "serviceName": "OOZIE",
       "category": "Advanced"
     },
-    /*  {
-     "id": "puppet var",
-     "name": "oozie_database",
-     "displayName": "Oozie Database",
-     "value": "",
-     "defaultValue": "New PostgreSQL Database",
-     "options": [
-     {
-     displayName: 'New PostgreSQL Database',
-     foreignKeys: ['oozie_ambari_database', 'oozie_ambari_host']
-     },
-     {
-     displayName: 'Existing Database',
-     foreignKeys: ['oozie_existing_database', 'oozie_existing_host']
-     }
-     ],
-     "description": "PostgreSQL will be installed by ambari. Any other database will have to be installed by the user.",
-     "displayType": "radio button",
-     "radioName": "oozie-database",
-     "isVisible": true,
-     "serviceName": "OOZIE",
-     "category": "Oozie Server"
-     },
-     {
-     "id": "puppet var",
-     "name": "oozie_existing_database",
-     "displayName": "Oozie Database",
-     "value": "",
-     "defaultValue": "MySQL",
-     "description": "Select the database, if you already have existing one for Oozie.",
-     "displayType": "combobox",
-     "isVisible": false,
-     "options": ['MySQL', 'PostgreSQL'],
-     "serviceName": "OOZIE",
-     "category": "Oozie Server"
-     },
-     {
-     "id": "puppet var",
-     "name": "oozie_existing_host",
-     "displayName": "Database Host",
-     "description": "Select the host on which the existing database is hosted.",
-     "defaultValue": "",
-     "isReconfigurable": false,
-     "displayType": "host",
-     "isVisible": false,
-     "serviceName": "OOZIE",
-     "category": "Oozie Server"
-     },
-     {
-     "id": "puppet var",
-     "name": "oozie_ambari_database",
-     "displayName": "Oozie Database",
-     "value": "",
-     "defaultValue": "PostgreSQL",
-     "description": "PostgreSQL will be installed by ambari.",
-     "displayType": "masterHost",
-     "isVisible": true,
-     "serviceName": "OOZIE",
-     "category": "Oozie Server"
-     },
-     {
-     "id": "puppet var",
-     "name": "oozie_ambari_host",
-     "value": "",
-     "defaultValue": "",
-     "displayName": "PostgreSQL host",
-     "description": "Host  on which the PostgreSQL database will be created by ambari. ",
-     "isReconfigurable": false,
-     "displayType": "masterHost",
-     "isVisible": true,
-     "serviceName": "OOZIE",
-     "category": "Oozie Server"
-     },
-     */
   /**********************************************NAGIOS***************************************/
     {
       "id": "puppet var",
@@ -1278,6 +1122,7 @@ module.exports =
       "defaultValue": "",
       "description": "The host that has been assigned to run ZooKeeper Server",
       "displayType": "masterHosts",
+      "isRequiredByAgent": false,
       "isVisible": true,
       "isOverridable": false,
       "isRequired": false,
@@ -1387,19 +1232,6 @@ module.exports =
       "category": "Advanced",
       "index": 1
     },
-    {
-      "id": "puppet var",
-      "name": "zk_pid_file",
-      "displayName": "ZooKeeper PID File",
-      "description": "",
-      "defaultValue": "/var/run/zookeeper/zookeeper_server.pid",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "ZOOKEEPER",
-      "category": "Advanced"
-    },
   /**********************************************HUE***************************************/
     {
       "id": "puppet var",
@@ -1409,6 +1241,7 @@ module.exports =
       "defaultValue": "",
       "description": "The host that has been assigned to run Hue Server",
       "displayType": "masterHost",
+      "isRequiredByAgent": false,
       "isOverridable": false,
       "isVisible": true,
       "domain": "global",
@@ -1424,6 +1257,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HUE",
@@ -1438,6 +1272,7 @@ module.exports =
       "isReconfigurable": false,
       "displayType": "directory",
       "isOverridable": false,
+      "isRequiredByAgent": false,
       "isVisible": true,
       "domain": "global",
       "serviceName": "HUE",
@@ -1457,21 +1292,7 @@ module.exports =
       "serviceName": "GANGLIA",
       "category": "Advanced"
     },
-  /**********************************************MISC***************************************/
-    {
-      "id": "puppet var",
-      "name": "hbase_conf_dir",
-      "displayName": "HBase conf dir",
-      "description": "",
-      "defaultValue": "/etc/hbase",
-      "isRequired": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General",
-      "belongsToService":[]
-    },
+  /**********************************************MISC******************************************/
     {
       "id": "puppet var",
       "name": "proxyuser_group",
@@ -1488,64 +1309,6 @@ module.exports =
       "category": "Users and Groups",
       "belongsToService":["HIVE","WEBHCAT","OOZIE"]
     },
-    {
-      "id": "puppet var",
-      "name": "dfs_datanode_address",
-      "displayName": "dfs_datanode_address",
-      "description": "",
-      "defaultValue": "50010",
-      "isReconfigurable": true,
-      "displayType": "int",
-      "isVisible": true,
-      "filename": "hdfs-site.xml",
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "Advanced",
-      "belongsToService":[]
-    },
-    {
-      "id": "puppet var",
-      "name": "dfs_datanode_http_address",
-      "displayName": "dfs_datanode_http_address",
-      "description": "",
-      "defaultValue": "50075",
-      "isReconfigurable": true,
-      "displayType": "int",
-      "isVisible": true,
-      "filename": "hdfs-site.xml",
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "Advanced",
-      "belongsToService":[]
-    },
-    {
-      "id": "puppet var",
-      "name": "gpl_artifacts_download_url",
-      "displayName": "gpl artifact download url",
-      "description": "",
-      "defaultValue": "",
-      "isReconfigurable": false,
-      "displayType": "advanced",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General",
-      "belongsToService":[]
-    },
-    {
-      "id": "puppet var",
-      "name": "apache_artifacts_download_url",
-      "displayName": "apache artifact download url",
-      "description": "",
-      "defaultValue": "",
-      "isReconfigurable": false,
-      "displayType": "advanced",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General",
-      "belongsToService":[]
-    },
     {
       "id": "puppet var",
       "name": "ganglia_runtime_dir",
@@ -1560,48 +1323,6 @@ module.exports =
       "category": "General",
       "belongsToService":[]
     },
-    /*
-    {
-      "id": "puppet var",
-      "name": "ganglia_shell_cmds_dir",
-      "displayName": "ganglia_shell_cmds_dir",
-      "description": "",
-      "defaultValue": "/usr/libexec/hdp/ganglia",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General"
-    },
-    {
-      "id": "puppet var",
-      "name": "webserver_group",
-      "displayName": "ganglia_shell_cmds_dir",
-      "description": "",
-      "defaultValue": "apache",
-      "isReconfigurable": false,
-      "displayType": "advanced",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General"
-    },
-    */
-    /*
-    {
-      "id": "puppet var",
-      "name": "jdk_location",
-      "displayName": "URL to download 64-bit JDK",
-      "description": "URL from where the 64-bit JDK binary can be downloaded",
-      "defaultValue": "",
-      "isRequired": false,
-      "isReconfigurable": false,
-      "displayType": "url",
-      "isVisible": true,
-      "serviceName": "MISC"
-    },
-    */
     {
       "id": "puppet var",
       "name": "java64_home",
@@ -1616,138 +1337,6 @@ module.exports =
       "serviceName": "MISC",
       "belongsToService":[]
     },
-    {
-      "id": "puppet var",
-      "name": "run_dir",
-      "displayName": "Hadoop run directory",
-      "description": "",
-      "defaultValue": "/var/run/hadoop",
-      "isRequired": false,
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "Advanced",
-      "belongsToService":[]
-    },
-    {
-      "id": "puppet var",
-      "name": "hadoop_conf_dir",
-      "displayName": "Hadoop conf directory",
-      "description": "",
-      "defaultValue": "/etc/hadoop/conf",
-      "isRequired": false,
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "Advanced",
-      "belongsToService":[]
-    },
-    /*
-    {
-      "id": "puppet var",
-      "name": "hcat_metastore_port",
-      "displayName": "hcat_metastore_port",
-      "description": "",
-      "defaultValue": "/usr/lib/hcatalog/share/hcatalog",
-      "isRequired": true,
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC"
-    },
-    {
-      "id": "puppet var",
-      "name": "hcat_lib",
-      "displayName": "hcat_lib",
-      "description": "",
-      "defaultValue": "/usr/lib/hcatalog/share/hcatalog",
-      "isRequired": true,
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC"
-    },
-
-    {
-      "id": "puppet var",
-      "name": "hcat_dbroot",
-      "displayName": "hcat_dbroot",
-      "description": "",
-      "defaultValue": "/usr/lib/hcatalog/share/hcatalog",
-      "isRequired": true,
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC"
-    },
-    {
-      "id": "puppet var",
-      "name": "hcat_dbroot",
-      "displayName": "hcat_dbroot",
-      "description": "",
-      "defaultValue": "/usr/lib/hcatalog/share/hcatalog",
-      "isRequired": true,
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC"
-    },
-
-     {
-     "id": "puppet var",
-     "name": "hadoop_log_dir",
-     "displayName": "Hadoop Log Dir",
-     "description": "Directory for Hadoop log files",
-     "defaultValue": "/var/log/hadoop",
-     "isReconfigurable": false,
-     "displayType": "directory",
-     "isVisible":  true, "serviceName": "MISC",
-     "category": "Advanced"
-     },
-     {
-     "id": "puppet var",
-     "name": "hadoop_pid_dir",
-     "displayName": "Hadoop PID Dir",
-     "description": "Directory in which the pid files for Hadoop processes will be created",
-     "defaultValue": "/var/run/hadoop",
-     "isReconfigurable": false,
-     "displayType": "directory",
-     "isVisible":  true, "serviceName": "MISC",
-     "category": "Advanced"
-     },
-    {
-      "id": "puppet var",
-      "name": "using_local_repo",
-      "displayName": "Whether a local repo is being used",
-      "description": "Whether a local repo is being used",
-      "defaultValue": false,
-      "isReconfigurable": false,
-      "displayType": "checkbox",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC"
-    },
-    {
-      "id": "puppet var",
-      "name": "yum_repo_file",
-      "displayName": "Path to local repo file",
-      "description": "Path to local repository file that configures from where to download software packages",
-      "defaultValue": "/etc/yum.repos.d/hdp.repo",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": true,
-      "domain": "global",
-      "serviceName": "MISC"
-    },
-    */
     {
       "id": "puppet var",
       "name": "hdfs_user",
@@ -1853,63 +1442,6 @@ module.exports =
       "category": "Users and Groups",
       "belongsToService":["OOZIE"]
     },
-    /*
-    {
-      "id": "puppet var",
-      "name": "oozie_conf_dir",
-      "displayName": "Oozie conf dir",
-      "description": "",
-      "defaultValue": "/etc/oozie",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General"
-    },
-
-    {
-      "id": "puppet var",
-      "name": "pig_conf_dir",
-      "displayName": "Pig conf dir",
-      "description": "",
-      "defaultValue": "/etc/pig",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General"
-    },
-    */
-    /*
-    {
-      "id": "puppet var",
-      "name": "sqoop_conf_dir",
-      "displayName": "sqoop conf dir",
-      "description": "",
-      "defaultValue": "/etc/sqoop",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General"
-    },
-    {
-      "id": "puppet var",
-      "name": "sqoop_lib",
-      "displayName": "sqoop conf dir",
-      "description": "",
-      "defaultValue": "/usr/lib/sqoop/lib/",
-      "isReconfigurable": false,
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General"
-    },
-    */
     {
       "id": "puppet var",
       "name": "zk_user",
@@ -2015,20 +1547,6 @@ module.exports =
       "category": "Users and Groups",
       "belongsToService":["HDFS"]
     },
-    /*
-    {
-      "id": "puppet var",
-      "name": "zk_conf_dir",
-      "displayName": "zk_conf_dir",
-      "description": "",
-      "defaultValue": "/etc/conf/",
-      "displayType": "directory",
-      "isVisible": false,
-      "domain": "global",
-      "serviceName": "MISC",
-      "category": "General"
-    },
-    */
     {
       "id": "puppet var",
       "name": "rrdcached_base_dir",

+ 4 - 4
ambari-web/app/data/secure_mapping.js

@@ -123,18 +123,18 @@ module.exports = [
     "serviceName": "HDFS"
   },
   {
-    "name": "dfs.datanode.address",
+    "name": "ambari.dfs.datanode.port",
     "templateName": ["dfs_datanode_address"],
     "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
+    "value": "<templateName[0]>",
     "filename": "hdfs-site.xml",
     "serviceName": "HDFS"
   },
   {
-    "name": "dfs.datanode.http.address",
+    "name": "ambari.dfs.datanode.http.port",
     "templateName": ["dfs_datanode_http_address"],
     "foreignKey": null,
-    "value": "0.0.0.0:<templateName[0]>",
+    "value": "<templateName[0]>",
     "filename": "hdfs-site.xml",
     "serviceName": "HDFS"
   },

+ 26 - 0
ambari-web/app/data/site_properties.js

@@ -344,6 +344,18 @@ module.exports =
       "category": "Advanced",
       "serviceName": "MAPREDUCE"
     },
+    {
+      "id": "site property",
+      "name": "ambari.mapred.child.java.opts.memory",
+      "displayName": "Java options for MapReduce tasks",
+      "description": "Java options for the TaskTracker child processes.",
+      "defaultValue": "",
+      "displayType": "int",
+      "unit": "MB",
+      "category": "TaskTracker",
+      "serviceName": "MAPREDUCE",
+      "index": 4
+    },
 
   /**********************************************oozie-site***************************************/
     {
@@ -460,6 +472,20 @@ module.exports =
       "serviceName": "HIVE",
       "index": 7
     },
+    {
+      "id": "site property",
+      "name": "ambari.hive.db.schema.name",
+      "displayName": "Database Name",
+      "description": "Database name used as the Hive Metastore",
+      "defaultValue": "",
+      "isReconfigurable": true,
+      "displayType": "host",
+      "isOverridable": false,
+      "isObserved": true,
+      "serviceName": "HIVE",
+      "category": "Hive Metastore",
+      "index": 4
+    },
 
   /**********************************************hbase-site***************************************/
     {

+ 1 - 0
ambari-web/app/models/service_config.js

@@ -145,6 +145,7 @@ App.ServiceConfigProperty = Ember.Object.extend({
   isReconfigurable: true, // by default a config property is reconfigurable
   isEditable: true, // by default a config property is editable
   isVisible: true,
+  isRequiredByAgent: true, // Setting it to true implies property will be stored in global configuration
   isSecureConfig: false,
   errorMessage: '',
   warnMessage: '',

+ 92 - 78
ambari-web/app/utils/config.js

@@ -42,16 +42,16 @@ App.config = Em.Object.create({
     "&quot;": '"',
     "&apos;": "'"
   },
-  
+
   /**
    * Since values end up in XML files (core-sit.xml, etc.), certain
    * XML sensitive characters should be escaped. If not we will have
-   * an invalid XML document, and services will fail to start. 
-   * 
+   * an invalid XML document, and services will fail to start.
+   *
    * Special characters in XML are defined at
    * http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML
    */
-  escapeXMLCharacters: function(value) {
+  escapeXMLCharacters: function (value) {
     var self = this;
     // To prevent double/triple replacing '&gt;' to '&gt;gt;' to '&gt;gt;gt', we need
     // to first unescape all XML chars, and then escape them again.
@@ -62,28 +62,28 @@ App.config = Em.Object.create({
       return self.xmlEscapeMap[s];
     });
   },
-  preDefinedServiceConfigs: function(){
+  preDefinedServiceConfigs: function () {
     var configs = this.get('preDefinedGlobalProperties');
     var services = [];
-    $.extend(true, [], require('data/service_configs')).forEach(function(service){
+    $.extend(true, [], require('data/service_configs')).forEach(function (service) {
       service.configs = configs.filterProperty('serviceName', service.serviceName);
       services.push(service);
     });
     return services;
   }.property('preDefinedGlobalProperties'),
-  configMapping: function() {
-      if (App.get('isHadoop2Stack')) {
-        return $.extend(true, [],require('data/HDP2/config_mapping'));
-      }
-    return $.extend(true, [],require('data/config_mapping'));
+  configMapping: function () {
+    if (App.get('isHadoop2Stack')) {
+      return $.extend(true, [], require('data/HDP2/config_mapping'));
+    }
+    return $.extend(true, [], require('data/config_mapping'));
   }.property('App.isHadoop2Stack'),
-  preDefinedGlobalProperties: function() {
+  preDefinedGlobalProperties: function () {
     if (App.get('isHadoop2Stack')) {
       return $.extend(true, [], require('data/HDP2/global_properties').configProperties);
     }
     return $.extend(true, [], require('data/global_properties').configProperties);
   }.property('App.isHadoop2Stack'),
-  preDefinedSiteProperties: function() {
+  preDefinedSiteProperties: function () {
     if (App.get('isHadoop2Stack')) {
       return $.extend(true, [], require('data/HDP2/site_properties').configProperties);
     }
@@ -98,9 +98,9 @@ App.config = Em.Object.create({
   //categories which contain custom configs
   categoriesWithCustom: ['CapacityScheduler'],
   //configs with these filenames go to appropriate category not in Advanced
-  customFileNames: function() {
+  customFileNames: function () {
     if (App.supports.capacitySchedulerUi) {
-      if(App.get('isHadoop2Stack')){
+      if (App.get('isHadoop2Stack')) {
         return ['capacity-scheduler.xml'];
       }
       return ['capacity-scheduler.xml', 'mapred-queue-acls.xml'];
@@ -144,12 +144,12 @@ App.config = Em.Object.create({
 
   /**
    * Array of global "service/desired_tag/actual_tag" strings which
-   * indicate different configurations. We cache these so that 
+   * indicate different configurations. We cache these so that
    * we dont have to recalculate if two tags are difference.
    */
-  differentGlobalTagsCache:[],
-  
-  identifyCategory: function(config){
+  differentGlobalTagsCache: [],
+
+  identifyCategory: function (config) {
     var category = null;
     var serviceConfigMetaData = this.get('preDefinedServiceConfigs').findProperty('serviceName', config.serviceName);
     if (serviceConfigMetaData) {
@@ -167,7 +167,7 @@ App.config = Em.Object.create({
    * checkbox and digital which values with 'm' at the end
    * @param config
    */
-  handleSpecialProperties: function(config){
+  handleSpecialProperties: function (config) {
     if (config.displayType === 'int' && /\d+m$/.test(config.value)) {
       config.value = config.value.slice(0, config.value.length - 1);
       config.defaultValue = config.value;
@@ -183,12 +183,12 @@ App.config = Em.Object.create({
    * @param isAdvanced
    * @param advancedConfigs
    */
-  calculateConfigProperties: function(config, isAdvanced, advancedConfigs){
+  calculateConfigProperties: function (config, isAdvanced, advancedConfigs) {
     if (!isAdvanced || this.get('customFileNames').contains(config.filename)) {
       var categoryMetaData = this.identifyCategory(config);
       if (categoryMetaData != null) {
         config.category = categoryMetaData.get('name');
-        if(!isAdvanced) config.isUserProperty = true;
+        if (!isAdvanced) config.isUserProperty = true;
       }
     } else {
       config.category = config.category ? config.category : 'Advanced';
@@ -200,7 +200,7 @@ App.config = Em.Object.create({
   capacitySchedulerFilter: function () {
     var yarnRegex = /^yarn\.scheduler\.capacity\.root\.(?!unfunded)([a-z]([\_\-a-z0-9]{0,50}))\.(acl_administer_jobs|acl_submit_jobs|state|user-limit-factor|maximum-capacity|capacity)$/i;
     var self = this;
-    if(App.get('isHadoop2Stack')){
+    if (App.get('isHadoop2Stack')) {
       return function (_config) {
         return (yarnRegex.test(_config.name));
       }
@@ -228,7 +228,6 @@ App.config = Em.Object.create({
     var globalConfigs = [];
     var preDefinedConfigs = this.get('preDefinedGlobalProperties').concat(this.get('preDefinedSiteProperties'));
     var mappingConfigs = [];
-
     tags.forEach(function (_tag) {
       var isAdvanced = null;
       var properties = configGroups.filter(function (serviceConfigProperties) {
@@ -250,20 +249,12 @@ App.config = Em.Object.create({
         });
 
         if (configsPropertyDef) {
-          serviceConfigObj.displayType = configsPropertyDef.displayType;
-          serviceConfigObj.isRequired = (configsPropertyDef.isRequired !== undefined) ? configsPropertyDef.isRequired : true;
-          serviceConfigObj.isReconfigurable = (configsPropertyDef.isReconfigurable !== undefined) ? configsPropertyDef.isReconfigurable : true;
-          serviceConfigObj.isVisible = (configsPropertyDef.isVisible !== undefined) ? configsPropertyDef.isVisible : true;
-          serviceConfigObj.unit = (configsPropertyDef.unit !== undefined) ? configsPropertyDef.unit : undefined;
-          serviceConfigObj.description = (configsPropertyDef.description !== undefined) ? configsPropertyDef.description : undefined;
-          serviceConfigObj.isOverridable = configsPropertyDef.isOverridable === undefined ? true : configsPropertyDef.isOverridable;
-          serviceConfigObj.serviceName = configsPropertyDef ? configsPropertyDef.serviceName : null;
-          serviceConfigObj.index = configsPropertyDef.index;
-          serviceConfigObj.isSecureConfig = configsPropertyDef.isSecureConfig === undefined ? false : configsPropertyDef.isSecureConfig;
-          serviceConfigObj.belongsToService = configsPropertyDef.belongsToService;
-          serviceConfigObj.category = configsPropertyDef.category;
+          this.setServiceConfigUiAttributes(serviceConfigObj, configsPropertyDef);
         }
         if (_tag.siteName === 'global') {
+          if (configsPropertyDef.isRequiredByAgent === false) {
+            continue;
+          }
           if (configsPropertyDef) {
             this.handleSpecialProperties(serviceConfigObj);
           } else {
@@ -293,34 +284,55 @@ App.config = Em.Object.create({
       mappingConfigs: mappingConfigs
     }
   },
+
+  /**
+   * @param serviceConfigObj : Object
+   * @param configsPropertyDef : Object
+   */
+  setServiceConfigUiAttributes: function (serviceConfigObj, configsPropertyDef) {
+    serviceConfigObj.displayType = configsPropertyDef.displayType;
+    serviceConfigObj.isRequired = (configsPropertyDef.isRequired !== undefined) ? configsPropertyDef.isRequired : true;
+    serviceConfigObj.isRequiredByAgent = (configsPropertyDef.isRequiredByAgent !== undefined) ? configsPropertyDef.isRequiredByAgent : true;
+    serviceConfigObj.isReconfigurable = (configsPropertyDef.isReconfigurable !== undefined) ? configsPropertyDef.isReconfigurable : true;
+    serviceConfigObj.isVisible = (configsPropertyDef.isVisible !== undefined) ? configsPropertyDef.isVisible : true;
+    serviceConfigObj.unit = (configsPropertyDef.unit !== undefined) ? configsPropertyDef.unit : undefined;
+    serviceConfigObj.description = (configsPropertyDef.description !== undefined) ? configsPropertyDef.description : undefined;
+    serviceConfigObj.isOverridable = configsPropertyDef.isOverridable === undefined ? true : configsPropertyDef.isOverridable;
+    serviceConfigObj.serviceName = configsPropertyDef ? configsPropertyDef.serviceName : null;
+    serviceConfigObj.index = configsPropertyDef.index;
+    serviceConfigObj.isSecureConfig = configsPropertyDef.isSecureConfig === undefined ? false : configsPropertyDef.isSecureConfig;
+    serviceConfigObj.belongsToService = configsPropertyDef.belongsToService;
+    serviceConfigObj.category = configsPropertyDef.category;
+  },
+
   /**
    * synchronize order of config properties with order, that on UI side
    * @param configSet
    * @return {Object}
    */
-  syncOrderWithPredefined: function(configSet){
+  syncOrderWithPredefined: function (configSet) {
     var globalConfigs = configSet.globalConfigs,
-        siteConfigs = configSet.configs,
-        globalStart = [],
-        siteStart = [];
+      siteConfigs = configSet.configs,
+      globalStart = [],
+      siteStart = [];
 
-    this.get('preDefinedGlobalProperties').mapProperty('name').forEach(function(name){
+    this.get('preDefinedGlobalProperties').mapProperty('name').forEach(function (name) {
       var _global = globalConfigs.findProperty('name', name);
-      if(_global){
+      if (_global) {
         globalStart.push(_global);
         globalConfigs = globalConfigs.without(_global);
       }
     }, this);
 
-    this.get('preDefinedSiteProperties').mapProperty('name').forEach(function(name){
+    this.get('preDefinedSiteProperties').mapProperty('name').forEach(function (name) {
       var _site = siteConfigs.findProperty('name', name);
-      if(_site){
+      if (_site) {
         siteStart.push(_site);
         siteConfigs = siteConfigs.without(_site);
       }
     }, this);
 
-    var alphabeticalSort = function(a, b){
+    var alphabeticalSort = function (a, b) {
       if (a.name < b.name) return -1;
       if (a.name > b.name) return 1;
       return 0;
@@ -411,7 +423,7 @@ App.config = Em.Object.create({
       if (_config) {
         if (this.get('configMapping').computed().someProperty('name', _config.name)) {
         } else if (!(configsToVerifying.someProperty('name', _config.name))) {
-          if(this.get('customFileNames').contains(_config.filename)){
+          if (this.get('customFileNames').contains(_config.filename)) {
             categoryMetaData = this.identifyCategory(_config);
             if (categoryMetaData != null) {
               configCategory = categoryMetaData.get('name');
@@ -443,7 +455,7 @@ App.config = Em.Object.create({
     var stored = configs.filter(function (_config) {
       return this.get('categoriesWithCustom').contains(_config.category);
     }, this);
-    if(App.supports.capacitySchedulerUi){
+    if (App.supports.capacitySchedulerUi) {
       var queueProperties = stored.filter(this.get('capacitySchedulerFilter'));
       if (queueProperties.length) {
         queueProperties.setEach('isQueue', true);
@@ -452,8 +464,10 @@ App.config = Em.Object.create({
   },
 
   miscConfigVisibleProperty: function (configs, serviceToShow) {
-    configs.forEach(function(item) {
-      item.set("isVisible", item.belongsToService.some(function(cur){return serviceToShow.contains(cur)}));
+    configs.forEach(function (item) {
+      item.set("isVisible", item.belongsToService.some(function (cur) {
+        return serviceToShow.contains(cur)
+      }));
     });
     return configs;
   },
@@ -503,10 +517,10 @@ App.config = Em.Object.create({
       // Use calculated default values for some configs
       var recommendedDefaults = {};
       if (!storedConfigs && service.defaultsProviders) {
-        service.defaultsProviders.forEach(function(defaultsProvider) {
+        service.defaultsProviders.forEach(function (defaultsProvider) {
           var defaults = defaultsProvider.getDefaults(localDB);
-          for(var name in defaults) {
-        	recommendedDefaults[name] = defaults[name];
+          for (var name in defaults) {
+            recommendedDefaults[name] = defaults[name];
             var config = configsByService.findProperty('name', name);
             if (config) {
               config.set('value', defaults[name]);
@@ -516,10 +530,10 @@ App.config = Em.Object.create({
         });
       }
       if (service.configsValidator) {
-    	service.configsValidator.set('recommendedDefaults', recommendedDefaults);
-    	var validators = service.configsValidator.get('configValidators');
-    	for (var validatorName in validators) {
-        var c = configsByService.findProperty('name', validatorName);
+        service.configsValidator.set('recommendedDefaults', recommendedDefaults);
+        var validators = service.configsValidator.get('configValidators');
+        for (var validatorName in validators) {
+          var c = configsByService.findProperty('name', validatorName);
           if (c) {
             c.set('serviceValidator', service.configsValidator);
           }
@@ -532,13 +546,13 @@ App.config = Em.Object.create({
     return renderedServiceConfigs;
   },
   /**
-  Takes care of the "dynamic defaults" for the HCFS configs.  Sets
-  some of the config defaults to previously user-entered data.
-  **/
+   Takes care of the "dynamic defaults" for the HCFS configs.  Sets
+   some of the config defaults to previously user-entered data.
+   **/
   tweakDynamicDefaults: function (localDB, serviceConfigProperty, config) {
     console.log("Step7: Tweaking Dynamic defaults");
     var firstHost = null;
-    for(var host in localDB.hosts) {
+    for (var host in localDB.hosts) {
       firstHost = host;
       break;
     }
@@ -592,7 +606,7 @@ App.config = Em.Object.create({
     serviceConfig.configCategories.filterProperty('isCustomView', true).forEach(function (category) {
       switch (category.name) {
         case 'CapacityScheduler':
-          if(App.supports.capacitySchedulerUi){
+          if (App.supports.capacitySchedulerUi) {
             category.set('customView', App.ServiceConfigCapacityScheduler);
           } else {
             category.set('isCustomView', false);
@@ -699,14 +713,14 @@ App.config = Em.Object.create({
     }
     return globalPropertyToServicesMap;
   },
-  
+
   loadGlobalPropertyToServicesMapSuccess: function (data) {
     globalPropertyToServicesMap = {};
-    if(data.items!=null){
-      data.items.forEach(function(service){
-        service.configurations.forEach(function(config){
-          if("global.xml" === config.StackConfigurations.type){
-            if(!(config.StackConfigurations.property_name in globalPropertyToServicesMap)){
+    if (data.items != null) {
+      data.items.forEach(function (service) {
+        service.configurations.forEach(function (config) {
+          if ("global.xml" === config.StackConfigurations.type) {
+            if (!(config.StackConfigurations.property_name in globalPropertyToServicesMap)) {
               globalPropertyToServicesMap[config.StackConfigurations.property_name] = [];
             }
             globalPropertyToServicesMap[config.StackConfigurations.property_name].push(service.StackServices.service_name);
@@ -715,7 +729,7 @@ App.config = Em.Object.create({
       });
     }
   },
-  
+
   /**
    * Hosts can override service configurations per property. This method GETs
    * the overriden configurations and sets only the changed properties into
@@ -874,19 +888,19 @@ App.config = Em.Object.create({
    * @param filename
    * @return {*}
    */
-  fileConfigsIntoTextarea: function(configs, filename){
+  fileConfigsIntoTextarea: function (configs, filename) {
     var fileConfigs = configs.filterProperty('filename', filename);
     var value = '';
     var defaultValue = '';
     var complexConfig = this.get('complexConfigs').findProperty('filename', filename);
-    if(complexConfig){
-      fileConfigs.forEach(function(_config){
+    if (complexConfig) {
+      fileConfigs.forEach(function (_config) {
         value += _config.name + '=' + _config.value + '\n';
         defaultValue += _config.name + '=' + _config.defaultValue + '\n';
       }, this);
       complexConfig.value = value;
       complexConfig.defaultValue = defaultValue;
-      configs = configs.filter(function(_config){
+      configs = configs.filter(function (_config) {
         return _config.filename !== filename;
       });
       configs.push(complexConfig);
@@ -901,7 +915,7 @@ App.config = Em.Object.create({
    * @param filename
    * @return {*}
    */
-  textareaIntoFileConfigs: function(configs, filename){
+  textareaIntoFileConfigs: function (configs, filename) {
     var complexConfigName = this.get('complexConfigs').findProperty('filename', filename).name;
     var configsTextarea = configs.findProperty('name', complexConfigName);
     if (configsTextarea) {
@@ -937,12 +951,12 @@ App.config = Em.Object.create({
    * @param property
    * @returns {*}
    */
-  trimProperty: function(property, isEmberObject){
+  trimProperty: function (property, isEmberObject) {
     var displayType = (isEmberObject) ? property.get('displayType') : property.displayType;
     var value = (isEmberObject) ? property.get('value') : property.value;
     var name = (isEmberObject) ? property.get('name') : property.name;
     var rez;
-    switch (displayType){
+    switch (displayType) {
       case 'directories':
       case 'directory':
         rez = value.trim().split(/\s+/g).join(',');
@@ -953,7 +967,7 @@ App.config = Em.Object.create({
       case 'password':
         break;
       case 'advanced':
-        if(name == 'javax.jdo.option.ConnectionURL' || name == 'oozie.service.JPAService.jdbc.url') {
+        if (name == 'javax.jdo.option.ConnectionURL' || name == 'oozie.service.JPAService.jdbc.url') {
           rez = value.trim();
         }
       default:
@@ -962,7 +976,7 @@ App.config = Em.Object.create({
     return ((rez == '') || (rez == undefined)) ? value : rez;
   },
 
-  OnNnHAHideSnn: function(ServiceConfig) {
+  OnNnHAHideSnn: function (ServiceConfig) {
     var configCategories = ServiceConfig.get('configCategories');
     var snCategory = configCategories.findProperty('name', 'SNameNode');
     var activeNn = App.HDFSService.find('HDFS').get('activeNameNode.hostName');
@@ -1126,7 +1140,7 @@ App.config = Em.Object.create({
 
   /**
    * Gets all the configuration-groups for a host.
-   * 
+   *
    * @param hostName
    *          (string) host name used to register
    * @return Array of App.ConfigGroups

+ 4 - 0
ambari-web/app/utils/helper.js

@@ -126,6 +126,10 @@ String.prototype.highlight = function (words, highlightTemplate) {
   return self;
 };
 
+Array.prototype.move = function(from, to) {
+  this.splice(to, 0, this.splice(from, 1)[0]);
+};
+
 Number.prototype.toDaysHoursMinutes = function () {
   var formatted = {},
     dateDiff = this,

+ 1 - 1
ambari-web/app/views/wizard/controls_view.js

@@ -251,7 +251,7 @@ App.ServiceConfigRadioButtons = Ember.View.extend({
   databaseName: function () {
     switch (this.get('serviceConfig.serviceName')) {
       case 'HIVE':
-        return this.get('categoryConfigsAll').findProperty('name', 'hive_database_name').get('value');
+        return this.get('categoryConfigsAll').findProperty('name', 'ambari.hive.db.schema.name').get('value');
       case 'OOZIE':
         return this.get('categoryConfigsAll').findProperty('name', 'oozie.db.schema.name').get('value');
       default: