blob: ff4ed18c7685946e95d65fba32d5dba169f788a1 [file] [log] [blame]
<?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.5.*.*</target>
<target-stack>HDP-2.5</target-stack>
<type>NON_ROLLING</type>
<prerequisite-checks>
<check>org.apache.ambari.server.checks.RangerAuditDbCheck</check>
<configuration>
<!-- Configuration properties for all pre-reqs including required pre-reqs -->
<check-properties name="org.apache.ambari.server.checks.HiveDynamicServiceDiscoveryCheck">
<property name="min-failure-stack-version">HDP-2.3.0.0</property>
</check-properties>
</configuration>
<check>org.apache.ambari.server.checks.AtlasPresenceCheck</check>
</prerequisite-checks>
<!-- Instructs the upgrade pack how to build the configuration pack -->
<upgrade-path>
<intermediate-stack version="2.4"/>
</upgrade-path>
<order>
<group xsi:type="cluster" name="PRE_CLUSTER" title="Prepare Upgrade">
<direction>UPGRADE</direction>
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<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 &lt;app_name&gt;"</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>
<execute-stage service="TEZ" component="TEZ_CLIENT" title="Check Tez Tarball">
<task xsi:type="execute" hosts="any">
<script>scripts/pre_upgrade.py</script>
<function>prepare</function>
</task>
</execute-stage>
</group>
<group xsi:type="stop" name="STOP_HIGH_LEVEL_SERVICE_COMPONENTS" title="Stop Components for High-Level Services">
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<parallel-scheduler/>
<service-check>false</service-check>
<service name="FLUME">
<component>FLUME_HANDLER</component>
</service>
<service name="ACCUMULO">
<component>ACCUMULO_TRACER</component>
<component>ACCUMULO_GC</component>
<component>ACCUMULO_TSERVER</component>
<component>ACCUMULO_MONITOR</component>
<component>ACCUMULO_MASTER</component>
</service>
<service name="STORM">
<component>DRPC_SERVER</component>
<component>STORM_UI_SERVER</component>
<component>SUPERVISOR</component>
<component>NIMBUS</component>
</service>
<service name="KNOX">
<component>KNOX_GATEWAY</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>
<component>SPARK_THRIFTSERVER</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="Perform Backups">
<direction>UPGRADE</direction>
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<execute-stage service="OOZIE" component="OOZIE_SERVER" title="Backup Oozie Database">
<task xsi:type="manual">
<message>Before continuing, please backup the Oozie Server database referenced by the Oozie server located on {{hosts.all}}.</message>
</task>
<task xsi:type="server_action" summary="Fix oozie admin users" class="org.apache.ambari.server.serveraction.upgrades.FixOozieAdminUsers"/>
</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 referenced by the Hive Metastore service(s) located 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="Prepare HDFS">
<task xsi:type="execute" hosts="master">
<script>scripts/namenode.py</script>
<function>prepare_express_upgrade</function>
</task>
</execute-stage>
<execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger Database">
<task xsi:type="manual">
<message>Before continuing, please backup the Ranger Admin database and Ranger Audit database on the following host(s): {{hosts.all}}. If audit database size is too large (greater than 3GB) then follow the below instructions:
1. Backup the audit table from audit database.
2. Truncate audit table.
3. Follow upgrade process and once completed then restore audit data to audit table.</message>
</task>
</execute-stage>
<execute-stage service="RANGER_KMS" component="RANGER_KMS_SERVER" title="Backup Ranger KMS Database">
<task xsi:type="manual">
<message>Before continuing, please backup Ranger KMS database on the following host(s): {{hosts.all}}.</message>
</task>
</execute-stage>
</group>
<group xsi:type="stop" name="STOP_LOW_LEVEL_SERVICE_COMPONENTS" title="Stop Components for Core Services">
<skippable>true</skippable>
<service-check>false</service-check>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<parallel-scheduler/>
<service name="HBASE">
<component>HBASE_REGIONSERVER</component>
<component>HBASE_MASTER</component>
<component>PHOENIX_QUERY_SERVER</component>
</service>
<service name="KAFKA">
<component>KAFKA_BROKER</component>
</service>
<service name="HDFS">
<component>DATANODE</component>
<component>NAMENODE</component>
<component>SECONDARY_NAMENODE</component>
<component>ZKFC</component>
<component>JOURNALNODE</component>
<component>NFS_GATEWAY</component>
</service>
<service name="RANGER">
<component>RANGER_USERSYNC</component>
<component>RANGER_ADMIN</component>
</service>
<service name="RANGER_KMS">
<component>RANGER_KMS_SERVER</component>
</service>
<service name="ZOOKEEPER">
<component>ZOOKEEPER_SERVER</component>
</service>
</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="Restore Oozie Database">
<task xsi:type="manual">
<message>Before continuing, please restore the Oozie Server database referenced by the Oozie server located on {{hosts.all}}.</message>
</task>
</execute-stage>
<execute-stage service="HIVE" component="HIVE_METASTORE" title="Restore Hive Metastore">
<task xsi:type="manual">
<message>Before continuing, please restore the Hive Metastore database referenced by the Hive Metastore service(s) located on the following host(s): {{hosts.all}}.</message>
</task>
</execute-stage>
<execute-stage service="RANGER" component="RANGER_ADMIN" title="Restore Ranger Database">
<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>
<execute-stage service="RANGER_KMS" component="RANGER_KMS_SERVER" title="Restore Ranger KMS Database">
<task xsi:type="manual">
<message>Before continuing, please restore Ranger KMS database</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 Target Stack">
<execute-stage title="Update Target Stack" service="" component="">
<task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.UpdateDesiredStackAction">
</task>
</execute-stage>
</group>
<group xsi:type="cluster" name="Upgrade service configs" title="Upgrade service configs">
<direction>UPGRADE</direction> <!-- prevent config changes on downgrade -->
<skippable>true</skippable> <!-- May fix configuration problems manually -->
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<!-- HDFS -->
<execute-stage service="HDFS" component="NAMENODE" title="Apply config changes for NameNode">
<task xsi:type="configure" id="hdp_2_4_0_0_namenode_ha_adjustments"/>
</execute-stage>
<execute-stage service="HDFS" component="NAMENODE" title="Apply config changes for Hdfs Namenode">
<task xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hdfs_audit_db"/>
</execute-stage>
<!-- YARN -->
<execute-stage service="YARN" component="RESOURCEMANAGER" title="Calculating Yarn Properties for Spark">
<task xsi:type="server_action" summary="Calculating Yarn Properties for Spark Shuffle" class="org.apache.ambari.server.serveraction.upgrades.SparkShufflePropertyConfig" />
</execute-stage>
<execute-stage service="YARN" component="RESOURCEMANAGER" title="Apply config changes for Yarn Resourcemanager">
<task xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_yarn_audit_db"/>
</execute-stage>
<execute-stage service="YARN" component="NODEMANAGER" title="Add Spark2 shuffle">
<task xsi:type="configure" id="hdp_2_5_0_0_add_spark2_yarn_shuffle"/>
</execute-stage>
<execute-stage service="MAPREDUCE2" component="MAPREDUCE2_CLIENT" title="Apply config changes for Mapreduce2 client">
<task xsi:type="server_action" summary="Verifying LZO codec path for mapreduce" class="org.apache.ambari.server.serveraction.upgrades.FixLzoCodecPath"/>
</execute-stage>
<!-- HBASE -->
<!-- These HBASE configs changed in HDP 2.3.4.0, but Ambari can't distinguish HDP 2.3.2.0 vs HDP 2.3.4.0, so easier to always do them. -->
<execute-stage service="HBASE" component="HBASE_MASTER" title="Apply config changes for HBASE Master">
<task xsi:type="configure" id="hdp_2_4_0_0_hbase_remove_local_indexing"/>
</execute-stage>
<execute-stage service="HBASE" component="HBASE_MASTER" title="Apply config changes for Hbase Master">
<task xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hbase_audit_db"/>
</execute-stage>
<execute-stage service="HBASE" component="HBASE_MASTER" title="Update HBase Configuration">
<task xsi:type="server_action" summary="Update HBase Env Configuration" class="org.apache.ambari.server.serveraction.upgrades.HBaseEnvMaxDirectMemorySizeAction"/>
</execute-stage>
<!-- TEZ -->
<execute-stage service="TEZ" component="TEZ_CLIENT" title="Apply config changes for Tez">
<task xsi:type="configure" id="hdp_2_5_0_0_tez_client_adjust_tez_lib_uris_property"/>
</execute-stage>
<execute-stage service="TEZ" component="TEZ_CLIENT" title="Verify LZO codec path for Tez">
<task xsi:type="server_action" summary="Verifying LZO codec path for Tez" class="org.apache.ambari.server.serveraction.upgrades.FixLzoCodecPath"/>
</execute-stage>
<!-- SQOOP -->
<execute-stage service="SQOOP" component="SQOOP" title="Apply config changes for Sqoop to remove Atlas Configs">
<!-- Remove Atlas configs that were incorrectly added to sqoop-site instead of Atlas' application.properties. -->
<task xsi:type="configure" id="hdp_2_5_0_0_remove_sqoop_atlas_configs"/>
</execute-stage>
<execute-stage service="SQOOP" component="SQOOP" title="Apply config changes for Sqoop if the cluster is Kerberized">
<!-- If cluster is Kerberized, add configs to sqoop-atlas-application.properties,
which will be written to the local file system if Atlas is present. -->
<task xsi:type="configure" id="hdp_2_5_0_0_add_sqoop_atlas_security_configs" />
</execute-stage>
<!-- HIVE -->
<execute-stage service="HIVE" component="WEBHCAT_SERVER" title="Apply config changes for WebHCat Server">
<task xsi:type="configure" id="hdp_2_5_0_0_webhcat_server_update_configuration_paths"/>
</execute-stage>
<execute-stage service="HIVE" component="HIVE_SERVER" title="Apply config changes for Hive Server">
<task xsi:type="configure" id="hdp_2_4_0_0_hive_server_configure_authentication"/>
</execute-stage>
<execute-stage service="HIVE" component="HIVE_SERVER" title="Apply config changes for Hive Server">
<task xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hive_audit_db"/>
</execute-stage>
<execute-stage service="HIVE" component="HIVE_SERVER" title="Apply config changes for Hive Server">
<!-- Remove Atlas configs that were incorrectly added to hive-site instead of Atlas' application.properties. -->
<task xsi:type="configure" id="hdp_2_5_0_0_remove_hive_atlas_configs"/>
</execute-stage>
<execute-stage service="HIVE" component="HIVE_SERVER" title="Apply config changes for Hive Server">
<task xsi:type="server_action" summary="Update hive-env content" class="org.apache.ambari.server.serveraction.upgrades.HiveEnvClasspathAction"/>
</execute-stage>
<!--OOZIE-->
<execute-stage service="OOZIE" component="OOZIE_SERVER" title="Apply config changes for Oozie Server">
<task xsi:type="server_action" summary="Adjusting Oozie properties" class="org.apache.ambari.server.serveraction.upgrades.OozieConfigCalculation"/>
</execute-stage>
<execute-stage service="OOZIE" component="OOZIE_SERVER" title="Apply config changes for Oozie Server">
<task xsi:type="configure" id="hdp_2_4_0_0_oozie_remove_service_classes" />
</execute-stage>
<!--FALCON-->
<execute-stage service="FALCON" component="FALCON_SERVER" title="Apply config changes for Falcon">
<task xsi:type="configure" id="hdp_2_5_0_0_falcon_server_adjust_services_property"/>
</execute-stage>
<execute-stage service="KAFKA" component="KAFKA_BROKER" title="Apply config changes for Kafka Broker">
<task xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_kafka_audit_db"/>
</execute-stage>
<!-- SPARK -->
<execute-stage service="SPARK" component="SPARK_JOBHISTORYSERVER" title="Apply config changes for Spark JobHistoryServer">
<task xsi:type="configure" id="hdp_2_4_0_0_spark_jobhistoryserver"/>
</execute-stage>
<execute-stage service="SPARK" component="SPARK_JOBHISTORYSERVER" title="Apply config changes for Spark JobHistoryServer">
<task xsi:type="configure" id="hdp_2_4_0_0_spark_java_opts"/>
</execute-stage>
<execute-stage service="SPARK" component="SPARK_THRIFTSERVER" title="Apply config changes for Spark ThriftServer">
<task xsi:type="configure" id="hdp_2_4_0_0_spark_thriftserver"/>
</execute-stage>
<execute-stage service="SPARK" component="SPARK_THRIFTSERVER" title="Apply config changes for Spark ThriftServer">
<task xsi:type="configure" id="hdp_2_4_0_0_spark_java_opts"/>
</execute-stage>
<execute-stage service="SPARK" component="SPARK_CLIENT" title="Apply config changes for Spark">
<task xsi:type="configure" id="hdp_2_4_0_0_remove_spark_properties_extraJavaOptions"/>
</execute-stage>
<execute-stage service="SPARK" component="SPARK_CLIENT" title="Apply config changes for Spark">
<task xsi:type="configure" id="hdp_2_4_0_0_spark_java_opts"/>
</execute-stage>
<!-- RANGER -->
<execute-stage service="RANGER" component="RANGER_ADMIN" title="Apply config changes for Ranger Admin">
<task xsi:type="configure" id="hdp_2_5_0_0_remove_audit_db_flag"/>
</execute-stage>
<execute-stage service="RANGER" component="RANGER_ADMIN" title="Apply config changes for Ranger Admin">
<task xsi:type="configure" id="hdp_2_5_0_0_remove_audit_db_admin_properties"/>
</execute-stage>
<execute-stage service="RANGER" component="RANGER_ADMIN" title="Apply config changes for Ranger Admin">
<task xsi:type="configure" id="hdp_2_5_0_0_remove_audit_db_ranger_admin_site"/>
</execute-stage>
<execute-stage service="RANGER" component="RANGER_ADMIN" title="Apply config changes for Ranger Admin">
<task xsi:type="configure" id="hdp_2_5_0_0_remove_sso_property"/>
</execute-stage>
<execute-stage service="RANGER" component="RANGER_ADMIN" title="Apply config changes for Ranger Admin">
<task xsi:type="configure" id="hdp_2_5_0_0_set_external_solrCloud_flag"/>
</execute-stage>
<execute-stage service="RANGER" component="RANGER_ADMIN" title="Calculating Ranger Properties">
<task xsi:type="server_action" summary="Calculating Ranger Properties" class="org.apache.ambari.server.serveraction.upgrades.RangerKerberosConfigCalculation"/>
</execute-stage>
<execute-stage service="RANGER" component="RANGER_ADMIN" title="Configuring Ranger Alerts">
<task xsi:type="server_action" summary="Configuring Ranger Alerts" class="org.apache.ambari.server.serveraction.upgrades.RangerWebAlertConfigAction"/>
</execute-stage>
<!-- RANGER KMS -->
<execute-stage service="RANGER_KMS" component="RANGER_KMS_SERVER" title="Apply config changes for Ranger KMS Server">
<task xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_kms_audit_db"/>
</execute-stage>
<!-- KNOX -->
<execute-stage service="KNOX" component="KNOX_GATEWAY" title="Apply config changes for Knox Gateway">
<task xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_knox_audit_db"/>
</execute-stage>
<!-- STORM -->
<execute-stage service="STORM" component="NIMBUS" title="Apply config changes for Storm Nimbus">
<task xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_storm_audit_db"/>
</execute-stage>
<execute-stage service="STORM" component="NIMBUS" title="Apply config changes for Nimbus">
<task xsi:type="configure" id="hdp_2_5_0_0_upgrade_storm_1.0"/>
</execute-stage>
<execute-stage service="STORM" component="NIMBUS" title="Apply config changes for Nimbus in KerberosDescriptor">
<task xsi:type="server_action" summary="Upgrade Storm Security Configs to 1.0"
class="org.apache.ambari.server.serveraction.upgrades.StormUpgradeKerberosDescriptorConfig"/>
</execute-stage>
<execute-stage service="STORM" component="NIMBUS" title="Apply config changes for Storm">
<!-- Remove Atlas configs that were incorrectly added to storm-site instead of Atlas' application.properties. -->
<task xsi:type="configure" id="hdp_2_5_0_0_remove_storm_atlas_configs"/>
<!-- Add nimbus.impersonation acls . -->
<task xsi:type="configure" id="hdp_2_5_0_0_add_storm_security_configs" />
</execute-stage>
<execute-stage service="STORM" component="NIMBUS" title="Apply config changes for Nimbus">
<task xsi:type="configure" id="hdp_2_3_0_0_remove_empty_storm_topology_submission_notifier_plugin_class"/>
</execute-stage>
</group>
<!--
After processing this group, the user-specified Kerberos descriptor will be updated to work with
the new stack-level Kerberos descriptor.
-->
<group xsi:type="cluster" name="UPDATE_KERBEROS_DESCRIPTORS" title="Update Kerberos Descriptors">
<execute-stage title="Update the user-specified Kerberos descriptor" service="" component="">
<task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.UpgradeUserKerberosDescriptor"/>
</execute-stage>
</group>
<!--
Invoke "hdp-select set all" to change any components we may have missed
that are installed on the hosts but not known by Ambari.
-->
<group xsi:type="cluster" name="ALL_HOST_OPS" title="Set Version On All Hosts">
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<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>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<parallel-scheduler/>
<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>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<parallel-scheduler/>
<service name="RANGER">
<component>RANGER_ADMIN</component>
<component>RANGER_USERSYNC</component>
</service>
</group>
<group xsi:type="restart" name="RANGER_KMS" title="Ranger KMS">
<service-check>false</service-check>
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<parallel-scheduler/>
<service name="RANGER_KMS">
<component>RANGER_KMS_SERVER</component>
</service>
</group>
<group xsi:type="restart" name="HDFS" title="HDFS">
<service-check>false</service-check>
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<parallel-scheduler/>
<service name="HDFS">
<component>JOURNALNODE</component>
<component>ZKFC</component>
<component>NAMENODE</component>
<component>SECONDARY_NAMENODE</component>
<component>NFS_GATEWAY</component>
<component>HDFS_CLIENT</component>
</service>
</group>
<group xsi:type="restart" name="HDFS_DATANODES" title="HDFS DataNodes">
<service-check>false</service-check>
<skippable>true</skippable>
<parallel-scheduler/>
<service name="HDFS">
<component>DATANODE</component>
</service>
</group>
<group xsi:type="cluster" name="HDFS_LEAVE_SAFEMODE" title="HDFS - Wait to leave Safemode">
<service-check>false</service-check>
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<execute-stage service="HDFS" component="NAMENODE" title="Wait to leave Safemode">
<task xsi:type="execute" hosts="all" 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="KAFKA" title="Kafka">
<service-check>false</service-check>
<skippable>true</skippable>
<parallel-scheduler/>
<service name="KAFKA">
<component>KAFKA_BROKER</component>
</service>
</group>
<group xsi:type="restart" name="YARN_AND_MAPR" title="YARN and MapReduce2">
<service-check>false</service-check>
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<parallel-scheduler/>
<service name="MAPREDUCE2">
<component>HISTORYSERVER</component>
<component>MAPREDUCE2_CLIENT</component>
</service>
<service name="YARN">
<component>APP_TIMELINE_SERVER</component>
<component>RESOURCEMANAGER</component>
<component>YARN_CLIENT</component>
</service>
</group>
<group xsi:type="restart" name="YARN_NODEMANAGERS" title="YARN NodeManagers">
<service-check>false</service-check>
<skippable>true</skippable>
<parallel-scheduler/>
<service name="YARN">
<component>NODEMANAGER</component>
</service>
</group>
<group xsi:type="restart" name="HBASE" title="HBASE">
<service-check>false</service-check>
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<parallel-scheduler/>
<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>
<parallel-scheduler/>
<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_1" title="All Service Checks" xsi:type="service-check">
<skippable>true</skippable>
<direction>UPGRADE</direction>
<priority>
<service>ZOOKEEPER</service>
<service>RANGER</service>
<service>RANGER_KMS</service>
<service>HDFS</service>
<service>KAFKA</service>
<service>YARN</service>
<service>MAPREDUCE2</service>
<service>HBASE</service>
</priority>
</group>
<group xsi:type="restart" name="HIVE_MASTERS" title="Hive Masters">
<service-check>false</service-check>
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<!-- Must be ran sequentially because Hive Metastore upgrades the schema and Hive Server copies tarballs. -->
<parallel-scheduler>
<max-degree-of-parallelism>1</max-degree-of-parallelism>
</parallel-scheduler>
<service name="HIVE">
<component>HIVE_METASTORE</component>
<component>HIVE_SERVER</component>
<component>WEBHCAT_SERVER</component>
</service>
</group>
<group xsi:type="restart" name="HIVE_CLIENTS" title="Hive Clients">
<service-check>false</service-check>
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<parallel-scheduler/>
<service name="HIVE">
<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>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<parallel-scheduler/>
<service name="SPARK">
<component>SPARK_JOBHISTORYSERVER</component>
<component>SPARK_THRIFTSERVER</component>
</service>
</group>
<group xsi:type="restart" name="SPARK_CLIENTS" title="Spark Clients">
<service-check>false</service-check>
<skippable>true</skippable>
<parallel-scheduler/>
<service name="SPARK">
<component>SPARK_CLIENT</component>
</service>
</group>
<group xsi:type="restart" name="OOZIE" title="Oozie">
<service-check>false</service-check>
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<parallel-scheduler/>
<service name="OOZIE">
<component>OOZIE_SERVER</component>
</service>
</group>
<group xsi:type="restart" name="OOZIE_CLIENTS" title="Oozie Clients">
<service-check>false</service-check>
<skippable>true</skippable>
<parallel-scheduler/>
<service name="OOZIE">
<component>OOZIE_CLIENT</component>
</service>
</group>
<group name="SERVICE_CHECK_2" title="All Service Checks" xsi:type="service-check">
<skippable>true</skippable>
<direction>UPGRADE</direction>
<priority>
<service>HIVE</service>
<service>OOZIE</service>
<service>SPARK</service>
</priority>
</group>
<group xsi:type="restart" name="FALCON" title="Falcon">
<service-check>false</service-check>
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<parallel-scheduler/>
<service name="FALCON">
<component>FALCON_SERVER</component>
</service>
</group>
<group xsi:type="restart" name="FALCON_CLIENTS" title="Falcon Clients">
<service-check>false</service-check>
<skippable>true</skippable>
<parallel-scheduler/>
<service name="FALCON">
<component>FALCON_CLIENT</component>
</service>
</group>
<group xsi:type="restart" name="KNOX" title="Knox">
<service-check>false</service-check>
<skippable>true</skippable>
<parallel-scheduler/>
<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>
<parallel-scheduler/>
<service name="STORM">
<component>NIMBUS</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="SLIDER" title="Slider">
<service-check>false</service-check>
<skippable>true</skippable>
<parallel-scheduler/>
<service name="SLIDER">
<component>SLIDER</component>
</service>
</group>
<group xsi:type="restart" name="FLUME" title="Flume">
<service-check>false</service-check>
<skippable>true</skippable>
<parallel-scheduler/>
<service name="FLUME">
<component>FLUME_HANDLER</component>
</service>
</group>
<group xsi:type="restart" name="ACCUMULO" title="Accumulo">
<service-check>false</service-check>
<skippable>true</skippable>
<parallel-scheduler/>
<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>
</group>
<group name="SERVICE_CHECK_3" title="All Service Checks" xsi:type="service-check">
<skippable>true</skippable>
<direction>UPGRADE</direction>
<priority>
<service>FALCON</service>
<service>KNOX</service>
<service>STORM</service>
<service>SLIDER</service>
<service>FLUME</service>
<service>ACCUMULO</service>
</priority>
</group>
<group xsi:type="cluster" name="FINALIZE_PRE_CHECK" title="Finalize {{direction.text.proper}} Pre-Check">
<direction>UPGRADE</direction>
<execute-stage title="Check Component Versions">
<task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.ComponentVersionCheckAction" />
</execute-stage>
</group>
<group xsi:type="cluster" name="POST_CLUSTER" title="Finalize {{direction.text.proper}}">
<skippable>true</skippable>
<supports-auto-skip-failure>false</supports-auto-skip-failure>
<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>
<processing>
<service name="ZOOKEEPER">
<component name="ZOOKEEPER_SERVER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="ZOOKEEPER_CLIENT">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="RANGER">
<component name="RANGER_ADMIN">
<pre-upgrade>
<task xsi:type="execute" hosts="all">
<script>scripts/ranger_admin.py</script>
<function>set_pre_start</function>
</task>
<task xsi:type="execute" hosts="any" summary="Upgrading Ranger database schema">
<script>scripts/ranger_admin.py</script>
<function>setup_ranger_database</function>
</task>
<task xsi:type="configure_function" hosts="all" />
<task xsi:type="execute" hosts="any" summary="Applying Ranger java patches">
<script>scripts/ranger_admin.py</script>
<function>setup_ranger_java_patches</function>
</task>
</pre-upgrade>
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="RANGER_USERSYNC">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="RANGER_KMS">
<component name="RANGER_KMS_SERVER">
<pre-upgrade>
<task xsi:type="execute" hosts="any" sequential="true" summary="Upgrading Ranger KMS database schema">
<script>scripts/kms_server.py</script>
<function>setup_ranger_kms_database</function>
</task>
</pre-upgrade>
<pre-downgrade>
<task xsi:type="execute" hosts="any" sequential="true" summary="Downgrading Ranger KMS database schema">
<script>scripts/kms_server.py</script>
<function>setup_ranger_kms_database</function>
</task>
</pre-downgrade>
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="HDFS">
<component name="NAMENODE">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="SECONDARY_NAMENODE">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="DATANODE">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="HDFS_CLIENT">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="JOURNALNODE">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="ZKFC">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="NFS_GATEWAY">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="KAFKA">
<component name="KAFKA_BROKER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="MAPREDUCE2">
<component name="HISTORYSERVER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="MAPREDUCE2_CLIENT">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="YARN">
<component name="APP_TIMELINE_SERVER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="RESOURCEMANAGER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="NODEMANAGER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="YARN_CLIENT">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="HBASE">
<component name="HBASE_MASTER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="HBASE_REGIONSERVER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="HBASE_CLIENT">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="TEZ">
<component name="TEZ_CLIENT">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="MAHOUT">
<component name="MAHOUT">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="PIG">
<component name="PIG">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="SQOOP">
<component name="SQOOP">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="HIVE">
<component name="HIVE_METASTORE">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="HIVE_SERVER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="WEBHCAT_SERVER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="HIVE_CLIENT">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="HCAT">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="SPARK">
<component name="SPARK_JOBHISTORYSERVER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="SPARK_THRIFTSERVER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="SPARK_CLIENT">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="OOZIE">
<component name="OOZIE_SERVER">
<pre-upgrade>
<!-- It is extremely important that both of these tasks run on the exact same host. Hence, pick the first alphabetically. -->
<task xsi:type="configure_function" hosts="first" />
<task xsi:type="execute" hosts="first" sequential="true" summary="Upgrading the Oozie database and creating a new sharelib">
<script>scripts/oozie_server_upgrade.py</script>
<function>upgrade_oozie_database_and_sharelib</function>
</task>
</pre-upgrade>
<pre-downgrade>
<task xsi:type="execute" hosts="any" sequential="true" summary="Create a new sharelib">
<script>scripts/oozie_server_upgrade.py</script>
<function>create_sharelib</function>
</task>
</pre-downgrade>
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="OOZIE_CLIENT">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="FALCON">
<component name="FALCON_SERVER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="FALCON_CLIENT">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="KNOX">
<component name="KNOX_GATEWAY">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="STORM">
<component name="NIMBUS">
<pre-upgrade>
<task xsi:type="execute" hosts="any" summary="Removing Storm data from ZooKeeper">
<script>scripts/storm_upgrade.py</script>
<function>delete_storm_zookeeper_data</function>
</task>
<task xsi:type="execute" summary="Removing local Storm data">
<script>scripts/storm_upgrade.py</script>
<function>delete_storm_local_data</function>
</task>
</pre-upgrade>
<pre-downgrade>
<task xsi:type="execute" hosts="any" summary="Removing Storm data from ZooKeeper">
<script>scripts/storm_upgrade.py</script>
<function>delete_storm_zookeeper_data</function>
</task>
<task xsi:type="execute" summary="Removing local Storm data">
<script>scripts/storm_upgrade.py</script>
<function>delete_storm_local_data</function>
</task>
</pre-downgrade>
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="SUPERVISOR">
<pre-upgrade>
<task xsi:type="execute" summary="Removing local Storm data">
<script>scripts/storm_upgrade.py</script>
<function>delete_storm_local_data</function>
</task>
</pre-upgrade>
<pre-downgrade>
<task xsi:type="manual">
<message>Before continuing, please deactivate and kill any currently running topologies.</message>
</task>
<task xsi:type="execute" summary="Removing local Storm data">
<script>scripts/storm_upgrade.py</script>
<function>delete_storm_local_data</function>
</task>
</pre-downgrade>
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="STORM_UI_SERVER">
<pre-upgrade>
<task xsi:type="execute" summary="Removing local Storm data">
<script>scripts/storm_upgrade.py</script>
<function>delete_storm_local_data</function>
</task>
</pre-upgrade>
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="DRPC_SERVER">
<pre-upgrade>
<task xsi:type="execute" summary="Removing local Storm data">
<script>scripts/storm_upgrade.py</script>
<function>delete_storm_local_data</function>
</task>
</pre-upgrade>
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
<post-upgrade>
<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>
</post-upgrade>
</component>
</service>
<service name="ACCUMULO">
<component name="ACCUMULO_MASTER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="ACCUMULO_TSERVER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="ACCUMULO_MONITOR">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="ACCUMULO_GC">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="ACCUMULO_TRACER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
<component name="ACCUMULO_CLIENT">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="SLIDER">
<component name="SLIDER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
<service name="FLUME">
<component name="FLUME_HANDLER">
<upgrade>
<task xsi:type="restart-task"/>
</upgrade>
</component>
</service>
</processing>
</upgrade>