You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by tt...@apache.org on 2017/06/26 14:59:00 UTC

ambari git commit: AMBARI-21206 - Remove Zookeeper as a required service from YARN

Repository: ambari
Updated Branches:
  refs/heads/trunk 23cc628f4 -> a2464b904


AMBARI-21206 - Remove Zookeeper as a required service from YARN


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/a2464b90
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/a2464b90
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/a2464b90

Branch: refs/heads/trunk
Commit: a2464b9045637c1d5014db4aff7d83a0bc573fc0
Parents: 23cc628
Author: Tim Thorpe <tt...@apache.org>
Authored: Mon Jun 26 07:58:15 2017 -0700
Committer: Tim Thorpe <tt...@apache.org>
Committed: Mon Jun 26 07:58:15 2017 -0700

----------------------------------------------------------------------
 .../YARN/3.0.0.3.0/configuration/yarn-site.xml  |  10 +-
 .../common-services/YARN/3.0.0.3.0/metainfo.xml |  46 ++++++-
 .../YARN/3.0.0.3.0/service_advisor.py           |  53 +++++++-
 .../stacks/HDP/2.2/services/stack_advisor.py    |  53 +++++++-
 .../stacks/2.2/common/test_stack_advisor.py     | 132 ++++++++++++++++++-
 .../stacks/2.6/common/test_stack_advisor.py     |   9 ++
 6 files changed, 289 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/a2464b90/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/configuration/yarn-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/configuration/yarn-site.xml b/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/configuration/yarn-site.xml
index 64e0bcb..c77aa2a 100644
--- a/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/configuration/yarn-site.xml
+++ b/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/configuration/yarn-site.xml
@@ -486,7 +486,10 @@
   </property>
   <property>
     <name>hadoop.registry.zk.quorum</name>
-    <value>localhost:2181</value>
+    <value></value>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
     <description>
       List of hostname:port pairs defining the zookeeper quorum binding for the registry
     </description>
@@ -553,7 +556,10 @@
   </property>
   <property>
     <name>yarn.resourcemanager.zk-address</name>
-    <value>localhost:2181</value>
+    <value></value>
+    <value-attributes>
+      <empty-value-valid>true</empty-value-valid>
+    </value-attributes>
     <description>
       List Host:Port of the ZooKeeper servers to be used by the RM. comma separated host:port pairs, each corresponding to a zk server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002" If the optional chroot suffix is used the example would look like: "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002/app/a" where the client would be rooted at "/app/a" and all paths would be relative to this root - ie getting/setting/etc...  "/foo/bar" would result in operations being run on "/app/a/foo/bar" (from the server perspective).
     </description>

http://git-wip-us.apache.org/repos/asf/ambari/blob/a2464b90/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/metainfo.xml b/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/metainfo.xml
index 061587d..90f4a92 100644
--- a/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/metainfo.xml
+++ b/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/metainfo.xml
@@ -73,17 +73,41 @@
             <timeout>1200</timeout>
           </commandScript>
 
-          <!-- TODO HDP 3.0, add later after UI is fixed,
           <dependencies>
             <dependency>
+              <name>ZOOKEEPER/ZOOKEEPER_SERVER</name>
+              <scope>cluster</scope>
+              <auto-deploy>
+                <enabled>false</enabled>
+              </auto-deploy>
+              <conditions>
+                <condition xsi:type="propertyExists">
+                  <configType>yarn-site</configType>
+                  <property>yarn.resourcemanager.recovery.enabled</property>
+                  <value>true</value>
+                </condition>
+                <condition xsi:type="propertyExists">
+                  <configType>yarn-site</configType>
+                  <property>yarn.resourcemanager.ha.enabled</property>
+                  <value>true</value>
+                </condition>
+                <condition xsi:type="propertyExists">
+                  <configType>yarn-site</configType>
+                  <property>hadoop.registry.rm.enabled</property>
+                  <value>true</value>
+                </condition>
+              </conditions>
+            </dependency>
+            <!-- TODO HDP 3.0, add later after UI is fixed,
+            <dependency>
               <name>TEZ/TEZ_CLIENT</name>
               <scope>host</scope>
               <auto-deploy>
                 <enabled>true</enabled>
               </auto-deploy>
             </dependency>
+            -->
           </dependencies>
-          -->
 
           <logs>
             <log>
@@ -145,6 +169,23 @@
               <logId>yarn_nodemanager</logId>
             </log>
           </logs>
+
+          <dependencies>
+            <dependency>
+              <name>ZOOKEEPER/ZOOKEEPER_SERVER</name>
+              <scope>cluster</scope>
+              <auto-deploy>
+                <enabled>false</enabled>
+              </auto-deploy>
+              <conditions>
+                <condition xsi:type="propertyExists">
+                  <configType>yarn-site</configType>
+                  <property>yarn.nodemanager.recovery.enabled</property>
+                  <value>true</value>
+                </condition>
+              </conditions>
+            </dependency>
+          </dependencies>
         </component>
 
         <component>
@@ -214,7 +255,6 @@
       <requiredServices>
         <service>HDFS</service>
         <service>MAPREDUCE2</service>
-        <service>ZOOKEEPER</service>
       </requiredServices>
 
       <themes>

http://git-wip-us.apache.org/repos/asf/ambari/blob/a2464b90/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/service_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/service_advisor.py b/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/service_advisor.py
index 0fb538d..1af9821 100644
--- a/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/service_advisor.py
+++ b/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/service_advisor.py
@@ -351,12 +351,21 @@ class YARNRecommender(service_advisor.ServiceAdvisor):
           putYarnPropertyAttribute('yarn.nodemanager.linux-container-executor.cgroups.hierarchy', 'delete', 'true')
           putYarnPropertyAttribute('yarn.nodemanager.linux-container-executor.cgroups.mount', 'delete', 'true')
           putYarnPropertyAttribute('yarn.nodemanager.linux-container-executor.cgroups.mount-path', 'delete', 'true')
-    # recommend hadoop.registry.rm.enabled based on SLIDER in services
+    # recommend hadoop.registry.rm.enabled based on SLIDER and ZOOKEEPER in services
     servicesList = [service["StackServices"]["service_name"] for service in services["services"]]
-    if "SLIDER" in servicesList:
+    if "SLIDER" in servicesList and "ZOOKEEPER" in servicesList:
       putYarnProperty('hadoop.registry.rm.enabled', 'true')
     else:
       putYarnProperty('hadoop.registry.rm.enabled', 'false')
+    # recommend enabling RM and NM recovery if ZOOKEEPER in services
+    if "ZOOKEEPER" in servicesList:
+      putYarnProperty('yarn.resourcemanager.recovery.enabled', 'true')
+      putYarnProperty('yarn.nodemanager.recovery.enabled', 'true')
+    else:
+      putYarnProperty('yarn.resourcemanager.recovery.enabled', 'false')
+      putYarnProperty('yarn.nodemanager.recovery.enabled', 'false')
+      # recommend disabling RM HA if ZOOKEEPER is not in services
+      putYarnProperty('yarn.resourcemanager.ha.enabled', 'false')
 
   def recommendYARNConfigurationsFromHDP23(self, configurations, clusterData, services, hosts):
     putYarnSiteProperty = self.putProperty(configurations, "yarn-site", services)
@@ -1795,6 +1804,7 @@ class YARNValidator(service_advisor.ServiceAdvisor):
     self.as_super.__init__(*args, **kwargs)
 
     self.validators = [("yarn-site", self.validateYARNSiteConfigurationsFromHDP206),
+                       ("yarn-site", self.validateYARNSiteConfigurationsFromHDP22),
                        ("yarn-site", self.validateYARNSiteConfigurationsFromHDP25),
                        ("yarn-site" , self.validateYARNSiteConfigurationsFromHDP26),
                        ("yarn-env", self.validateYARNEnvConfigurationsFromHDP206),
@@ -1837,6 +1847,45 @@ class YARNValidator(service_advisor.ServiceAdvisor):
                         {"config-name": 'yarn.scheduler.maximum-allocation-mb', "item": self.validatorLessThenDefaultValue(properties, recommendedDefaults, 'yarn.scheduler.maximum-allocation-mb')} ]
     return self.toConfigurationValidationProblems(validationItems, "yarn-site")
 
+  def validateYARNSiteConfigurationsFromHDP22(self, properties, recommendedDefaults, configurations, services, hosts):
+    """
+    This was copied from HDP 2.2; validate yarn-site
+    :return: A list of configuration validation problems.
+    """
+    yarn_site = properties
+    validationItems = []
+    servicesList = [service["StackServices"]["service_name"] for service in services["services"]]
+
+    zk_hosts = self.getHostsForComponent(services, "ZOOKEEPER", "ZOOKEEPER_SERVER")
+    if len(zk_hosts) == 0:
+      # ZOOKEEPER_SERVER isn't assigned to at least one host
+      if 'yarn.resourcemanager.recovery.enabled' in yarn_site and \
+              'true' == yarn_site['yarn.resourcemanager.recovery.enabled']:
+        validationItems.append({"config-name": "yarn.resourcemanager.recovery.enabled",
+                                "item": self.getWarnItem(
+                                  "YARN resource manager recovery can only be enabled if ZOOKEEPER is installed.")})
+      if 'yarn.nodemanager.recovery.enabled' in yarn_site and \
+              'true' == yarn_site['yarn.nodemanager.recovery.enabled']:
+        validationItems.append({"config-name": "yarn.nodemanager.recovery.enabled",
+                                "item": self.getWarnItem(
+                                  "YARN node manager recovery can only be enabled if ZOOKEEPER is installed.")})
+
+    if len(zk_hosts) < 3:
+      if 'yarn.resourcemanager.ha.enabled' in yarn_site and \
+              'true' == yarn_site['yarn.resourcemanager.ha.enabled']:
+        validationItems.append({"config-name": "yarn.resourcemanager.ha.enabled",
+                                "item": self.getWarnItem(
+                                  "You must have at least 3 ZooKeeper Servers in your cluster to enable ResourceManager HA.")})
+
+    if 'ZOOKEEPER' not in servicesList or 'SLIDER' not in servicesList:
+      if 'hadoop.registry.rm.enabled' in yarn_site and \
+              'true' == yarn_site['hadoop.registry.rm.enabled']:
+        validationItems.append({"config-name": "hadoop.registry.rm.enabled",
+                                "item": self.getWarnItem(
+                                  "HADOOP resource manager registry can only be enabled if ZOOKEEPER and SLIDER are installed.")})
+
+    return self.toConfigurationValidationProblems(validationItems, "yarn-site")
+
   def validateYARNSiteConfigurationsFromHDP25(self, properties, recommendedDefaults, configurations, services, hosts):
     yarn_site_properties = self.getSiteProperties(configurations, "yarn-site")
     validationItems = []

http://git-wip-us.apache.org/repos/asf/ambari/blob/a2464b90/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py
index 726514b..54ddd89 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py
@@ -174,12 +174,23 @@ class HDP22StackAdvisor(HDP21StackAdvisor):
           putYarnPropertyAttribute('yarn.nodemanager.linux-container-executor.cgroups.hierarchy', 'delete', 'true')
           putYarnPropertyAttribute('yarn.nodemanager.linux-container-executor.cgroups.mount', 'delete', 'true')
           putYarnPropertyAttribute('yarn.nodemanager.linux-container-executor.cgroups.mount-path', 'delete', 'true')
-    # recommend hadoop.registry.rm.enabled based on SLIDER in services
+    # recommend hadoop.registry.rm.enabled based on SLIDER and ZOOKEEPER in services
     servicesList = [service["StackServices"]["service_name"] for service in services["services"]]
-    if "SLIDER" in servicesList:
+    if "SLIDER" in servicesList and "ZOOKEEPER" in servicesList:
       putYarnProperty('hadoop.registry.rm.enabled', 'true')
     else:
       putYarnProperty('hadoop.registry.rm.enabled', 'false')
+    # recommend enabling RM and NM recovery if ZOOKEEPER in services
+    if "ZOOKEEPER" in servicesList:
+      putYarnProperty('yarn.resourcemanager.recovery.enabled', 'true')
+      putYarnProperty('yarn.nodemanager.recovery.enabled', 'true')
+    else:
+      putYarnProperty('yarn.resourcemanager.recovery.enabled', 'false')
+      putYarnProperty('yarn.nodemanager.recovery.enabled', 'false')
+      # recommend disabling RM HA if ZOOKEEPER is not in services
+      putYarnProperty('yarn.resourcemanager.ha.enabled', 'false')
+
+
 
   def recommendHDFSConfigurations(self, configurations, clusterData, services, hosts):
     super(HDP22StackAdvisor, self).recommendHDFSConfigurations(configurations, clusterData, services, hosts)
@@ -1034,6 +1045,7 @@ class HDP22StackAdvisor(HDP21StackAdvisor):
                "hadoop-env": self.validateHDFSConfigurationsEnv,
                "ranger-hdfs-plugin-properties": self.validateHDFSRangerPluginConfigurations},
       "YARN": {"yarn-env": self.validateYARNEnvConfigurations,
+               "yarn-site": self.validateYARNConfigurations,
                "ranger-yarn-plugin-properties": self.validateYARNRangerPluginConfigurations},
       "HIVE": {"hiveserver2-site": self.validateHiveServer2Configurations,
                "hive-site": self.validateHiveConfigurations,
@@ -1714,6 +1726,43 @@ class HDP22StackAdvisor(HDP21StackAdvisor):
 
     return self.toConfigurationValidationProblems(validationItems, "ranger-storm-plugin-properties")
 
+  def validateYARNConfigurations(self, properties, recommendedDefaults, configurations, services, hosts):
+    parentValidationProblems = super(HDP22StackAdvisor, self).validateYARNConfigurations(properties, recommendedDefaults, configurations, services, hosts)
+    yarn_site = properties
+    validationItems = []
+    servicesList = [service["StackServices"]["service_name"] for service in services["services"]]
+    zk_hosts = self.getHostsForComponent(services, "ZOOKEEPER", "ZOOKEEPER_SERVER")
+    if len(zk_hosts) == 0:
+      # ZOOKEEPER_SERVER isn't assigned to at least one host
+      if 'yarn.resourcemanager.recovery.enabled' in yarn_site and \
+              'true' == yarn_site['yarn.resourcemanager.recovery.enabled']:
+        validationItems.append({"config-name": "yarn.resourcemanager.recovery.enabled",
+                                "item": self.getWarnItem(
+                                  "YARN resource manager recovery can only be enabled if ZOOKEEPER is installed.")})
+      if 'yarn.nodemanager.recovery.enabled' in yarn_site and \
+              'true' == yarn_site['yarn.nodemanager.recovery.enabled']:
+        validationItems.append({"config-name": "yarn.nodemanager.recovery.enabled",
+                                "item": self.getWarnItem(
+                                  "YARN node manager recovery can only be enabled if ZOOKEEPER is installed.")})
+
+    if len(zk_hosts) < 3:
+      if 'yarn.resourcemanager.ha.enabled' in yarn_site and \
+              'true' == yarn_site['yarn.resourcemanager.ha.enabled']:
+        validationItems.append({"config-name": "yarn.resourcemanager.ha.enabled",
+                                "item": self.getWarnItem(
+                                  "You must have at least 3 ZooKeeper Servers in your cluster to enable ResourceManager HA.")})
+
+    if 'ZOOKEEPER' not in servicesList or 'SLIDER' not in servicesList:
+      if 'hadoop.registry.rm.enabled' in yarn_site and \
+              'true' == yarn_site['hadoop.registry.rm.enabled']:
+        validationItems.append({"config-name": "hadoop.registry.rm.enabled",
+                                "item": self.getWarnItem(
+                                  "HADOOP resource manager registry can only be enabled if ZOOKEEPER and SLIDER are installed.")})
+
+    validationProblems = self.toConfigurationValidationProblems(validationItems, "yarn-site")
+    validationProblems.extend(parentValidationProblems)
+    return validationProblems
+
   def validateYARNEnvConfigurations(self, properties, recommendedDefaults, configurations, services, hosts):
     parentValidationProblems = super(HDP22StackAdvisor, self).validateYARNEnvConfigurations(properties, recommendedDefaults, configurations, services, hosts)
     validationItems = []

http://git-wip-us.apache.org/repos/asf/ambari/blob/a2464b90/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py b/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py
index 571ff26..ee620b5 100644
--- a/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py
+++ b/ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py
@@ -906,7 +906,62 @@ class TestHDP22StackAdvisor(TestCase):
           "yarn.scheduler.maximum-allocation-vcores": "4",
           "yarn.scheduler.minimum-allocation-vcores": "1",
           "yarn.nodemanager.resource.cpu-vcores": "4",
-          "hadoop.registry.rm.enabled": "true"
+          "hadoop.registry.rm.enabled": "false",
+          "yarn.resourcemanager.recovery.enabled": "false",
+          "yarn.nodemanager.recovery.enabled": "false",
+          "yarn.resourcemanager.ha.enabled": "false"
+        }
+      }
+    }
+
+    self.stackAdvisor.recommendYARNConfigurations(configurations, clusterData, services, None)
+    self.assertEquals(configurations, expected)
+
+  def test_recommendYARNConfigurationsWithZKAndSlider(self):
+    configurations = {}
+    services = {"configurations": configurations}
+    services['services'] = [
+      {
+        "StackServices": {
+          "service_name": "ZOOKEEPER"
+        },
+        },
+      {
+        "StackServices": {
+          "service_name": "YARN"
+        },
+        },
+      {
+        "StackServices": {
+          "service_name": "SLIDER"
+        },
+        }
+    ]
+    clusterData = {
+      "cpu": 4,
+      "containers" : 5,
+      "ramPerContainer": 256,
+      "yarnMinContainerSize": 256
+    }
+    expected = {
+      "yarn-env": {
+        "properties": {
+          "min_user_id": "500",
+          'service_check.queue.name': 'default'
+        }
+      },
+      "yarn-site": {
+        "properties": {
+          "yarn.nodemanager.linux-container-executor.group": "hadoop",
+          "yarn.nodemanager.resource.memory-mb": "1280",
+          "yarn.scheduler.minimum-allocation-mb": "256",
+          "yarn.scheduler.maximum-allocation-mb": "1280",
+          "yarn.scheduler.maximum-allocation-vcores": "4",
+          "yarn.scheduler.minimum-allocation-vcores": "1",
+          "yarn.nodemanager.resource.cpu-vcores": "4",
+          "hadoop.registry.rm.enabled": "true",
+          "yarn.resourcemanager.recovery.enabled": "true",
+          "yarn.nodemanager.recovery.enabled": "true"
         }
       }
     }
@@ -914,6 +969,55 @@ class TestHDP22StackAdvisor(TestCase):
     self.stackAdvisor.recommendYARNConfigurations(configurations, clusterData, services, None)
     self.assertEquals(configurations, expected)
 
+  def test_recommendYARNConfigurationsWithZK(self):
+    configurations = {}
+    services = {"configurations": configurations}
+    services['services'] = [
+      {
+        "StackServices": {
+          "service_name": "ZOOKEEPER"
+        },
+        },
+      {
+        "StackServices": {
+          "service_name": "YARN"
+        },
+        }
+    ]
+    clusterData = {
+      "cpu": 4,
+      "containers" : 5,
+      "ramPerContainer": 256,
+      "yarnMinContainerSize": 256
+    }
+    expected = {
+      "yarn-env": {
+        "properties": {
+          "min_user_id": "500",
+          'service_check.queue.name': 'default'
+        }
+      },
+      "yarn-site": {
+        "properties": {
+          "yarn.nodemanager.linux-container-executor.group": "hadoop",
+          "yarn.nodemanager.resource.memory-mb": "1280",
+          "yarn.scheduler.minimum-allocation-mb": "256",
+          "yarn.scheduler.maximum-allocation-mb": "1280",
+          "yarn.scheduler.maximum-allocation-vcores": "4",
+          "yarn.scheduler.minimum-allocation-vcores": "1",
+          "yarn.nodemanager.resource.cpu-vcores": "4",
+          "hadoop.registry.rm.enabled": "false",
+          "yarn.resourcemanager.recovery.enabled": "true",
+          "yarn.nodemanager.recovery.enabled": "true"
+        }
+      }
+    }
+
+    self.stackAdvisor.recommendYARNConfigurations(configurations, clusterData, services, None)
+    self.assertEquals(configurations, expected)
+
+
+
   def test_recommendSPARKConfigurations(self):
     configurations = {}
     services = {"configurations": configurations}
@@ -979,7 +1083,10 @@ class TestHDP22StackAdvisor(TestCase):
           "yarn.scheduler.minimum-allocation-vcores": "1",
           "yarn.scheduler.maximum-allocation-mb": "1280",
           "yarn.nodemanager.resource.cpu-vcores": "2",
-          "hadoop.registry.rm.enabled": "false"
+          "hadoop.registry.rm.enabled": "false",
+          "yarn.resourcemanager.recovery.enabled": "false",
+          "yarn.nodemanager.recovery.enabled": "false",
+          "yarn.resourcemanager.ha.enabled": "false"
         },
         "property_attributes": {
           'yarn.nodemanager.resource.memory-mb': {'maximum': '1877'},
@@ -1806,7 +1913,10 @@ class TestHDP22StackAdvisor(TestCase):
           "yarn.scheduler.minimum-allocation-vcores": "1",
           "yarn.scheduler.maximum-allocation-mb": "1792",
           "yarn.nodemanager.resource.cpu-vcores": "1",
-          "hadoop.registry.rm.enabled": "false"
+          "hadoop.registry.rm.enabled": "false",
+          "yarn.resourcemanager.recovery.enabled": "false",
+          "yarn.nodemanager.recovery.enabled": "false",
+          "yarn.resourcemanager.ha.enabled": "false"
         },
         "property_attributes": {
           'yarn.nodemanager.resource.memory-mb': {'maximum': '1877'},
@@ -2070,7 +2180,10 @@ class TestHDP22StackAdvisor(TestCase):
           "yarn.scheduler.minimum-allocation-vcores": "1",
           "yarn.scheduler.maximum-allocation-mb": "1280",
           "yarn.nodemanager.resource.cpu-vcores": "1",
-          "hadoop.registry.rm.enabled": "false"
+          "hadoop.registry.rm.enabled": "false",
+          "yarn.resourcemanager.recovery.enabled": "false",
+          "yarn.nodemanager.recovery.enabled": "false",
+          "yarn.resourcemanager.ha.enabled": "false"
         },
         "property_attributes": {
           'yarn.nodemanager.resource.memory-mb': {'maximum': '1877'},
@@ -2285,7 +2398,10 @@ class TestHDP22StackAdvisor(TestCase):
                 "yarn.scheduler.minimum-allocation-vcores": "1",
                 "yarn.scheduler.maximum-allocation-mb": "1280",
                 "yarn.nodemanager.resource.cpu-vcores": "1",
-                "hadoop.registry.rm.enabled": "false"
+                "hadoop.registry.rm.enabled": "false",
+                "yarn.resourcemanager.recovery.enabled": "false",
+                "yarn.nodemanager.recovery.enabled": "false",
+                "yarn.resourcemanager.ha.enabled": "false"
             },
             "property_attributes": {
                 'yarn.nodemanager.resource.memory-mb': {'maximum': '1877'},
@@ -3844,6 +3960,9 @@ class TestHDP22StackAdvisor(TestCase):
           "yarn.scheduler.maximum-allocation-mb": "33792",
           "yarn.nodemanager.linux-container-executor.resources-handler.class": "org.apache.hadoop.yarn.server.nodemanager.util.CgroupsLCEResourcesHandler",
           "hadoop.registry.rm.enabled": "false",
+          "yarn.resourcemanager.recovery.enabled": "false",
+          "yarn.nodemanager.recovery.enabled": "false",
+          "yarn.resourcemanager.ha.enabled": "false",
           "yarn.timeline-service.leveldb-state-store.path": "/hadoop/yarn/timeline",
           "yarn.timeline-service.leveldb-timeline-store.path": "/hadoop/yarn/timeline",
           "yarn.nodemanager.local-dirs": "/hadoop/yarn/local,/dev/shm/hadoop/yarn/local,/vagrant/hadoop/yarn/local",
@@ -3903,6 +4022,9 @@ class TestHDP22StackAdvisor(TestCase):
           "yarn.scheduler.maximum-allocation-mb": "33792",
           "yarn.nodemanager.linux-container-executor.resources-handler.class": "org.apache.hadoop.yarn.server.nodemanager.util.CgroupsLCEResourcesHandler",
           "hadoop.registry.rm.enabled": "false",
+          "yarn.resourcemanager.recovery.enabled": "false",
+          "yarn.nodemanager.recovery.enabled": "false",
+          "yarn.resourcemanager.ha.enabled": "false",
           "yarn.timeline-service.leveldb-state-store.path": "/hadoop/yarn/timeline",
           "yarn.timeline-service.leveldb-timeline-store.path": "/hadoop/yarn/timeline",
           "yarn.nodemanager.local-dirs": "/hadoop/yarn/local,/dev/shm/hadoop/yarn/local,/vagrant/hadoop/yarn/local",

http://git-wip-us.apache.org/repos/asf/ambari/blob/a2464b90/ambari-server/src/test/python/stacks/2.6/common/test_stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.6/common/test_stack_advisor.py b/ambari-server/src/test/python/stacks/2.6/common/test_stack_advisor.py
index d4d28c9..96a595f 100644
--- a/ambari-server/src/test/python/stacks/2.6/common/test_stack_advisor.py
+++ b/ambari-server/src/test/python/stacks/2.6/common/test_stack_advisor.py
@@ -1153,6 +1153,9 @@ class TestHDP26StackAdvisor(TestCase):
       'yarn-site': {
         'properties': {
           'hadoop.registry.rm.enabled': 'false',
+          'yarn.resourcemanager.recovery.enabled': 'false',
+          'yarn.nodemanager.recovery.enabled': 'false',
+          'yarn.resourcemanager.ha.enabled': 'false',
           'yarn.timeline-service.entity-group-fs-store.group-id-plugin-classes': '',
           'yarn.scheduler.minimum-allocation-vcores': '1',
           'yarn.scheduler.maximum-allocation-vcores': '4',
@@ -1329,6 +1332,9 @@ class TestHDP26StackAdvisor(TestCase):
       'yarn-site': {
         'properties': {
           'hadoop.registry.rm.enabled': 'false',
+          'yarn.resourcemanager.recovery.enabled': 'false',
+          'yarn.nodemanager.recovery.enabled': 'false',
+          'yarn.resourcemanager.ha.enabled': 'false',
           'yarn.timeline-service.entity-group-fs-store.group-id-plugin-classes': '',
           'yarn.authorization-provider': 'org.apache.ranger.authorization.yarn.authorizer.RangerYarnAuthorizer',
           'yarn.acl.enable': 'true',
@@ -1436,6 +1442,9 @@ class TestHDP26StackAdvisor(TestCase):
       'yarn-site': {
         'properties': {
           'hadoop.registry.rm.enabled': 'false',
+          'yarn.resourcemanager.recovery.enabled': 'false',
+          'yarn.nodemanager.recovery.enabled': 'false',
+          'yarn.resourcemanager.ha.enabled': 'false',
           'yarn.timeline-service.entity-group-fs-store.group-id-plugin-classes': '',
           'yarn.authorization-provider': 'org.apache.ranger.authorization.yarn.authorizer.RangerYarnAuthorizer',
           'yarn.acl.enable': 'true',