Repository: ambari Updated Branches: refs/heads/branch-2.5 8fee561b5 -> f0395176c
AMBARI-21237. Add validation and recommendation if hive user value is different than hive.(vbrodetskyi) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f0395176 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f0395176 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f0395176 Branch: refs/heads/branch-2.5 Commit: f0395176c9159d29c3adf112c657e03e8ffd82c9 Parents: 8fee561 Author: Vitaly Brodetskyi <vbrodets...@hortonworks.com> Authored: Thu Jun 15 14:10:01 2017 +0300 Committer: Vitaly Brodetskyi <vbrodets...@hortonworks.com> Committed: Thu Jun 15 14:10:44 2017 +0300 ---------------------------------------------------------------------- .../services/YARN/configuration/yarn-site.xml | 6 ++++ .../stacks/HDP/2.6/services/stack_advisor.py | 36 ++++++++++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/f0395176/ambari-server/src/main/resources/stacks/HDP/2.6/services/YARN/configuration/yarn-site.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/YARN/configuration/yarn-site.xml b/ambari-server/src/main/resources/stacks/HDP/2.6/services/YARN/configuration/yarn-site.xml index cab0e65..5f8de49 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/YARN/configuration/yarn-site.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/YARN/configuration/yarn-site.xml @@ -109,6 +109,12 @@ <property> <name>yarn.nodemanager.kill-escape.user</name> <value>hive</value> + <depends-on> + <property> + <type>hive-env</type> + <name>hive_user</name> + </property> + </depends-on> <on-ambari-upgrade add="false"/> </property> </configuration> http://git-wip-us.apache.org/repos/asf/ambari/blob/f0395176/ambari-server/src/main/resources/stacks/HDP/2.6/services/stack_advisor.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/HDP/2.6/services/stack_advisor.py index 9cd4acf..2b4c14c 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/stack_advisor.py +++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/stack_advisor.py @@ -181,6 +181,26 @@ class HDP26StackAdvisor(HDP25StackAdvisor): super(HDP26StackAdvisor, self).recommendYARNConfigurations(configurations, clusterData, services, hosts) putYarnSiteProperty = self.putProperty(configurations, "yarn-site", services) putYarnEnvProperty = self.putProperty(configurations, "yarn-env", services) + servicesList = [service["StackServices"]["service_name"] for service in services["services"]] + + if 'HIVE' in servicesList and "yarn-site" in services["configurations"] and "yarn.nodemanager.kill-escape.user" in \ + services["configurations"]["yarn-site"]["properties"] and 'hive-env' in services['configurations'] and \ + 'hive_user' in services['configurations']['hive-env']['properties']: + hive_user_name = services['configurations']['hive-env']['properties']['hive_user'] + old_hive_user_name = getOldValue(self, services, "hive-env", "hive_user") + yarn_nm_kill_escape_user = services["configurations"]["yarn-site"]["properties"]["yarn.nodemanager.kill-escape.user"] + if not hive_user_name in yarn_nm_kill_escape_user: + if not yarn_nm_kill_escape_user or yarn_nm_kill_escape_user.strip() == "": + yarn_nm_kill_escape_user = hive_user_name + else: + escape_user_names = yarn_nm_kill_escape_user.split(",") + if old_hive_user_name in escape_user_names: + escape_user_names.remove(old_hive_user_name) + escape_user_names.append(hive_user_name) + yarn_nm_kill_escape_user = ",".join(escape_user_names) + + putYarnSiteProperty("yarn.nodemanager.kill-escape.user", yarn_nm_kill_escape_user) + if "yarn-site" in services["configurations"] and \ "yarn.resourcemanager.scheduler.monitor.enable" in services["configurations"]["yarn-site"]["properties"]: @@ -392,6 +412,18 @@ class HDP26StackAdvisor(HDP25StackAdvisor): def validateYarnSiteConfigurations(self, properties, recommendedDefaults, configurations, services, hosts): validationItems = [] siteProperties = services["configurations"]["yarn-site"]["properties"] + servicesList = [service["StackServices"]["service_name"] for service in services["services"]] + + if 'HIVE' in servicesList and "yarn-site" in services["configurations"] and "yarn.nodemanager.kill-escape.user" in \ + services["configurations"]["yarn-site"]["properties"] and 'hive-env' in services['configurations'] and \ + 'hive_user' in services['configurations']['hive-env']['properties']: + hive_user = services['configurations']['hive-env']['properties']['hive_user'] + yarn_nm_kill_escape_user = services["configurations"]["yarn-site"]["properties"]["yarn.nodemanager.kill-escape.user"] + if not hive_user in yarn_nm_kill_escape_user: + validationItems.append( + {"config-name": "yarn.nodemanager.kill-escape.user", + "item": self.getWarnItem("Value should contain %s" % hive_user)}) + if services["configurations"]["yarn-site"]["properties"]["yarn.http.policy"] == 'HTTP_ONLY': webapp_address = services["configurations"]["yarn-site"]["properties"]["yarn.timeline-service.webapp.address"] propertyValue = "http://"+webapp_address+"/ws/v1/applicationhistory" @@ -400,9 +432,9 @@ class HDP26StackAdvisor(HDP25StackAdvisor): propertyValue = "https://"+webapp_address+"/ws/v1/applicationhistory" Logger.info("validateYarnSiteConfigurations: recommended value for webservice url"+services["configurations"]["yarn-site"]["properties"]["yarn.log.server.web-service.url"]) if services["configurations"]["yarn-site"]["properties"]["yarn.log.server.web-service.url"] != propertyValue: - validationItems = [ + validationItems.append( {"config-name": "yarn.log.server.web-service.url", - "item": self.getWarnItem("Value should be %s" % propertyValue)}] + "item": self.getWarnItem("Value should be %s" % propertyValue)}) return self.toConfigurationValidationProblems(validationItems, "yarn-site") def validateDruidHistoricalConfigurations(self, properties, recommendedDefaults, configurations, services, hosts):