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
 

Reply via email to