You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by dm...@apache.org on 2015/10/22 10:35:27 UTC
[2/2] ambari git commit: AMBARI-13407. Express Upgrade: Create other
Upgrade Packs and Config Packs (dlysnichenko)
AMBARI-13407. Express Upgrade: Create other Upgrade Packs and Config Packs (dlysnichenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e652b358
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e652b358
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e652b358
Branch: refs/heads/trunk
Commit: e652b358748f8785622f5e6f50002f620a907678
Parents: 5eff797
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Thu Oct 22 11:34:18 2015 +0300
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Thu Oct 22 11:35:26 2015 +0300
----------------------------------------------------------------------
.../server/checks/ClientRetryPropertyCheck.java | 2 +-
.../HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml | 89 +++
.../HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml | 680 +++++++++++++++++++
.../HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml | 519 ++++++++++++++
4 files changed, 1289 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/e652b358/ambari-server/src/main/java/org/apache/ambari/server/checks/ClientRetryPropertyCheck.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/ClientRetryPropertyCheck.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/ClientRetryPropertyCheck.java
index 368bcb8..257d575 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/ClientRetryPropertyCheck.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/ClientRetryPropertyCheck.java
@@ -37,7 +37,7 @@ import com.google.inject.Singleton;
* client retry properties for HDFS, HIVE, and OOZIE are set.
*/
@Singleton
-@UpgradeCheck(group = UpgradeCheckGroup.CLIENT_RETRY_PROPERTY, required = true)
+@UpgradeCheck(group = UpgradeCheckGroup.CLIENT_RETRY_PROPERTY, required = false)
public class ClientRetryPropertyCheck extends AbstractCheckDescriptor {
static final String HIVE_CLIENT_RETRY_MISSING_KEY = "hive.client.retry.missing.key";
http://git-wip-us.apache.org/repos/asf/ambari/blob/e652b358/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml
index c81b1ea..a23fe3d 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml
@@ -182,10 +182,99 @@
<direction>UPGRADE</direction> <!-- prevent config changes on downgrade -->
<skippable>false</skippable>
+ <!--Changes for stack 2.2-->
<!--YARN-->
<execute-stage service="MAPREDUCE2" component="HISTORYSERVER">
<task xsi:type="configure" id="hdp_2_2_0_0_historyserver_classpath"/>
</execute-stage>
+
+
+ <!--Changes for stack 2.3-->
+ <!--HDFS-->
+ <execute-stage service="HDFS" component="NAMENODE">
+ <task xsi:type="configure" id="hdp_2_3_0_0_modify_hadoop_env"/>
+ </execute-stage>
+
+
+ <!--YARN-->
+ <execute-stage service="MAPREDUCE2" component="HISTORYSERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_mapreduce2_adjust_history_server"/>
+ </execute-stage>
+
+ <execute-stage service="YARN" component="APP_TIMELINE_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_yarn_ats_enable_recovery"/>
+ </execute-stage>
+
+ <execute-stage service="YARN" component="RESOURCEMANAGER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_yarn_rm_disable_node_labels"/>
+ </execute-stage>
+
+ <execute-stage service="YARN" component="RESOURCEMANAGER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_yarn_rm_clear_default_node_label_expression"/>
+ </execute-stage>
+
+ <execute-stage service="YARN" component="RESOURCEMANAGER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_yarn_rm_check_cs_root_def_capacity"/>
+ </execute-stage>
+
+ <execute-stage service="YARN" component="RESOURCEMANAGER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_yarn_rm_check_cs_root_max_capacity"/>
+ </execute-stage>
+
+
+ <!--HBASE-->
+ <execute-stage service="HBASE" component="HBASE_MASTER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hbase_master_set_global_memstore_size"/>
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER">
+ <task xsi:type="server_action" summary="Calculating HBase Properties" class="org.apache.ambari.server.serveraction.upgrades.HBaseConfigCalculation" />
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hbase_master_adjust_authorization_coprocessors"/>
+ </execute-stage>
+
+
+ <!--TEZ-->
+ <execute-stage service="TEZ" component="TEZ_CLIENT">
+ <task xsi:type="configure" id="hdp_2_3_0_0_tez_client_adjust_properties"/>
+ </execute-stage>
+
+
+ <!--HIVE-->
+ <execute-stage service="HIVE" component="HIVE_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hive_server_replace_auth_manager"/>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="HIVE_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hive_server_configure_authentification"/>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="WEBHCAT_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_webhcat_server_update_env"/>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="WEBHCAT_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_webhcat_server_update_configuration_paths"/>
+ </execute-stage>
+
+
+ <!--OOZIE-->
+ <execute-stage service="OOZIE" component="OOZIE_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_oozie_remove_redundant_configurations"/>
+ </execute-stage>
+
+
+ <!--STORM-->
+ <execute-stage service="STORM" component="NIMBUS">
+ <task xsi:type="configure" id="hdp_2_3_0_0_nimbus_convert_nimbus_host_to_seeds"/>
+ </execute-stage>
+
+ <execute-stage service="STORM" component="NIMBUS">
+ <task xsi:type="configure" id="hdp_2_3_0_0_nimbus_update_env_vars"/>
+ </execute-stage>
+
</group>
<!-- After processing this group, will change the effective Stack of the UpgradeContext object. -->
http://git-wip-us.apache.org/repos/asf/ambari/blob/e652b358/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
new file mode 100644
index 0000000..d71387a
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
@@ -0,0 +1,680 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+
+<upgrade xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <target>2.3.*.*</target>
+ <target-stack>HDP-2.3</target-stack>
+ <type>NON_ROLLING</type>
+ <downgrade-allowed>false</downgrade-allowed>
+ <prechecks>
+ <!--TODO: do we have any?-->
+ </prechecks>
+ <order>
+ <group xsi:type="cluster" name="PRE_CLUSTER" title="Prepare Upgrade">
+ <skippable>true</skippable>
+ <direction>UPGRADE</direction>
+ <execute-stage service="YARN" component="RESOURCEMANAGER" title="Stop YARN Queues">
+ <task xsi:type="manual">
+ <message>Before continuing, please stop all YARN queues. If yarn-site's yarn.resourcemanager.work-preserving-recovery.enabled is set to true, then you can skip this step since the clients will retry on their own.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="SLIDER" component="SLIDER" title="Stop Long Running Applications on Slider">
+ <task xsi:type="manual">
+ <message>Before continuing, please stop all long-running applications deployed using Slider. E.g., su - yarn "/usr/hdp/current/slider-client/bin/slider stop <app_name>"</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="STORM" component="NIMBUS" title="Stop Storm Topologies">
+ <task xsi:type="manual">
+ <message>Before continuing, please deactivate and kill any currently running topologies.</message>
+ </task>
+ </execute-stage>
+ </group>
+
+ <group xsi:type="stop" name="Stop High-Level Daemons" title="Stop Daemons for High-Level Services">
+ <skippable>true</skippable>
+ <service-check>false</service-check>
+
+ <service name="FLUME">
+ <component>FLUME_HANDLER</component>
+ </service>
+
+ <service name="STORM">
+ <component>DRPC_SERVER</component>
+ <component>STORM_UI_SERVER</component>
+ <component>SUPERVISOR</component>
+ <component>STORM_REST_API</component>
+ <component>NIMBUS</component>
+ </service>
+
+ <service name="KNOX">
+ <component>KNOX_GATEWAY</component>
+ </service>
+
+ <service name="KAFKA">
+ <component>KAFKA_BROKER</component>
+ </service>
+
+ <service name="FALCON">
+ <component>FALCON_SERVER</component>
+ </service>
+
+ <service name="OOZIE">
+ <component>OOZIE_SERVER</component>
+ </service>
+
+ <service name="SPARK">
+ <component>SPARK_JOBHISTORYSERVER</component>
+ </service>
+
+ <service name="HIVE">
+ <component>WEBHCAT_SERVER</component>
+ <component>HIVE_SERVER</component>
+ <component>HIVE_METASTORE</component>
+ </service>
+
+ <service name="YARN">
+ <component>NODEMANAGER</component>
+ <component>RESOURCEMANAGER</component>
+ <component>APP_TIMELINE_SERVER</component>
+ </service>
+
+ <service name="MAPREDUCE2">
+ <component>HISTORYSERVER</component>
+ </service>
+ </group>
+
+ <group xsi:type="cluster" name="Backups" title="Take Backups">
+ <direction>UPGRADE</direction>
+ <skippable>true</skippable>
+ <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Backup Oozie Database">
+ <task xsi:type="manual">
+ <message>Before continuing, please backup the Oozie Server database on {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="HIVE_METASTORE" title="Backup Hive Metastore">
+ <task xsi:type="manual">
+ <message>Before continuing, please backup the Hive Metastore database located on the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <!--TODO(dlysnichenko): This step is missing in 2.3->2.3+ RU pack -->
+ <execute-stage service="KNOX" component="KNOX_GATEWAY" title="Backup Knox Data">
+ <task xsi:type="manual">
+ <message>Before continuing, please backup the Knox data. E.g., "cp -RL /etc/knox/data/security ~/knox_backup" on the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER" title="Snapshot HBASE">
+ <task xsi:type="execute" hosts="master">
+ <script>scripts/hbase_upgrade.py</script>
+ <function>take_snapshot</function>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HDFS" component="NAMENODE" title="Snapshot HDFS">
+ <task xsi:type="execute" hosts="master">
+ <script>scripts/namenode.py</script>
+ <function>prepare_non_rolling_upgrade</function>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger">
+ <task xsi:type="manual">
+ <message>Before continuing, please backup the Ranger Admin database and Ranger Audit database on the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <!--TODO: Ranger KMS seems to be absent at 2.2 stack, not backing it up-->
+ </group>
+
+ <group xsi:type="stop" name="Stop Low-Level Daemons" title="Stop Daemons for Low-Level Services">
+ <skippable>true</skippable>
+ <service-check>false</service-check>
+
+ <service name="HBASE">
+ <component>HBASE_REGIONSERVER</component>
+ <component>HBASE_MASTER</component>
+ </service>
+
+ <service name="HDFS">
+ <component>DATANODE</component>
+ <component>NAMENODE</component>
+ <component>SECONDARY_NAMENODE</component>
+ <component>ZKFC</component>
+ <component>JOURNALNODE</component>
+ </service>
+
+ <service name="RANGER">
+ <component>RANGER_USERSYNC</component>
+ <component>RANGER_ADMIN</component>
+ </service>
+
+ <service name="ZOOKEEPER">
+ <component>ZOOKEEPER_SERVER</component>
+ </service>
+ </group>
+
+ <group name="Marker for Downgrade" title="Marker for Downgrade">
+ <direction>UPGRADE</direction>
+ <!-- TODO, if the user attempts a downgrade before this step, they can simply abort. -->
+ </group>
+
+ <group xsi:type="cluster" name="Restore Backups" title="Restore Backups">
+ <direction>DOWNGRADE</direction>
+ <skippable>true</skippable>
+
+ <!-- If the user attempts a downgrade after this point, they will need to restore backups
+ before starting any of the services. -->
+
+ <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Backup Oozie Database">
+ <task xsi:type="manual">
+ <message>Before continuing, please restore the Oozie Server database on {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="HIVE_METASTORE" title="Backup Hive Metastore">
+ <task xsi:type="manual">
+ <message>Before continuing, please restore the Hive Metastore database located on the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="KNOX" component="KNOX_GATEWAY" title="Backup Knox Data">
+ <task xsi:type="manual">
+ <message>Before continuing, please restore the Knox data. E.g., "cp -RL ~/knox_backup/* /etc/knox/data/security/" on the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER" title="Snapshot HBASE">
+ <task xsi:type="execute" hosts="master">
+ <script>scripts/hbase_upgrade.py</script>
+ <function>restore_snapshot</function>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HDFS" component="NAMENODE" title="Snapshot HDFS">
+ <task xsi:type="execute" hosts="master">
+ <script>scripts/namenode.py</script>
+ <function>restore_snapshot</function>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger">
+ <task xsi:type="manual">
+ <message>Before continuing, please restore the Ranger Admin database and Ranger Audit database on the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <!--TODO: Ranger KMS seems to be absent at 2.2 stack, not backing it up-->
+ </group>
+
+ <group xsi:type="cluster" name="Upgrade service configs" title="Upgrade service configs">
+ <direction>UPGRADE</direction> <!-- prevent config changes on downgrade -->
+ <skippable>false</skippable>
+
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Apply config changes for Ranger">
+ <task xsi:type="configure" id="hdp_2_3_0_0_update_ranger_env"/>
+ </execute-stage>
+
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Apply config changes for Ranger">
+ <task xsi:type="configure" id="hdp_2_3_0_0_update_ranger_admin"/>
+ </execute-stage>
+
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Apply config changes for Ranger">
+ <task xsi:type="server_action" summary="Calculating Ranger Properties" class="org.apache.ambari.server.serveraction.upgrades.RangerConfigCalculation" />
+ </execute-stage>
+
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Apply config changes for Ranger">
+ <task xsi:type="configure" id="hdp_2_3_0_0_update_ranger_usersync"/>
+ </execute-stage>
+
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Apply config changes for Ranger">
+ <task xsi:type="configure" id="hdp_2_3_0_0_update_ranger_site"/>
+ </execute-stage>
+
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Apply config changes for Ranger">
+ <task xsi:type="configure" id="hdp_2_3_0_0_update_ranger_usersync_properties"/>
+ </execute-stage>
+
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Apply config changes for Ranger">
+ <task xsi:type="configure" id="hdp_2_3_0_0_update_ranger_delete_oracle_home"/>
+ </execute-stage>
+
+ <!--HDFS-->
+ <execute-stage service="HDFS" component="NAMENODE">
+ <task xsi:type="configure" id="hdp_2_3_0_0_modify_hadoop_env"/>
+ </execute-stage>
+
+ <execute-stage service="HDFS" component="NAMENODE">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hdfs_adjust_ranger_plugin"/>
+ </execute-stage>
+
+ <execute-stage service="HDFS" component="NAMENODE">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hdfs_transition_ranger_hdfs_policy"/>
+ </execute-stage>
+
+ <execute-stage service="HDFS" component="NAMENODE">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hdfs_transition_ranger_hdfs_audit"/>
+ </execute-stage>
+
+ <execute-stage service="HDFS" component="NAMENODE">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hdfs_transition_ranger_hdfs_security"/>
+ </execute-stage>
+
+ <execute-stage service="HDFS" component="NAMENODE">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hdfs_ranger_hdfs_delete_old_properties"/>
+ </execute-stage>
+
+ <!--YARN-->
+ <execute-stage service="MAPREDUCE2" component="HISTORYSERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_mapreduce2_adjust_history_server"/>
+ </execute-stage>
+
+ <execute-stage service="YARN" component="APP_TIMELINE_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_yarn_ats_enable_recovery"/>
+ </execute-stage>
+
+ <execute-stage service="YARN" component="RESOURCEMANAGER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_yarn_rm_disable_node_labels"/>
+ </execute-stage>
+
+ <execute-stage service="YARN" component="RESOURCEMANAGER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_yarn_rm_clear_default_node_label_expression"/>
+ </execute-stage>
+
+ <execute-stage service="YARN" component="RESOURCEMANAGER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_yarn_rm_check_cs_root_def_capacity"/>
+ </execute-stage>
+
+ <execute-stage service="YARN" component="RESOURCEMANAGER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_yarn_rm_check_cs_root_max_capacity"/>
+ </execute-stage>
+
+
+ <!--HBASE-->
+ <execute-stage service="HBASE" component="HBASE_MASTER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hbase_master_adjust_phoenix_scheduler_factory"/>
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hbase_master_adjust_phoenix_rpc_controller_factory"/>
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hbase_master_set_global_memstore_size"/>
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER">
+ <task xsi:type="server_action" summary="Calculating HBase Properties" class="org.apache.ambari.server.serveraction.upgrades.HBaseConfigCalculation" />
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hbase_master_adjust_phoenix_indexed_wal_edit_codec"/>
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hbase_master_adjust_authorization_coprocessors"/>
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hbase_master_transition_ranger_hbase_policy"/>
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hbase_master_transition_ranger_hbase_audit"/>
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hbase_master_copy_ranger_policies"/>
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hbase_master_delete_old_ranger_properties"/>
+ </execute-stage>
+
+
+ <!--TEZ-->
+ <execute-stage service="TEZ" component="TEZ_CLIENT">
+ <task xsi:type="configure" id="hdp_2_3_0_0_tez_client_adjust_properties"/>
+ </execute-stage>
+
+
+ <!--HIVE-->
+ <execute-stage service="HIVE" component="HIVE_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hive_server_replace_auth_manager"/>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="HIVE_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hive_server_configure_authentification"/>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="HIVE_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hive_server_configure_ranger_policy"/>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="HIVE_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hive_server_configure_ranger_security"/>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="HIVE_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hive_server_configure_ranger_audit"/>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="HIVE_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_hive_server_remove_deprecated_ranger_properties"/>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="WEBHCAT_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_webhcat_server_update_env"/>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="WEBHCAT_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_webhcat_server_update_configuration_paths"/>
+ </execute-stage>
+
+
+ <!--OOZIE-->
+ <execute-stage service="OOZIE" component="OOZIE_SERVER">
+ <task xsi:type="configure" id="hdp_2_3_0_0_oozie_remove_redundant_configurations"/>
+ </execute-stage>
+
+
+ <!--KNOX-->
+ <execute-stage service="KNOX" component="KNOX_GATEWAY">
+ <task xsi:type="configure" id="hdp_2_3_0_0_knox_configure_ranger_policy"/>
+ </execute-stage>
+
+ <execute-stage service="KNOX" component="KNOX_GATEWAY">
+ <task xsi:type="configure" id="hdp_2_3_0_0_knox_configure_ranger_knox_audit"/>
+ </execute-stage>
+
+ <execute-stage service="KNOX" component="KNOX_GATEWAY">
+ <task xsi:type="configure" id="hdp_2_3_0_0_knox_remove_deprecated_ranger_properties"/>
+ </execute-stage>
+
+ <!--STORM-->
+ <execute-stage service="STORM" component="NIMBUS">
+ <task xsi:type="configure" id="hdp_2_3_0_0_nimbus_convert_nimbus_host_to_seeds"/>
+ </execute-stage>
+
+ <execute-stage service="STORM" component="NIMBUS">
+ <task xsi:type="configure" id="hdp_2_3_0_0_nimbus_update_env_vars"/>
+ </execute-stage>
+
+ <execute-stage service="STORM" component="NIMBUS">
+ <task xsi:type="configure" id="hdp_2_3_0_0_nimbus_configure_ranger_policy"/>
+ </execute-stage>
+
+ <execute-stage service="STORM" component="NIMBUS">
+ <task xsi:type="configure" id="hdp_2_3_0_0_nimbus_configure_ranger_audit"/>
+ </execute-stage>
+
+ <execute-stage service="STORM" component="NIMBUS">
+ <task xsi:type="configure" id="hdp_2_3_0_0_nimbus_remove_deprecated_ranger_properties"/>
+ </execute-stage>
+
+ </group>
+
+
+ <!-- After processing this group, will change the effective Stack of the UpgradeContext object. -->
+ <group xsi:type="update-stack" name="UPDATE_DESIRED_STACK_ID" title="Update Desired Stack Id">
+ <execute-stage title="Update Desired Stack Id" service="" component="">
+ <task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.UpdateDesiredStackAction">
+ </task>
+ </execute-stage>
+ </group>
+
+ <group xsi:type="cluster" name="ALL_HOST_OPS" title="Set Version On All Hosts">
+ <skippable>true</skippable>
+ <execute-stage title="Update stack to {{version}}">
+ <task xsi:type="execute">
+ <script>scripts/ru_set_all.py</script>
+ <function>actionexecute</function>
+ </task>
+ </execute-stage>
+ </group>
+
+ <!-- Now, restart all of the services. -->
+
+ <group xsi:type="restart" name="ZOOKEEPER" title="Zookeeper">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="ZOOKEEPER">
+ <service-check>false</service-check>
+ <component>ZOOKEEPER_SERVER</component>
+ <component>ZOOKEEPER_CLIENT</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="RANGER" title="Ranger">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="RANGER">
+ <component>RANGER_ADMIN</component>
+ <component>RANGER_USERSYNC</component>
+ <component>RANGER_KMS_SERVER</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="HDFS" title="HDFS">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="HDFS">
+ <component>JOURNALNODE</component>
+ <component>ZKFC</component>
+ <component>NAMENODE</component>
+ <component>SECONDARY_NAMENODE</component>
+ <component>DATANODE</component>
+ <component>HDFS_CLIENT</component>
+ </service>
+ </group>
+
+ <group xsi:type="cluster" name="HDFS_LEAFE_SAFEMODE" title="HDFS - Wait to leave Safemode">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <direction>UPGRADE</direction>
+
+ <execute-stage service="HDFS" component="NAMENODE" title="Wait to leave Safemode">
+ <task xsi:type="execute" hosts="master" summary="Wait for NameNode to leave Safemode">
+ <script>scripts/namenode.py</script>
+ <function>wait_for_safemode_off</function>
+ </task>
+ </execute-stage>
+ </group>
+
+ <group xsi:type="restart" name="MR and YARN" title="MR and YARN">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="MAPREDUCE2">
+ <component>HISTORYSERVER</component>
+ <component>MAPREDUCE2_CLIENT</component>
+ </service>
+ <service name="YARN">
+ <component>APP_TIMELINE_SERVER</component>
+ <component>RESOURCEMANAGER</component>
+ <component>NODEMANAGER</component>
+ <component>YARN_CLIENT</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="HBASE" title="HBASE">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="HBASE">
+ <component>HBASE_MASTER</component>
+ <component>HBASE_REGIONSERVER</component>
+ <component>HBASE_CLIENT</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="CLIENTS" title="Tez, Pig, Sqoop Clients">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+
+ <service name="TEZ">
+ <component>TEZ_CLIENT</component>
+ </service>
+
+ <service name="PIG">
+ <component>PIG</component>
+ </service>
+
+ <service name="SQOOP">
+ <component>SQOOP</component>
+ </service>
+ </group>
+
+ <group name="SERVICE_CHECK" title="All Service Checks" xsi:type="service-check">
+ <skippable>true</skippable>
+ <direction>UPGRADE</direction>
+ <priority>
+ <service>HDFS</service>
+ <service>YARN</service>
+ <service>MAPREDUCE2</service>
+ <service>HBASE</service>
+ </priority>
+ </group>
+
+ <group xsi:type="restart" name="HIVE" title="Hive">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="HIVE">
+ <component>HIVE_METASTORE</component>
+ <component>HIVE_SERVER</component>
+ <component>WEBHCAT_SERVER</component>
+ <component>HIVE_CLIENT</component>
+ <component>HCAT</component>
+ </service>
+ </group>
+
+ <!-- Upgrade Oozie DB only on Upgrade direction, and always create a new ShareLib. -->
+ <group name="Upgrade Oozie" title="Upgrade Oozie Database">
+ <direction>UPGRADE</direction>
+ <skippable>true</skippable>
+ <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Upgrade Oozie Database">
+ <task xsi:type="execute" hosts="any" summary="Upgrading the database and creating a new sharelib">
+ <script>scripts/oozie_server_upgrade.py</script>
+ <function>upgrade_oozie_database_and_sharelib</function>
+ </task>
+ </execute-stage>
+ </group>
+
+ <!-- Only create the ShareLib folder during a Downgrade. -->
+ <group name="Downgrade Oozie" title="Downgrade Oozie ShareLib">
+ <direction>DOWNGRADE</direction>
+ <skippable>true</skippable>
+ <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Downgrade Oozie ShareLib">
+ <task xsi:type="execute" hosts="any" summary="Upgrading the database and creating a new sharelib">
+ <script>scripts/oozie_server_upgrade.py</script>
+ <function>create_sharelib</function>
+ </task>
+ </execute-stage>
+ </group>
+
+ <group xsi:type="restart" name="OOZIE" title="Oozie">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="OOZIE">
+ <component>OOZIE_SERVER</component>
+ <component>OOZIE_CLIENT</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="FALCON" title="Falcon">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="FALCON">
+ <component>FALCON_SERVER</component>
+ <component>FALCON_CLIENT</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="KAFKA" title="Kafka">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="KAFKA">
+ <component>KAFKA_BROKER</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="KNOX" title="Knox">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="KNOX">
+ <component>KNOX_GATEWAY</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="STORM" title="Storm">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="STORM">
+ <component>NIMBUS</component>
+ <component>STORM_REST_API</component>
+ <component>SUPERVISOR</component>
+ <component>STORM_UI_SERVER</component>
+ <component>DRPC_SERVER</component>
+ </service>
+
+ <execute-stage service="STORM" component="DRPC_SERVER" title="Rebuild Storm Topology">
+ <task xsi:type="manual">
+ <message>Please rebuild your topology using the new Storm version dependencies and resubmit it using the newly created jar.</message>
+ </task>
+ </execute-stage>
+ </group>
+
+ <group xsi:type="restart" name="FLUME" title="Flume">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="FLUME">
+ <component>FLUME_HANDLER</component>
+ </service>
+ </group>
+
+ <group xsi:type="cluster" name="POST_CLUSTER" title="Finalize {{direction.text.proper}}">
+ <skippable>true</skippable>
+ <execute-stage title="Check Unhealthy Hosts" id="unhealthy-hosts">
+ <task xsi:type="manual">
+ <message>The following hosts were unhealthy and should be resolved before finalizing can be completed: {{hosts.unhealthy}}</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage title="Confirm Finalize">
+ <direction>UPGRADE</direction>
+ <task xsi:type="manual">
+ <message>Please confirm you are ready to finalize.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HDFS" component="NAMENODE" title="Execute HDFS Finalize">
+ <task xsi:type="execute" hosts="master">
+ <script>scripts/namenode.py</script>
+ <function>finalize_non_rolling_upgrade</function>
+ </task>
+ </execute-stage>
+
+ <execute-stage title="Save Cluster State" service="" component="">
+ <task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.FinalizeUpgradeAction">
+ </task>
+ </execute-stage>
+ </group>
+ </order>
+</upgrade>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/e652b358/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
new file mode 100644
index 0000000..e92a413
--- /dev/null
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
@@ -0,0 +1,519 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+
+<upgrade xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <target>2.3.*.*</target>
+ <target-stack>HDP-2.3</target-stack>
+ <type>NON_ROLLING</type>
+ <prechecks>
+ <!--TODO: do we have any?-->
+ </prechecks>
+ <order>
+ <group xsi:type="cluster" name="PRE_CLUSTER" title="Prepare Upgrade">
+ <skippable>true</skippable>
+ <direction>UPGRADE</direction>
+ <execute-stage service="YARN" component="RESOURCEMANAGER" title="Stop YARN Queues">
+ <task xsi:type="manual">
+ <message>Before continuing, please stop all YARN queues. If yarn-site's yarn.resourcemanager.work-preserving-recovery.enabled is set to true, then you can skip this step since the clients will retry on their own.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="SLIDER" component="SLIDER" title="Stop Long Running Applications on Slider">
+ <task xsi:type="manual">
+ <message>Before continuing, please stop all long-running applications deployed using Slider. E.g., su - yarn "/usr/hdp/current/slider-client/bin/slider stop <app_name>"</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="STORM" component="NIMBUS" title="Stop Storm Topologies">
+ <task xsi:type="manual">
+ <message>Before continuing, please deactivate and kill any currently running topologies.</message>
+ </task>
+ </execute-stage>
+ </group>
+
+ <group xsi:type="stop" name="Stop High-Level Daemons" title="Stop Daemons for High-Level Services">
+ <skippable>true</skippable>
+ <service-check>false</service-check>
+
+ <service name="FLUME">
+ <component>FLUME_HANDLER</component>
+ </service>
+
+ <service name="STORM">
+ <component>DRPC_SERVER</component>
+ <component>STORM_UI_SERVER</component>
+ <component>SUPERVISOR</component>
+ <component>STORM_REST_API</component>
+ <component>NIMBUS</component>
+ </service>
+
+ <service name="KNOX">
+ <component>KNOX_GATEWAY</component>
+ </service>
+
+ <service name="KAFKA">
+ <component>KAFKA_BROKER</component>
+ </service>
+
+ <service name="FALCON">
+ <component>FALCON_SERVER</component>
+ </service>
+
+ <service name="OOZIE">
+ <component>OOZIE_SERVER</component>
+ </service>
+
+ <service name="SPARK">
+ <component>SPARK_JOBHISTORYSERVER</component>
+ </service>
+
+ <service name="HIVE">
+ <component>WEBHCAT_SERVER</component>
+ <component>HIVE_SERVER</component>
+ <component>HIVE_METASTORE</component>
+ </service>
+
+ <service name="YARN">
+ <component>NODEMANAGER</component>
+ <component>RESOURCEMANAGER</component>
+ <component>APP_TIMELINE_SERVER</component>
+ </service>
+
+ <service name="MAPREDUCE2">
+ <component>HISTORYSERVER</component>
+ </service>
+ </group>
+
+ <group xsi:type="cluster" name="Backups" title="Take Backups">
+ <direction>UPGRADE</direction>
+ <skippable>true</skippable>
+ <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Backup Oozie Database">
+ <task xsi:type="manual">
+ <message>Before continuing, please backup the Oozie Server database on {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="HIVE_METASTORE" title="Backup Hive Metastore">
+ <task xsi:type="manual">
+ <message>Before continuing, please backup the Hive Metastore database located on the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <!--TODO(dlysnichenko): This step is missing in 2.3->2.3+ RU pack -->
+ <execute-stage service="KNOX" component="KNOX_GATEWAY" title="Backup Knox Data">
+ <task xsi:type="manual">
+ <message>Before continuing, please backup the Knox data. E.g., "cp -RL /etc/knox/data/security ~/knox_backup" on the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER" title="Snapshot HBASE">
+ <task xsi:type="execute" hosts="master">
+ <script>scripts/hbase_upgrade.py</script>
+ <function>take_snapshot</function> <!-- TODO (Alejandro), this function used to be called just "snapshot" -->
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HDFS" component="NAMENODE" title="Snapshot HDFS">
+ <task xsi:type="execute" hosts="master"> <!-- TODO (Alejandro), this can be any NameNode, not just the active. -->
+ <script>scripts/namenode.py</script>
+ <function>prepare_non_rolling_upgrade</function>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger">
+ <task xsi:type="manual">
+ <message>Before continuing, please backup the Ranger Admin database and Ranger Audit database on the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="RANGER_KMS" component="RANGER_KMS_SERVER" title="Pre Upgrade Ranger KMS">
+ <task xsi:type="manual">
+ <message>Before continuing, please backup Ranger KMS database</message>
+ </task>
+ </execute-stage>
+ </group>
+
+ <group xsi:type="stop" name="Stop Low-Level Daemons" title="Stop Daemons for Low-Level Services">
+ <skippable>true</skippable>
+ <service-check>false</service-check>
+
+ <service name="HBASE">
+ <component>HBASE_REGIONSERVER</component>
+ <component>HBASE_MASTER</component>
+ <component>PHOENIX_QUERY_SERVER</component>
+ </service>
+
+ <service name="HDFS">
+ <component>DATANODE</component>
+ <component>NAMENODE</component>
+ <component>SECONDARY_NAMENODE</component> <!-- TODO (Alejandro), may not be present. -->
+ <component>ZKFC</component> <!-- TODO (Alejandro), may not be present. -->
+ <component>JOURNALNODE</component> <!-- TODO (Alejandro), may not be present. -->
+ <component>NFS_GATEWAY</component>
+ </service>
+
+ <service name="RANGER">
+ <component>RANGER_USERSYNC</component>
+ <component>RANGER_ADMIN</component>
+ <component>RANGER_KMS_SERVER</component>
+ </service>
+
+ <service name="ZOOKEEPER">
+ <component>ZOOKEEPER_SERVER</component>
+ </service>
+ </group>
+
+ <group name="Marker for Downgrade" title="Marker for Downgrade">
+ <direction>UPGRADE</direction>
+ <!-- TODO (Alejandro), if the user attempts a downgrade before this step, they can simply abort. -->
+ </group>
+
+ <group xsi:type="cluster" name="Restore Backups" title="Restore Backups">
+ <direction>DOWNGRADE</direction>
+ <skippable>true</skippable>
+
+ <!-- If the user attempts a downgrade after this point, they will need to restore backups
+ before starting any of the services. -->
+
+ <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Backup Oozie Database">
+ <task xsi:type="manual">
+ <message>Before continuing, please restore the Oozie Server database on {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="HIVE_METASTORE" title="Backup Hive Metastore">
+ <task xsi:type="manual">
+ <message>Before continuing, please restore the Hive Metastore database located on the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="KNOX" component="KNOX_GATEWAY" title="Backup Knox Data">
+ <task xsi:type="manual">
+ <message>Before continuing, please restore the Knox data. E.g., "cp -RL ~/knox_backup/* /etc/knox/data/security/" on the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER" title="Snapshot HBASE">
+ <task xsi:type="execute" hosts="master">
+ <script>scripts/hbase_upgrade.py</script>
+ <function>restore_snapshot</function> <!-- TODO (Alejandro), this function name is new. -->
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HDFS" component="NAMENODE" title="Snapshot HDFS">
+ <task xsi:type="execute" hosts="master"> <!-- TODO (Alejandro), this can be any NameNode, not just the active. -->
+ <script>scripts/namenode.py</script>
+ <function>restore_snapshot</function> <!-- TODO (Alejandro), this function doesn't exist yet. -->
+ </task>
+ </execute-stage>
+
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger">
+ <task xsi:type="manual">
+ <message>Before continuing, please restore the Ranger Admin database and Ranger Audit database on the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+ </group>
+
+ <!-- After processing this group, will change the effective Stack of the UpgradeContext object. -->
+ <group xsi:type="update-stack" name="UPDATE_DESIRED_STACK_ID" title="Update Desired Stack Id">
+ <execute-stage title="Update Desired Stack Id" service="" component="">
+ <task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.UpdateDesiredStackAction">
+ </task>
+ </execute-stage>
+ </group>
+
+ <group xsi:type="cluster" name="ALL_HOST_OPS" title="Set Version On All Hosts">
+ <skippable>true</skippable>
+ <execute-stage title="Update stack to {{version}}">
+ <task xsi:type="execute">
+ <script>scripts/ru_set_all.py</script>
+ <function>actionexecute</function>
+ </task>
+ </execute-stage>
+ </group>
+
+ <!-- Now, restart all of the services. -->
+
+ <group xsi:type="restart" name="ZOOKEEPER" title="Zookeeper">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="ZOOKEEPER">
+ <service-check>false</service-check> <!-- TODO (Alejandro), enable service-check once done testing -->
+ <component>ZOOKEEPER_SERVER</component>
+ <component>ZOOKEEPER_CLIENT</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="RANGER" title="Ranger">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="RANGER">
+ <component>RANGER_ADMIN</component>
+ <component>RANGER_USERSYNC</component>
+ <component>RANGER_KMS_SERVER</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="HDFS" title="HDFS">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="HDFS">
+ <component>JOURNALNODE</component>
+ <component>ZKFC</component>
+ <component>NAMENODE</component>
+ <component>SECONDARY_NAMENODE</component>
+ <component>DATANODE</component>
+ <component>HDFS_CLIENT</component>
+ <component>NFS_GATEWAY</component>
+ </service>
+ </group>
+
+ <group xsi:type="cluster" name="HDFS_LEAFE_SAFEMODE" title="HDFS - Wait to leave Safemode">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <direction>UPGRADE</direction>
+
+ <execute-stage service="HDFS" component="NAMENODE" title="Wait to leave Safemode">
+ <task xsi:type="execute" hosts="master" summary="Wait for NameNode to leave Safemode">
+ <script>scripts/namenode.py</script>
+ <function>wait_for_safemode_off</function>
+ </task>
+ </execute-stage>
+ </group>
+
+ <group xsi:type="restart" name="MR and YARN" title="MR and YARN">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="MAPREDUCE2">
+ <component>HISTORYSERVER</component>
+ <component>MAPREDUCE2_CLIENT</component>
+ </service>
+ <service name="YARN">
+ <component>APP_TIMELINE_SERVER</component>
+ <component>RESOURCEMANAGER</component>
+ <component>NODEMANAGER</component>
+ <component>YARN_CLIENT</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="HBASE" title="HBASE">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="HBASE">
+ <component>HBASE_MASTER</component>
+ <component>HBASE_REGIONSERVER</component>
+ <component>HBASE_CLIENT</component>
+ <component>PHOENIX_QUERY_SERVER</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="CLIENTS" title="Tez, Pig, Sqoop Clients">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+
+ <service name="TEZ">
+ <component>TEZ_CLIENT</component>
+ </service>
+
+ <service name="MAHOUT">
+ <component>MAHOUT</component>
+ </service>
+
+ <service name="PIG">
+ <component>PIG</component>
+ </service>
+
+ <service name="SQOOP">
+ <component>SQOOP</component>
+ </service>
+ </group>
+
+ <group name="SERVICE_CHECK" title="All Service Checks" xsi:type="service-check">
+ <skippable>true</skippable>
+ <direction>UPGRADE</direction>
+ <priority>
+ <service>HDFS</service>
+ <service>YARN</service>
+ <service>MAPREDUCE2</service>
+ <service>HBASE</service>
+ </priority>
+ </group>
+
+ <group xsi:type="restart" name="HIVE" title="Hive">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="HIVE">
+ <component>HIVE_METASTORE</component>
+ <component>HIVE_SERVER</component>
+ <component>WEBHCAT_SERVER</component>
+ <component>HIVE_CLIENT</component>
+ <component>HCAT</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="SPARK" title="Spark">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="SPARK">
+ <component>SPARK_JOBHISTORYSERVER</component>
+ <component>SPARK_CLIENT</component>
+ </service>
+ </group>
+
+ <!-- Upgrade Oozie DB only on Upgrade direction, and always create a new ShareLib. -->
+ <group name="Upgrade Oozie" title="Upgrade Oozie Database">
+ <direction>UPGRADE</direction>
+ <skippable>true</skippable>
+ <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Upgrade Oozie Database">
+ <task xsi:type="execute" hosts="any" summary="Upgrading the database and creating a new sharelib">
+ <script>scripts/oozie_server_upgrade.py</script>
+ <function>upgrade_oozie_database_and_sharelib</function>
+ </task>
+ </execute-stage>
+ </group>
+
+ <!-- Only create the ShareLib folder during a Downgrade. -->
+ <group name="Downgrade Oozie" title="Downgrade Oozie ShareLib">
+ <direction>DOWNGRADE</direction>
+ <skippable>true</skippable>
+ <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Downgrade Oozie ShareLib">
+ <task xsi:type="execute" hosts="any" summary="Upgrading the database and creating a new sharelib">
+ <script>scripts/oozie_server_upgrade.py</script>
+ <function>create_sharelib</function>
+ </task>
+ </execute-stage>
+ </group>
+
+ <group xsi:type="restart" name="OOZIE" title="Oozie">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="OOZIE">
+ <component>OOZIE_SERVER</component>
+ <component>OOZIE_CLIENT</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="FALCON" title="Falcon">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="FALCON">
+ <component>FALCON_SERVER</component>
+ <component>FALCON_CLIENT</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="KAFKA" title="Kafka">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="KAFKA">
+ <component>KAFKA_BROKER</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="KNOX" title="Knox">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="KNOX">
+ <component>KNOX_GATEWAY</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="STORM" title="Storm">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="STORM">
+ <component>NIMBUS</component>
+ <component>STORM_REST_API</component>
+ <component>SUPERVISOR</component>
+ <component>STORM_UI_SERVER</component>
+ <component>DRPC_SERVER</component>
+ </service>
+
+ <!-- TODO (Alejandro), does this work? -->
+ <execute-stage service="STORM" component="DRPC_SERVER" title="Rebuild Storm Topology">
+ <task xsi:type="manual">
+ <message>Please rebuild your topology using the new Storm version dependencies and resubmit it using the newly created jar.</message>
+ </task>
+ </execute-stage>
+ </group>
+
+ <group xsi:type="restart" name="ACCUMULO" title="Accumulo">
+ <skippable>true</skippable>
+ <service name="ACCUMULO">
+ <component>ACCUMULO_MASTER</component>
+ <component>ACCUMULO_TSERVER</component>
+ <component>ACCUMULO_MONITOR</component>
+ <component>ACCUMULO_GC</component>
+ <component>ACCUMULO_TRACER</component>
+ <component>ACCUMULO_CLIENT</component>
+ </service>
+
+ <!-- TODO (Alejandro), does this work? -->
+ <execute-stage service="STORM" component="DRPC_SERVER" title="Rebuild Storm Topology">
+ <task xsi:type="manual">
+ <message>Please rebuild your topology using the new Storm version dependencies and resubmit it using the newly created jar.</message>
+ </task>
+ </execute-stage>
+ </group>
+
+ <group xsi:type="restart" name="SLIDER" title="Slider">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="SLIDER">
+ <component>SLIDER</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="FLUME" title="Flume">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="FLUME">
+ <component>FLUME_HANDLER</component>
+ </service>
+ </group>
+
+ <group xsi:type="cluster" name="POST_CLUSTER" title="Finalize {{direction.text.proper}}">
+ <skippable>true</skippable>
+ <execute-stage title="Check Unhealthy Hosts" id="unhealthy-hosts">
+ <task xsi:type="manual">
+ <message>The following hosts were unhealthy and should be resolved before finalizing can be completed: {{hosts.unhealthy}}</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage title="Confirm Finalize">
+ <direction>UPGRADE</direction>
+ <task xsi:type="manual">
+ <message>Please confirm you are ready to finalize.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HDFS" component="NAMENODE" title="Execute HDFS Finalize">
+ <task xsi:type="execute" hosts="master"> <!-- TODO (Alejandro), what happens if there's no HA. -->
+ <script>scripts/namenode.py</script>
+ <function>finalize_non_rolling_upgrade</function>
+ </task>
+ </execute-stage>
+
+ <execute-stage title="Save Cluster State" service="" component="">
+ <task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.FinalizeUpgradeAction">
+ </task>
+ </execute-stage>
+ </group>
+ </order>
+</upgrade>
\ No newline at end of file