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/c96a9e41 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c96a9e41 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c96a9e41 Branch: refs/heads/trunk Commit: c96a9e4170564e9eafc6781443d7bbd0aecd4e75 Parents: 746e90d Author: Oleksandr Diachenko <[email protected]> Authored: Wed Dec 30 11:35:39 2015 -0800 Committer: Oleksandr Diachenko <[email protected]> Committed: Wed Dec 30 11:35:39 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/c96a9e41/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 f57debb..e52db2c 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
