AMBARI-14412. Recommend PXF component to be collocated with NAMENODE and DATANODE (mithmatt via odiachenko).
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/dcde3a4d Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/dcde3a4d Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/dcde3a4d Branch: refs/heads/branch-2.2 Commit: dcde3a4d2cedafc0d7ebf2c9f0bce5199735039d Parents: 5983b9b Author: Oleksandr Diachenko <[email protected]> Authored: Wed Dec 30 11:37:31 2015 -0800 Committer: Oleksandr Diachenko <[email protected]> Committed: Wed Dec 30 11:37:31 2015 -0800 ---------------------------------------------------------------------- .../stacks/HDP/2.3/services/stack_advisor.py | 22 +- .../stacks/2.3/common/services-pxf-hdfs.json | 3490 ++++++++++++++++++ .../stacks/2.3/common/test_stack_advisor.py | 13 + 3 files changed, 3518 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/dcde3a4d/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py index 011d773..bae431e 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py +++ b/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py @@ -25,14 +25,22 @@ class HDP23StackAdvisor(HDP22StackAdvisor): def createComponentLayoutRecommendations(self, services, hosts): parentComponentLayoutRecommendations = super(HDP23StackAdvisor, self).createComponentLayoutRecommendations(services, hosts) - # remove HAWQSTANDBY on a single node hostsList = [host["Hosts"]["host_name"] for host in hosts["items"]] - if len(hostsList) == 1: - servicesList = [service["StackServices"]["service_name"] for service in services["services"]] - if "HAWQ" in servicesList: - components = parentComponentLayoutRecommendations["blueprint"]["host_groups"][0]["components"] - components = [ component for component in components if component["name"] != 'HAWQSTANDBY' ] - parentComponentLayoutRecommendations["blueprint"]["host_groups"][0]["components"] = components + servicesList = [service["StackServices"]["service_name"] for service in services["services"]] + + # remove HAWQSTANDBY on a single node + if len(hostsList) == 1 and "HAWQ" in servicesList: + components = parentComponentLayoutRecommendations["blueprint"]["host_groups"][0]["components"] + components = [ component for component in components if component["name"] != 'HAWQSTANDBY' ] + parentComponentLayoutRecommendations["blueprint"]["host_groups"][0]["components"] = components + + # co-locate PXF with NAMENODE and DATANODE + if "PXF" in servicesList: + host_groups = parentComponentLayoutRecommendations["blueprint"]["host_groups"] + for host_group in host_groups: + if ({"name": "NAMENODE"} in host_group["components"] or {"name": "DATANODE"} in host_group["components"]) \ + and {"name": "PXF"} not in host_group["components"]: + host_group["components"].append({"name": "PXF"}) return parentComponentLayoutRecommendations
