This is an automated email from the ASF dual-hosted git repository.
ncole pushed a commit to branch branch-feature-AMBARI-14714
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/branch-feature-AMBARI-14714 by
this push:
new 859dbef [AMBARI-23036] Create Lifecycle changes for Upgrade Packs
(#430)
859dbef is described below
commit 859dbeff4858ffd33dd2664b8cb27dd724d2eef0
Author: ncole <[email protected]>
AuthorDate: Wed Feb 21 13:55:44 2018 -0500
[AMBARI-23036] Create Lifecycle changes for Upgrade Packs (#430)
* [AMBARI-23036] Create Lifecycle changes for Upgrade Packs
* [AMBARI-23036] Update new enum for ordering (review comments)
---
.../ambari/annotations/ExperimentalFeature.java | 8 +-
.../apache/ambari/server/state/UpgradeContext.java | 3 +-
.../apache/ambari/server/state/UpgradeHelper.java | 3 +-
.../ambari/server/state/stack/UpgradePack.java | 55 +-
.../server/state/stack/upgrade/Lifecycle.java | 133 +++
ambari-server/src/main/resources/upgrade-pack.xsd | 59 +-
.../ambari/server/state/stack/UpgradePackTest.java | 74 ++
.../mpacks-v2/upgrade-packs/upgrade-basic.xml | 1147 ++++++++++++++++++++
8 files changed, 1439 insertions(+), 43 deletions(-)
diff --git
a/ambari-server/src/main/java/org/apache/ambari/annotations/ExperimentalFeature.java
b/ambari-server/src/main/java/org/apache/ambari/annotations/ExperimentalFeature.java
index 35c3c2f..94be177 100644
---
a/ambari-server/src/main/java/org/apache/ambari/annotations/ExperimentalFeature.java
+++
b/ambari-server/src/main/java/org/apache/ambari/annotations/ExperimentalFeature.java
@@ -45,5 +45,11 @@ public enum ExperimentalFeature {
/**
* For code that is for multi-service
*/
- MULTI_SERVICE
+ MULTI_SERVICE,
+
+ /**
+ * For code that is for upgrading Mpacks. Use this to mark code that may
ultimately
+ * be removed.
+ */
+ MPACK_UPGRADES
}
diff --git
a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java
b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java
index befa31b..7525e6f 100644
---
a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java
+++
b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java
@@ -74,6 +74,7 @@ import org.apache.ambari.server.state.stack.upgrade.Grouping;
import org.apache.ambari.server.state.stack.upgrade.HostOrderGrouping;
import org.apache.ambari.server.state.stack.upgrade.HostOrderItem;
import
org.apache.ambari.server.state.stack.upgrade.HostOrderItem.HostOrderActionType;
+import org.apache.ambari.server.state.stack.upgrade.Lifecycle;
import org.apache.ambari.server.state.stack.upgrade.UpgradeScope;
import org.apache.ambari.server.state.stack.upgrade.UpgradeType;
import org.apache.commons.collections.CollectionUtils;
@@ -1296,7 +1297,7 @@ public class UpgradeContext {
// verify that the upgradepack has the required grouping and set the
// action items on it
HostOrderGrouping hostOrderGrouping = null;
- List<Grouping> groupings = upgradePack.getGroups(direction);
+ List<Grouping> groupings =
upgradePack.getGroups(Lifecycle.LifecycleType.UPGRADE, direction);
for (Grouping grouping : groupings) {
if (grouping instanceof HostOrderGrouping) {
hostOrderGrouping = (HostOrderGrouping) grouping;
diff --git
a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
index 0af6840..bad222c 100644
---
a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
+++
b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
@@ -61,6 +61,7 @@ import org.apache.ambari.server.state.stack.UpgradePack;
import org.apache.ambari.server.state.stack.UpgradePack.ProcessingComponent;
import org.apache.ambari.server.state.stack.upgrade.Direction;
import org.apache.ambari.server.state.stack.upgrade.Grouping;
+import org.apache.ambari.server.state.stack.upgrade.Lifecycle;
import org.apache.ambari.server.state.stack.upgrade.ManualTask;
import org.apache.ambari.server.state.stack.upgrade.RestartTask;
import org.apache.ambari.server.state.stack.upgrade.ServiceCheckGrouping;
@@ -301,7 +302,7 @@ public class UpgradeHelper {
List<UpgradeGroupHolder> groups = new ArrayList<>();
UpgradeGroupHolder previousGroupHolder = null;
- for (Grouping group : upgradePack.getGroups(context.getDirection())) {
+ for (Grouping group :
upgradePack.getGroups(Lifecycle.LifecycleType.UPGRADE, context.getDirection()))
{
// !!! grouping is not scoped to context
if (!context.isScoped(group.scope)) {
diff --git
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java
index 7fb04f5..c69df9e 100644
---
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java
+++
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java
@@ -18,11 +18,13 @@
package org.apache.ambari.server.state.stack;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.regex.Pattern;
import javax.xml.bind.Unmarshaller;
@@ -35,12 +37,15 @@ import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlValue;
+import org.apache.ambari.annotations.Experimental;
+import org.apache.ambari.annotations.ExperimentalFeature;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.state.stack.upgrade.ClusterGrouping;
import org.apache.ambari.server.state.stack.upgrade.ConfigureTask;
import org.apache.ambari.server.state.stack.upgrade.CreateAndConfigureTask;
import org.apache.ambari.server.state.stack.upgrade.Direction;
import org.apache.ambari.server.state.stack.upgrade.Grouping;
+import org.apache.ambari.server.state.stack.upgrade.Lifecycle;
import org.apache.ambari.server.state.stack.upgrade.ServiceCheckGrouping;
import org.apache.ambari.server.state.stack.upgrade.Task;
import org.apache.ambari.server.state.stack.upgrade.UpgradeType;
@@ -55,8 +60,6 @@ import org.slf4j.LoggerFactory;
@XmlAccessorType(XmlAccessType.FIELD)
public class UpgradePack {
- private static final String ALL_VERSIONS = "*";
-
private static final Logger LOG = LoggerFactory.getLogger(UpgradePack.class);
/**
@@ -70,9 +73,8 @@ public class UpgradePack {
@XmlElement(name="target-stack")
private String targetStack;
- @XmlElementWrapper(name="order")
- @XmlElement(name="group")
- private List<Grouping> groups;
+ @XmlElement(name="lifecycle")
+ public List<Lifecycle> lifecycles;
@XmlElement(name="prerequisite-checks")
private PrerequisiteChecks prerequisiteChecks;
@@ -152,8 +154,8 @@ public class UpgradePack {
*/
public List<String> getPrerequisiteChecks() {
if (prerequisiteChecks == null) {
- return new ArrayList<String>();
- }
+ return new ArrayList<>();
+ }
return new ArrayList<>(prerequisiteChecks.checks);
}
@@ -164,7 +166,7 @@ public class UpgradePack {
public PrerequisiteCheckConfig getPrerequisiteCheckConfig() {
if (prerequisiteChecks == null) {
return new PrerequisiteCheckConfig();
- }
+ }
return prerequisiteChecks.configuration;
}
@@ -281,8 +283,16 @@ public class UpgradePack {
return skipServiceCheckFailures;
}
+ /**
+ * Used to get all groups defined for an upgrade. This method is deprecated
as orchestration
+ * will change to per-lifecycle. At the time of writing, keep this for
compilation purposes.
+ * @return
+ */
+ @Experimental(feature = ExperimentalFeature.MPACK_UPGRADES)
+ @Deprecated
public List<Grouping> getAllGroups() {
- return groups;
+
+ return Collections.emptyList();
}
/**
@@ -293,19 +303,28 @@ public class UpgradePack {
* the direction to return the ordered groups
* @return the list of groups
*/
- public List<Grouping> getGroups(Direction direction) {
- List<Grouping> list = new ArrayList<>();
+ public List<Grouping> getGroups(Lifecycle.LifecycleType type, Direction
direction) {
+
+ // !!! lifecycles are bound to be only one per-type per-Upgrade Pack, so
findFirst() is ok here
+ Optional<Lifecycle> optional = lifecycles.stream().filter(l -> l.type ==
type).findFirst();
+ if (!optional.isPresent()) {
+ return Collections.<Grouping>emptyList();
+ }
+
+ List<Grouping> list;
+ List<Grouping> groups = optional.get().groups;
+
if (direction.isUpgrade()) {
list = groups;
} else {
- switch (type) {
+ switch (this.type) {
case NON_ROLLING:
- list = getDowngradeGroupsForNonrolling();
+ list = getDowngradeGroupsForNonrolling(groups);
break;
case HOST_ORDERED:
case ROLLING:
default:
- list = getDowngradeGroupsForRolling();
+ list = getDowngradeGroupsForRolling(groups);
break;
}
}
@@ -369,7 +388,7 @@ public class UpgradePack {
* </ol>
* @return the list of groups, reversed appropriately for a downgrade.
*/
- private List<Grouping> getDowngradeGroupsForRolling() {
+ private List<Grouping> getDowngradeGroupsForRolling(List<Grouping> groups) {
List<Grouping> reverse = new ArrayList<>();
// !!! Testing exposed groups.size() == 1 issue. Normally there's no
precedent for
@@ -405,7 +424,7 @@ public class UpgradePack {
return reverse;
}
- private List<Grouping> getDowngradeGroupsForNonrolling() {
+ private List<Grouping> getDowngradeGroupsForNonrolling(List<Grouping>
groups) {
List<Grouping> list = new ArrayList<>();
for (Grouping g : groups) {
list.add(g);
@@ -477,8 +496,10 @@ public class UpgradePack {
* @return {@code true} if the upgrade targets any version or stack. Both
* {@link #target} and {@link #targetStack} must equal "*"
*/
+ @Deprecated
+ @Experimental(feature=ExperimentalFeature.MPACK_UPGRADES)
public boolean isAllTarget() {
- return ALL_VERSIONS.equals(target) && ALL_VERSIONS.equals(targetStack);
+ return false;
}
diff --git
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Lifecycle.java
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Lifecycle.java
new file mode 100644
index 0000000..3d75892
--- /dev/null
+++
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Lifecycle.java
@@ -0,0 +1,133 @@
+/*
+ * 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.
+ */
+package org.apache.ambari.server.state.stack.upgrade;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * A lifecycle is used to delineate specific portions of an upgrade.
Orchestration
+ * will occur based on the lifecycle phases in order they are declared in
{@link LifecycleType},
+ * namely:
+ *
+ * <ol>
+ * <li>INSTALL</li>
+ * <li>QUIET</li>
+ * <li>SNAPSHOT</li>
+ * <li>PREPARE</li>
+ * <li>STOP</li>
+ * <li>UPGRADE</li>
+ * <li>START</li>
+ * <li>FINALIZE</li>
+ * </ol>
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlRootElement
+public class Lifecycle {
+
+ @XmlAttribute
+ public LifecycleType type;
+
+ @XmlElementWrapper(name="order")
+ @XmlElement(name="group")
+ public List<Grouping> groups;
+
+ /**
+ * Identifies the lifecycle types
+ */
+ @XmlEnum
+ public enum LifecycleType {
+
+ /**
+ * Work required that can be classified as installation. Normally
installation of
+ * bits occurs outside the scope of upgrade orchestration.
+ */
+ @XmlEnumValue("install")
+ INSTALL(1.0f),
+
+ /**
+ * Work to stop and wait on, for example, queues or topologies.
+ */
+ @XmlEnumValue("quiet")
+ QUIET(2.0f),
+
+ /**
+ * Work required to snapshot or other backup.
+ */
+ @XmlEnumValue("snapshot")
+ SNAPSHOT(3.0f),
+
+ /**
+ * Work required to prepare to upgrade.
+ */
+ @XmlEnumValue("prepare")
+ PREPARE(4.0f),
+
+ /**
+ * Work required to stop a service.
+ */
+ @XmlEnumValue("stop")
+ STOP(5.0f),
+
+ /**
+ * For a Rolling upgrade, work required to restart and upgrade the service.
+ */
+ @XmlEnumValue("upgrade")
+ UPGRADE(6.0f),
+
+ /**
+ * Work required to start a service.
+ */
+ @XmlEnumValue("start")
+ START(7.0f),
+
+ /**
+ * Work required to finalize. Will not happen until the end of the
upgrade.
+ */
+ @XmlEnumValue("finalize")
+ FINALIZE(8.0f);
+
+ private float m_order;
+
+ private LifecycleType(float order) {
+ m_order = order;
+ }
+
+
+ /**
+ * Returns the ordered collection of lifecycle types. This is prefered
over {@link #values()}
+ * to preserve ordering when adding new values.
+ */
+ public static Collection<LifecycleType> ordered() {
+ return Stream.of(LifecycleType.values()).sorted((l1, l2) ->
+ Float.compare(l1.m_order, l2.m_order)).collect(Collectors.toList());
+ }
+ }
+
+}
diff --git a/ambari-server/src/main/resources/upgrade-pack.xsd
b/ambari-server/src/main/resources/upgrade-pack.xsd
index 249db23..d005204 100644
--- a/ambari-server/src/main/resources/upgrade-pack.xsd
+++ b/ambari-server/src/main/resources/upgrade-pack.xsd
@@ -19,10 +19,23 @@
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.1">
<xs:annotation>
<xs:documentation>
- This document describes the schema for an Upgrade Pack
+ This document describes the schema for an Upgrade Pack for a Management
Pack
</xs:documentation>
</xs:annotation>
+ <xs:simpleType name="lifecycle-type">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="install" />
+ <xs:enumeration value="quiet" />
+ <xs:enumeration value="snapshot" />
+ <xs:enumeration value="prepare" />
+ <xs:enumeration value="stop" />
+ <xs:enumeration value="upgrade" /> <!-- restart -->
+ <xs:enumeration value="start" />
+ <xs:enumeration value="finalize" />
+ </xs:restriction>
+ </xs:simpleType>
+
<!-- FIXME case sensitivity -->
<xs:simpleType name="upgrade-kind-type">
<xs:restriction base="xs:string">
@@ -272,7 +285,7 @@
<xs:complexType name="abstract-task-type" abstract="true">
<xs:sequence>
- <xs:element name="condition" type="abstract-condition-type"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="condition" type="abstract-condition-type"
minOccurs="0" maxOccurs="1" />
<xs:element name="scope" minOccurs="0" type="scope-type" />
<xs:element name="summary" minOccurs="0" />
</xs:sequence>
@@ -410,18 +423,6 @@
</xs:sequence>
</xs:complexType>
- <xs:complexType name="upgrade-path-type">
- <xs:sequence>
- <xs:element name="intermediate-stack" minOccurs="1"
maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence />
- <xs:attribute name="version" />
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
-
<xs:element name="upgrade">
<xs:annotation>
<xs:documentation>
@@ -438,15 +439,21 @@
<xs:element name="downgrade-allowed" minOccurs="0" type="xs:boolean" />
<xs:element name="type" type="upgrade-kind-type" />
<xs:element name="prerequisite-checks" type="prerequisite-check-type"
minOccurs="0" />
- <xs:element name="upgrade-path" type="upgrade-path-type" minOccurs="0"
/>
- <xs:element name="order" type="order-type">
- <xs:unique name="unique-by-group">
- <xs:annotation>
- <xs:documentation>Ensures that the element "processing" does not
have duplicate services</xs:documentation>
- </xs:annotation>
- <xs:selector xpath="group" />
- <xs:field xpath="@name" />
- </xs:unique>
+ <xs:element name="lifecycle" minOccurs="1" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="order" type="order-type">
+ <xs:unique name="unique-by-group">
+ <xs:annotation>
+ <xs:documentation>Ensures that the element "processing"
does not have duplicate services</xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath="lifecycle/group" />
+ <xs:field xpath="@name" />
+ </xs:unique>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="type" type="lifecycle-type" use="required" />
+ </xs:complexType>
</xs:element>
<xs:element name="processing" type="processing-type">
<xs:unique name="unique-by-service">
@@ -466,6 +473,12 @@
</xs:element>
</xs:sequence>
</xs:complexType>
+
+ <xs:unique name="unique-by-lifecycle">
+ <xs:selector xpath="lifecycle" />
+ <xs:field xpath="@type" />
+ </xs:unique>
+
</xs:element>
diff --git
a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java
b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java
new file mode 100644
index 0000000..24c0379
--- /dev/null
+++
b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java
@@ -0,0 +1,74 @@
+/**
+ * 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.
+ */
+package org.apache.ambari.server.state.stack;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
+
+import org.apache.ambari.server.stack.ModuleFileUnmarshaller;
+import org.apache.ambari.server.state.stack.upgrade.Grouping;
+import org.apache.ambari.server.state.stack.upgrade.Lifecycle;
+import org.apache.ambari.server.state.stack.upgrade.Lifecycle.LifecycleType;
+import org.junit.Test;
+
+/**
+ * Tests for the upgrade pack
+ */
+public class UpgradePackTest {
+
+ @Test
+ public void testLifecycleOrdering() throws Exception {
+ Collection<LifecycleType> typeSet = LifecycleType.ordered();
+
+ LifecycleType[] types = typeSet.toArray(new LifecycleType[typeSet.size()]);
+
+ assertEquals(LifecycleType.INSTALL, types[0]);
+ assertEquals(LifecycleType.FINALIZE, types[types.length-1]);
+ }
+
+ @Test
+ public void testUpgradeParsing() throws Exception {
+ File f = new
File("src/test/resources/mpacks-v2/upgrade-packs/upgrade-basic.xml");
+
+ ModuleFileUnmarshaller unmarshaller = new ModuleFileUnmarshaller();
+
+ UpgradePack upgradepack = unmarshaller.unmarshal(UpgradePack.class, f,
true);
+
+ assertEquals(6, upgradepack.lifecycles.size());
+
+ Optional<Lifecycle> upgradeLifecycle = upgradepack.lifecycles.stream()
+ .filter(l -> l.type == LifecycleType.UPGRADE).findFirst();
+
+ Optional<Lifecycle> startLifecycle = upgradepack.lifecycles.stream()
+ .filter(l -> l.type == LifecycleType.START).findFirst();
+
+ assertTrue(upgradeLifecycle.isPresent());
+ assertFalse(startLifecycle.isPresent());
+
+ List<Grouping> groups = upgradeLifecycle.get().groups;
+
+ assertEquals(29, groups.size());
+ }
+
+}
diff --git
a/ambari-server/src/test/resources/mpacks-v2/upgrade-packs/upgrade-basic.xml
b/ambari-server/src/test/resources/mpacks-v2/upgrade-packs/upgrade-basic.xml
new file mode 100644
index 0000000..83efb0e
--- /dev/null
+++ b/ambari-server/src/test/resources/mpacks-v2/upgrade-packs/upgrade-basic.xml
@@ -0,0 +1,1147 @@
+<?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"
xsi:noNamespaceSchemaLocation="upgrade-pack.xsd">
+ <target>2.6.*.*</target>
+ <target-stack>HDP-2.6</target-stack>
+ <skip-failures>false</skip-failures>
+ <skip-service-check-failures>false</skip-service-check-failures>
+ <type>ROLLING</type>
+ <prerequisite-checks>
+ <!-- List of additional pre-req checks to run in addition to the required
pre-reqs -->
+ <check>org.apache.ambari.server.checks.HiveMultipleMetastoreCheck</check>
+
<check>org.apache.ambari.server.checks.MapReduce2JobHistoryStatePreservingCheck</check>
+
<check>org.apache.ambari.server.checks.SecondaryNamenodeDeletedCheck</check>
+
<check>org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck</check>
+
<check>org.apache.ambari.server.checks.ServicesNamenodeHighAvailabilityCheck</check>
+
<check>org.apache.ambari.server.checks.ServicesTezDistributedCacheCheck</check>
+
<check>org.apache.ambari.server.checks.ServicesYarnWorkPreservingCheck</check>
+ <check>org.apache.ambari.server.checks.YarnRMHighAvailabilityCheck</check>
+
<check>org.apache.ambari.server.checks.YarnTimelineServerStatePreservingCheck</check>
+ <check>org.apache.ambari.server.checks.DruidHighAvailabilityCheck</check>
+ <check>org.apache.ambari.server.checks.LZOCheck</check>
+
+ <configuration>
+ <!-- Configuration properties for all pre-reqs including required
pre-reqs -->
+ <!--TODO: is it required? -->
+ <check-properties
name="org.apache.ambari.server.checks.HiveDynamicServiceDiscoveryCheck">
+ <property name="min-failure-stack-version">HDP-2.3.0.0</property>
+ </check-properties>
+ </configuration>
+ </prerequisite-checks>
+
+ <lifecycle type="install">
+ <order>
+ <group />
+ </order>
+ </lifecycle>
+
+ <lifecycle type="quiet">
+ <order>
+ <group />
+ </order>
+ </lifecycle>
+
+ <lifecycle type="prepare">
+ <order>
+ <group xsi:type="cluster" name="PRE_CLUSTER" title="Prepare Upgrade">
+ <direction>UPGRADE</direction>
+ <execute-stage service="HDFS" component="NAMENODE" title="Pre Upgrade
HDFS">
+ <task xsi:type="execute" hosts="master">
+ <script>scripts/namenode.py</script>
+ <function>prepare_rolling_upgrade</function>
+ </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>
+ </order>
+ </lifecycle>
+
+ <lifecycle type="snapshot">
+ <order>
+ <group xsi:type="cluster" name="PREPARE_BACKUPS" title="Prepare Backups">
+ <direction>UPGRADE</direction>
+ <skippable>true</skippable>
+ <supports-auto-skip-failure>false</supports-auto-skip-failure>
+
+ <execute-stage service="HBASE" component="HBASE_MASTER" title="Pre
Upgrade HBase Backup">
+ <task xsi:type="execute" hosts="master">
+ <script>scripts/hbase_upgrade.py</script>
+ <function>take_snapshot</function>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="HIVE" component="HIVE_METASTORE" title="Pre
Upgrade Hive Backup">
+ <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="OOZIE" component="OOZIE_SERVER" title="Pre
Upgrade Oozie Backup">
+ <task xsi:type="manual">
+ <message>Before continuing, please backup the Oozie Server
database referenced by the Oozie server located on {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Pre
Upgrade Ranger Admin Backup">
+ <task xsi:type="manual">
+ <message>Before continuing, please backup the Ranger Admin
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 Backup">
+ <task xsi:type="manual">
+ <message>Before continuing, please backup Ranger KMS database on
the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+ <execute-stage service="ZEPPELIN" component="ZEPPELIN_MASTER"
title="Pre Upgrade Zeppelin notebooks Backup">
+ <task xsi:type="manual">
+ <message>Before continuing, please backup Zeppelin notebooks
directory on the following host(s): {{hosts.all}}.</message>
+ </task>
+ </execute-stage>
+ </group>
+ </order>
+ </lifecycle>
+
+ <lifecycle type="upgrade">
+ <order>
+ <group name="ZOOKEEPER" title="ZooKeeper">
+ <supports-auto-skip-failure>false</supports-auto-skip-failure>
+ <service name="ZOOKEEPER">
+ <component>ZOOKEEPER_SERVER</component>
+ </service>
+ </group>
+
+ <group name="RANGER" title="Ranger">
+ <skippable>true</skippable>
+ <supports-auto-skip-failure>false</supports-auto-skip-failure>
+ <service name="RANGER">
+ <component>RANGER_ADMIN</component>
+ <component>RANGER_USERSYNC</component>
+ <component>RANGER_TAGSYNC</component>
+ </service>
+ </group>
+
+ <group name="RANGER_KMS" title="Ranger_KMS">
+ <skippable>true</skippable>
+ <supports-auto-skip-failure>false</supports-auto-skip-failure>
+ <service name="RANGER_KMS">
+ <component>RANGER_KMS_SERVER</component>
+ </service>
+ </group>
+
+
+ <group name="KAFKA" title="Kafka">
+ <skippable>true</skippable>
+ <service name="KAFKA">
+ <component>KAFKA_BROKER</component>
+ </service>
+ </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">
+ <condition xsi:type="security" type="kerberos"/>
+ <execute-stage title="Update the user-specified Kerberos descriptor">
+ <task xsi:type="server_action"
class="org.apache.ambari.server.serveraction.upgrades.UpgradeUserKerberosDescriptor"/>
+ </execute-stage>
+ </group>
+
+ <group name="CORE_MASTER" title="Core Masters">
+ <service-check>false</service-check>
+ <service name="HDFS">
+ <component>NAMENODE</component>
+ <component>JOURNALNODE</component>
+ <component>ZKFC</component>
+ </service>
+
+ <service name="MAPREDUCE2">
+ <component>HISTORYSERVER</component>
+ </service>
+
+ <service name="YARN">
+ <component>APP_TIMELINE_SERVER</component>
+ <component>RESOURCEMANAGER</component>
+ </service>
+
+ <service name="HBASE">
+ <component>HBASE_MASTER</component>
+ </service>
+ </group>
+
+ <group name="SERVICE_CHECK_1" title="All Service Checks"
xsi:type="service-check">
+ <direction>UPGRADE</direction>
+ <skippable>true</skippable>
+ <priority>
+ <service>ZOOKEEPER</service>
+ <service>HDFS</service>
+ <service>YARN</service>
+ <service>MAPREDUCE2</service>
+ <service>HBASE</service>
+ </priority>
+ <exclude>
+ <service>AMBARI_METRICS</service>
+ <service>LOGSEARCH</service>
+ </exclude>
+ </group>
+
+ <group name="CORE_SLAVES" title="Core Slaves" xsi:type="colocated">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="HDFS">
+ <component>DATANODE</component>
+ <component>NFS_GATEWAY</component>
+ </service>
+
+ <service name="HBASE">
+ <component>HBASE_REGIONSERVER</component>
+ <component>PHOENIX_QUERY_SERVER</component>
+ </service>
+
+ <service name="YARN">
+ <component>NODEMANAGER</component>
+ </service>
+
+ <batch>
+ <percent>20</percent>
+ <summary>Verification Required</summary>
+ <message>The initial batch of {{components}} hosts have been
{{direction.past}}. You are advised to check the hosts and perform
cluster/workload-specific tests against your cluster to ensure proper operation
before proceeding with {{direction.text}} of the remaining services.</message>
+ </batch>
+ </group>
+
+ <group name="SERVICE_CHECK_2" title="All Service Checks"
xsi:type="service-check">
+ <direction>UPGRADE</direction>
+ <skippable>true</skippable>
+ <priority>
+ <service>ZOOKEEPER</service>
+ <service>HDFS</service>
+ <service>YARN</service>
+ <service>HBASE</service>
+ </priority>
+ <exclude>
+ <service>AMBARI_METRICS</service>
+ <service>LOGSEARCH</service>
+ </exclude>
+ </group>
+
+ <!-- Slider must be upgraded before higher-level apps that need to run
apps on Slider, such as Hive. -->
+ <group name="SLIDER" title="Slider">
+ <skippable>true</skippable>
+ <service name="SLIDER">
+ <component>SLIDER</component>
+ </service>
+ </group>
+
+ <group name="HIVE" title="Hive">
+ <skippable>true</skippable>
+ <supports-auto-skip-failure>false</supports-auto-skip-failure>
+ <service name="HIVE">
+ <component>HIVE_SERVER</component>
+ <component>HIVE_METASTORE</component>
+ <component>HIVE_SERVER_INTERACTIVE</component>
+ <component>WEBHCAT_SERVER</component>
+ </service>
+ </group>
+
+ <group name="SPARK" title="Spark">
+ <skippable>true</skippable>
+ <supports-auto-skip-failure>false</supports-auto-skip-failure>
+ <service-check>false</service-check>
+ <service name="SPARK">
+ <component>SPARK_JOBHISTORYSERVER</component>
+ <component>SPARK_THRIFTSERVER</component>
+ <component>LIVY_SERVER</component>
+ </service>
+ </group>
+
+ <group name="SPARK2" title="Spark2">
+ <skippable>true</skippable>
+ <supports-auto-skip-failure>false</supports-auto-skip-failure>
+ <service-check>false</service-check>
+ <service name="SPARK2">
+ <component>SPARK2_JOBHISTORYSERVER</component>
+ <component>SPARK2_THRIFTSERVER</component>
+ <component>LIVY2_SERVER</component>
+ </service>
+ </group>
+
+ <group name="ZEPPELIN" title="Zeppelin">
+ <skippable>true</skippable>
+ <supports-auto-skip-failure>false</supports-auto-skip-failure>
+ <service-check>false</service-check>
+ <service name="ZEPPELIN">
+ <component>ZEPPELIN_MASTER</component>
+ </service>
+ </group>
+
+ <group name="SPARK_CLIENTS" title="Spark Clients">
+ <skippable>true</skippable>
+ <service name="SPARK">
+ <component>SPARK_CLIENT</component>
+ </service>
+ </group>
+
+ <group name="SPARK2_CLIENTS" title="Spark2 Clients">
+ <skippable>true</skippable>
+ <service name="SPARK2">
+ <component>SPARK2_CLIENT</component>
+ </service>
+ </group>
+
+ <group name="ATLAS" title="Atlas">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <supports-auto-skip-failure>false</supports-auto-skip-failure>
+ <service name="ATLAS">
+ <component>ATLAS_SERVER</component>
+ </service>
+ </group>
+
+ <group name="ATLAS_CLIENTS" title="Atlas Clients">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <supports-auto-skip-failure>true</supports-auto-skip-failure>
+ <service name="ATLAS">
+ <component>ATLAS_CLIENT</component>
+ </service>
+ </group>
+
+ <group name="OOZIE" title="Oozie">
+ <skippable>true</skippable>
+ <supports-auto-skip-failure>false</supports-auto-skip-failure>
+ <service-check>false</service-check>
+ <service name="OOZIE">
+ <component>OOZIE_SERVER</component>
+ </service>
+ </group>
+
+ <group name="OOZIE_CLIENTS" title="Oozie Clients">
+ <skippable>true</skippable>
+ <service name="OOZIE">
+ <component>OOZIE_CLIENT</component>
+ </service>
+ </group>
+
+ <group name="FALCON" title="Falcon">
+ <skippable>true</skippable>
+ <supports-auto-skip-failure>false</supports-auto-skip-failure>
+ <service-check>false</service-check>
+ <service name="FALCON">
+ <component>FALCON_SERVER</component>
+ </service>
+ </group>
+
+ <group name="FALCON_CLIENTS" title="Falcon Clients">
+ <skippable>true</skippable>
+ <service name="FALCON">
+ <component>FALCON_CLIENT</component>
+ </service>
+ </group>
+
+ <group name="CLIENTS" title="Client Components">
+ <service-check>false</service-check>
+ <service name="ZOOKEEPER">
+ <component>ZOOKEEPER_CLIENT</component>
+ </service>
+ <service name="HDFS">
+ <component>HDFS_CLIENT</component>
+ </service>
+
+ <service name="YARN">
+ <component>YARN_CLIENT</component>
+ </service>
+
+ <service name="MAPREDUCE2">
+ <component>MAPREDUCE2_CLIENT</component>
+ </service>
+
+ <service name="TEZ">
+ <component>TEZ_CLIENT</component>
+ </service>
+
+ <service name="HBASE">
+ <component>HBASE_CLIENT</component>
+ </service>
+
+ <service name="PIG">
+ <component>PIG</component>
+ </service>
+
+ <service name="SQOOP">
+ <component>SQOOP</component>
+ </service>
+
+ <service name="MAHOUT">
+ <component>MAHOUT</component>
+ </service>
+
+ <service name="HIVE">
+ <component>HIVE_CLIENT</component>
+ <component>HCAT</component>
+ </service>
+ </group>
+
+ <group name="DRUID" title="Druid">
+ <skippable>true</skippable>
+ <supports-auto-skip-failure>false</supports-auto-skip-failure>
+ <service-check>false</service-check>
+ <service name="DRUID">
+ <component>DRUID_HISTORICAL</component>
+ <component>DRUID_MIDDLEMANAGER</component>
+ <component>DRUID_BROKER</component>
+ <component>DRUID_ROUTER</component>
+ <component>DRUID_COORDINATOR</component>
+ <component>DRUID_OVERLORD</component>
+ <component>DRUID_SUPERSET</component>
+ </service>
+ </group>
+
+ <group name="SERVICE_CHECK_3" title="All Service Checks"
xsi:type="service-check">
+ <direction>UPGRADE</direction>
+ <skippable>true</skippable>
+ <priority>
+ <service>ZOOKEEPER</service>
+ <service>HDFS</service>
+ <service>YARN</service>
+ <service>HBASE</service>
+ <service>DRUID</service>
+ </priority>
+ <exclude>
+ <service>AMBARI_METRICS</service>
+ <service>LOGSEARCH</service>
+ </exclude>
+ </group>
+
+ <group name="KNOX" title="Knox">
+ <skippable>true</skippable>
+ <service name="KNOX">
+ <component>KNOX_GATEWAY</component>
+ </service>
+ </group>
+
+ <group name="STORM" title="Storm">
+ <skippable>true</skippable>
+ <service name="STORM">
+ <component>NIMBUS</component>
+ <component>SUPERVISOR</component>
+ <component>STORM_UI_SERVER</component>
+ <component>DRPC_SERVER</component>
+ </service>
+ </group>
+
+ <group name="FLUME" title="Flume">
+ <skippable>true</skippable>
+ <service name="FLUME">
+ <component>FLUME_HANDLER</component>
+ </service>
+ </group>
+
+ <group 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>
+ </group>
+ </order>
+ </lifecycle>
+
+ <lifecycle type="finalize">
+ <order>
+ <group xsi:type="cluster" name="ALL_HOST_OPS" title="Finalize Hosts">
+ <scope>COMPLETE</scope>
+ <execute-stage title="Update remaining HDP stack to {{version}}">
+ <task xsi:type="execute">
+ <script>scripts/ru_set_all.py</script>
+ <function>actionexecute</function>
+ </task>
+ </execute-stage>
+ </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="HBASE" component="HBASE_MASTER" title="Delete
HBase snapshots">
+ <direction>UPGRADE</direction>
+ <task xsi:type="manual">
+ <message>You can now remove any HBase snapshots which were created
at the beginning of the upgrade. To see existing snapshots, use the following
HBase shell command:</message>
+ <message>hbase> list_snapshots</message>
+ <message>Once you have found an existing snapshot which you would
like to remove, you can use the following command:</message>
+ <message>hbase> delete_snapshot 'snapshotName'</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_rolling_upgrade</function>
+ </task>
+ </execute-stage>
+
+ <execute-stage title="Save Cluster State">
+ <task xsi:type="server_action"
class="org.apache.ambari.server.serveraction.upgrades.FinalizeUpgradeAction">
+ </task>
+ </execute-stage>
+ </group>
+ </order>
+ </lifecycle>
+
+
+
+ <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">
+ <summary>Stop Ranger Admin</summary>
+ <script>scripts/ranger_admin.py</script>
+ <function>stop</function>
+ </task>
+
+ <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</summary>
+ <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</summary>
+ <script>scripts/ranger_admin.py</script>
+ <function>setup_ranger_java_patches</function>
+ </task>
+ </pre-upgrade>
+
+ <pre-downgrade copy-upgrade="true" />
+
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+
+ </component>
+
+ <component name="RANGER_USERSYNC">
+ <pre-upgrade>
+ <task xsi:type="server_action"
class="org.apache.ambari.server.serveraction.upgrades.RangerUsersyncConfigCalculation">
+ <summary>Enabling Nested Group Sync for Ranger</summary>
+ </task>
+ </pre-upgrade>
+
+ <pre-downgrade /> <!-- no-op to prevent config changes on downgrade
-->
+
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+
+ <component name="RANGER_TAGSYNC">
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ </service>
+
+ <service name="RANGER_KMS">
+ <component name="RANGER_KMS_SERVER">
+ <pre-upgrade>
+ <task xsi:type="configure"
id="hdp_2_6_maint_ranger_kms_plugin_cluster_name"/>
+ <task xsi:type="execute" hosts="any" sequential="true">
+ <summary>Upgrading Ranger KMS database schema</summary>
+ <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</summary>
+ <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="KAFKA">
+ <component name="KAFKA_BROKER">
+ <pre-upgrade>
+ <task xsi:type="configure"
id="hdp_2_6_maint_ranger_kafka_plugin_cluster_name"/>
+ </pre-upgrade>
+ <pre-downgrade/> <!-- no-op to prevent config changes on downgrade -->
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ </service>
+
+ <service name="HDFS">
+ <component name="NAMENODE">
+ <pre-upgrade>
+ <task xsi:type="configure"
id="hdp_2_6_maint_ranger_hdfs_plugin_cluster_name"/>
+ <task xsi:type="configure" id="hdfs_namenode_prevent_gc_heuristics"/>
+ </pre-upgrade>
+ <pre-downgrade/> <!-- no-op to prevent config changes on downgrade -->
+ <upgrade>
+ <task xsi:type="restart-task"
timeout-config="upgrade.parameter.nn-restart.timeout"/>
+ </upgrade>
+ </component>
+
+ <component name="DATANODE">
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+
+ <component name="NFS_GATEWAY">
+ <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>
+ </service>
+
+ <service name="SLIDER">
+ <component name="SLIDER">
+ <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">
+ <pre-upgrade>
+ <task xsi:type="server_action"
class="org.apache.ambari.server.serveraction.upgrades.FixLzoCodecPath">
+ <summary>Verifying LZO codec path for mapreduce</summary>
+ </task>
+
+ <task xsi:type="configure" id="hdp_2_6_mapreduce_tarball_ld_library"
supports-patch="true"/>
+ </pre-upgrade>
+
+ <pre-downgrade copy-upgrade="true" />
+
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ </service>
+
+ <service name="YARN">
+ <component name="APP_TIMELINE_SERVER">
+ <pre-upgrade>
+ <task xsi:type="configure"
id="hdp_2_6_yarn_spark_versioned_classpaths" supports-patch="true"/>
+ </pre-upgrade>
+ <pre-downgrade/>
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+
+ <component name="RESOURCEMANAGER">
+ <pre-upgrade>
+ <task xsi:type="configure"
id="hdp_2_6_maint_ranger_yarn_plugin_cluster_name"/>
+ <task xsi:type="configure" id="hdp_2_6_yarn_preemption" />
+ <task xsi:type="configure"
id="hdp_2_6_yarn_app_classpath_parameterization" supports-patch="true"/>
+ </pre-upgrade>
+ <pre-downgrade/> <!-- no-op to prevent config changes on downgrade -->
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+
+ <component name="NODEMANAGER">
+ <pre-upgrade>
+ <task xsi:type="configure"
id="hdp_2_6_0_0_yarn_nodemanager_llap_mem"/>
+ </pre-upgrade>
+ <pre-downgrade/> <!-- no-op to prevent config changes on downgrade -->
+ <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">
+ <pre-upgrade>
+ <task xsi:type="configure"
id="hdp_2_6_maint_ranger_hbase_plugin_cluster_name"/>
+ </pre-upgrade>
+ <pre-downgrade/> <!-- no-op to prevent config changes on downgrade -->
+ <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>
+
+ <component name="PHOENIX_QUERY_SERVER">
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ </service>
+
+ <service name="TEZ">
+ <component name="TEZ_CLIENT">
+ <pre-upgrade>
+ <task xsi:type="server_action"
class="org.apache.ambari.server.serveraction.upgrades.FixLzoCodecPath">
+ <summary>Verifying LZO codec path for Tez</summary>
+ </task>
+
+ <task xsi:type="configure" id="hdp_2_6_tez_tarball_ld_library"
supports-patch="true"/>
+ </pre-upgrade>
+
+ <pre-downgrade copy-upgrade="true" />
+
+ <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="MAHOUT">
+ <component name="MAHOUT">
+ <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">
+ <pre-upgrade>
+ <task xsi:type="configure"
id="hdp_2_6_maint_ranger_hive_plugin_cluster_name"/>
+ <task xsi:type="configure"
id="hdp_2_6_maint_ranger_hive_plugin_urlauth_filesystem_schemes"/>
+ <task xsi:type="configure"
id="hdp_2_6_maint_jaas_config_for_hive_hook"/>
+ </pre-upgrade>
+ <pre-downgrade/> <!-- no-op to prevent config changes on downgrade -->
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+
+ <component name="HIVE_SERVER_INTERACTIVE">
+ <pre-upgrade>
+ <task xsi:type="configure" id="llap_update_tez_shuffle_ssl_enable"/>
+ </pre-upgrade>
+ <pre-downgrade/> <!-- no-op to prevent config changes on downgrade -->
+ <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">
+ <pre-upgrade>
+ <task xsi:type="configure" id="hdp_2_6_0_0_spark_thriftserver"/>
+ </pre-upgrade>
+ <pre-downgrade />
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ <component name="LIVY_SERVER">
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ <component name="SPARK_CLIENT">
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ </service>
+
+ <service name="SPARK2">
+ <component name="SPARK2_JOBHISTORYSERVER">
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ <component name="SPARK2_THRIFTSERVER">
+ <pre-upgrade>
+ <task xsi:type="configure" id="hdp_2_6_0_0_spark2_thriftserver"/>
+ </pre-upgrade>
+ <pre-downgrade />
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ <component name="LIVY2_SERVER">
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ <component name="SPARK2_CLIENT">
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ </service>
+
+ <service name="ZEPPELIN">
+ <component name="ZEPPELIN_MASTER">
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ </service>
+
+ <service name="OOZIE">
+ <component name="OOZIE_SERVER">
+ <pre-upgrade>
+ <task xsi:type="execute" hosts="all" sequential="true">
+ <summary>Shut down all Oozie servers</summary>
+ <script>scripts/oozie_server.py</script>
+ <function>stop</function>
+ </task>
+
+ <task xsi:type="server_action"
class="org.apache.ambari.server.serveraction.upgrades.OozieConfigCalculation">
+ <summary>Adjusting Oozie properties</summary>
+ </task>
+
+ <!-- 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</summary>
+ <script>scripts/oozie_server_upgrade.py</script>
+ <function>upgrade_oozie_database_and_sharelib</function>
+ </task>
+ </pre-upgrade>
+
+ <pre-downgrade>
+ <task xsi:type="execute" hosts="all" sequential="true">
+ <summary>Shut down all Oozie servers</summary>
+ <script>scripts/oozie_server.py</script>
+ <function>stop</function>
+ </task>
+
+ <task xsi:type="execute" hosts="any" sequential="true">
+ <summary>Create a new sharelib</summary>
+ <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">
+ <pre-upgrade>
+ <task xsi:type="configure"
id="hdp_2_6_maint_ranger_knox_plugin_cluster_name"/>
+ </pre-upgrade>
+ <pre-downgrade/> <!-- no-op to prevent config changes on downgrade -->
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ </service>
+
+ <service name="STORM">
+ <component name="NIMBUS">
+ <pre-upgrade>
+ <task xsi:type="configure"
id="hdp_2_6_maint_ranger_storm_plugin_cluster_name"/>
+ <task xsi:type="configure" id="storm_remove_jmxetric"
supports-patch="true"/>
+ </pre-upgrade>
+ <pre-downgrade/> <!-- no-op to prevent config changes on downgrade -->
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ <component name="SUPERVISOR">
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ <component name="STORM_UI_SERVER">
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ <component name="DRPC_SERVER">
+ <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>
+
+ <service name="ACCUMULO">
+ <component name="ACCUMULO_MASTER">
+ <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_TSERVER">
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ <component name="ACCUMULO_CLIENT">
+ <upgrade>
+ <task xsi:type="restart-task" />
+ </upgrade>
+ </component>
+ </service>
+
+ <service name="ATLAS">
+ <component name="ATLAS_SERVER">
+ <pre-upgrade>
+ <task xsi:type="configure"
id="hdp_2_6_maint_ranger_atlas_plugin_cluster_name"/>
+ <task xsi:type="configure" id="atlas_env_gc_worker"/>
+ <task xsi:type="configure"
id="hdp_2_6_atlas_kafka_auto_commit_enable_property_delete"/>
+ <task xsi:type="configure" id="atlas_log4j_update_logger_settings"/>
+ <task xsi:type="configure" id="atlas_hbase_conf_dir"/>
+ <task xsi:type="server_action"
class="org.apache.ambari.server.serveraction.upgrades.AtlasProxyUserConfigCalculation"
>
+ <summary>Applying Atlas proxy-user configurations.</summary>
+ </task>
+ </pre-upgrade>
+ <pre-downgrade/> <!-- no-op to prevent config changes on downgrade -->
+ <upgrade>
+ <task xsi:type="restart-task"/>
+ </upgrade>
+ </component>
+ <component name="ATLAS_CLIENT">
+ <upgrade>
+ <task xsi:type="restart-task"/>
+ </upgrade>
+ </component>
+ </service>
+
+ <service name="DRUID">
+ <component name="DRUID_HISTORICAL">
+ <upgrade>
+ <task xsi:type="restart-task"/>
+ </upgrade>
+ </component>
+ <component name="DRUID_MIDDLEMANAGER">
+ <upgrade>
+ <task xsi:type="restart-task"/>
+ </upgrade>
+ </component>
+ <component name="DRUID_BROKER">
+ <upgrade>
+ <task xsi:type="restart-task"/>
+ </upgrade>
+ </component>
+ <component name="DRUID_ROUTER">
+ <upgrade>
+ <task xsi:type="restart-task"/>
+ </upgrade>
+ </component>
+ <component name="DRUID_COORDINATOR">
+ <upgrade>
+ <task xsi:type="restart-task"/>
+ </upgrade>
+ </component>
+ <component name="DRUID_OVERLORD">
+ <upgrade>
+ <task xsi:type="restart-task"/>
+ </upgrade>
+ </component>
+ <component name="DRUID_SUPERSET">
+ <upgrade>
+ <task xsi:type="restart-task"/>
+ </upgrade>
+ </component>
+ </service>
+
+ </processing>
+</upgrade>
--
To stop receiving notification emails like this one, please contact
[email protected].