فهرست منبع

AMBARI-16286 MapReduce service check failed on most of the Kerberos tests (dsen)

Dmytro Sen 9 سال پیش
والد
کامیت
3c12461dbc

+ 4 - 0
ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/configuration/yarn-site.xml

@@ -455,6 +455,10 @@
         <type>yarn-env</type>
         <name>yarn_cgroups_enabled</name>
       </property>
+      <property>
+        <type>core-site</type>
+        <name>hadoop.security.authentication</name>
+      </property>
     </depends-on>
   </property>
   <property>

+ 8 - 1
ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py

@@ -78,6 +78,12 @@ class HDP22StackAdvisor(HDP21StackAdvisor):
           putYarnPropertyAttribute('yarn.scheduler.maximum-allocation-vcores', 'maximum', services["configurations"]["yarn-site"]["properties"]["yarn.nodemanager.resource.cpu-vcores"])
           putYarnPropertyAttribute('yarn.scheduler.minimum-allocation-vcores', 'maximum', services["configurations"]["yarn-site"]["properties"]["yarn.nodemanager.resource.cpu-vcores"])
 
+      kerberos_authentication_enabled = False
+      if "core-site" in services["configurations"] and "hadoop.security.authentication" in services["configurations"]["core-site"]["properties"]:
+        if services["configurations"]["core-site"]["properties"]["hadoop.security.authentication"].lower() == "kerberos" :
+          kerberos_authentication_enabled = True
+          putYarnProperty('yarn.nodemanager.container-executor.class', 'org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor')
+
       if "yarn-env" in services["configurations"] and "yarn_cgroups_enabled" in services["configurations"]["yarn-env"]["properties"]:
         yarn_cgroups_enabled = services["configurations"]["yarn-env"]["properties"]["yarn_cgroups_enabled"].lower() == "true"
         if yarn_cgroups_enabled:
@@ -88,7 +94,8 @@ class HDP22StackAdvisor(HDP21StackAdvisor):
           putYarnProperty('yarn.nodemanager.container-executor.cgroups.mount', 'true')
           putYarnProperty('yarn.nodemanager.linux-container-executor.cgroups.mount-path', '/cgroup')
         else:
-          putYarnProperty('yarn.nodemanager.container-executor.class', 'org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor')
+          if not kerberos_authentication_enabled:
+            putYarnProperty('yarn.nodemanager.container-executor.class', 'org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor')
           putYarnPropertyAttribute('yarn.nodemanager.container-executor.resources-handler.class', 'delete', 'true')
           putYarnPropertyAttribute('yarn.nodemanager.container-executor.cgroups.hierarchy', 'delete', 'true')
           putYarnPropertyAttribute('yarn.nodemanager.container-executor.cgroups.mount', 'delete', 'true')

+ 25 - 24
ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py

@@ -626,32 +626,33 @@ class HDP23StackAdvisor(HDP22StackAdvisor):
     putStormStartupProperty = self.putProperty(configurations, "storm-site", services)
     servicesList = [service["StackServices"]["service_name"] for service in services["services"]]
 
-    # atlas
-    notifier_plugin_property = "storm.topology.submission.notifier.plugin.class"
-    if notifier_plugin_property in services["configurations"]["storm-site"]["properties"]:
-      notifier_plugin_value = services["configurations"]["storm-site"]["properties"][notifier_plugin_property]
-      if notifier_plugin_value is None:
-        notifier_plugin_value = " "
-    else:
-      notifier_plugin_value = " "
-
-    include_atlas = "ATLAS" in servicesList
-    atlas_hook_class = "org.apache.atlas.storm.hook.StormAtlasHook"
-    if include_atlas and atlas_hook_class not in notifier_plugin_value:
-      if notifier_plugin_value == " ":
-        notifier_plugin_value = atlas_hook_class
-      else:
-        notifier_plugin_value = notifier_plugin_value + "," + atlas_hook_class
-    if not include_atlas and atlas_hook_class in notifier_plugin_value:
-      application_classes = []
-      for application_class in notifier_plugin_value.split(","):
-        if application_class != atlas_hook_class and application_class != " ":
-          application_classes.append(application_class)
-      if application_classes:
-        notifier_plugin_value = ",".join(application_classes)
+    if "storm-site" in services["configurations"]:
+      # atlas
+      notifier_plugin_property = "storm.topology.submission.notifier.plugin.class"
+      if notifier_plugin_property in services["configurations"]["storm-site"]["properties"]:
+        notifier_plugin_value = services["configurations"]["storm-site"]["properties"][notifier_plugin_property]
+        if notifier_plugin_value is None:
+          notifier_plugin_value = " "
       else:
         notifier_plugin_value = " "
-    putStormStartupProperty(notifier_plugin_property, notifier_plugin_value)
+
+      include_atlas = "ATLAS" in servicesList
+      atlas_hook_class = "org.apache.atlas.storm.hook.StormAtlasHook"
+      if include_atlas and atlas_hook_class not in notifier_plugin_value:
+        if notifier_plugin_value == " ":
+          notifier_plugin_value = atlas_hook_class
+        else:
+          notifier_plugin_value = notifier_plugin_value + "," + atlas_hook_class
+      if not include_atlas and atlas_hook_class in notifier_plugin_value:
+        application_classes = []
+        for application_class in notifier_plugin_value.split(","):
+          if application_class != atlas_hook_class and application_class != " ":
+            application_classes.append(application_class)
+        if application_classes:
+          notifier_plugin_value = ",".join(application_classes)
+        else:
+          notifier_plugin_value = " "
+      putStormStartupProperty(notifier_plugin_property, notifier_plugin_value)
 
   def recommendFalconConfigurations(self, configurations, clusterData, services, hosts):
 

+ 5 - 0
ambari-server/src/test/python/stacks/2.2/common/test_stack_advisor.py

@@ -3427,6 +3427,11 @@ class TestHDP22StackAdvisor(TestCase):
           "properties": {
             "yarn_cgroups_enabled": "true"
           }
+        },
+        "core-site": {
+          "properties": {
+            "hadoop.security.authentication": ""
+          }
         }
       }
     }