Ottomata has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/96526


Change subject: Adding net-topology.py.erb to make hadoop topology aware.
......................................................................

Adding net-topology.py.erb to make hadoop topology aware.

This script contains a hardcoded dict that maps fqdns to
/datacenter/rack/row ids.  Hadoop will use these ids
to balance data between rows, and allocate jobs accordingly.

Change-Id: I0ceb0202cda86f6311d6e0b08c53067344d2c067
---
M manifests/role/analytics/hadoop.pp
M manifests/site.pp
M modules/cdh4
A templates/hadoop/net-topology.py.erb
4 files changed, 45 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/26/96526/1

diff --git a/manifests/role/analytics/hadoop.pp 
b/manifests/role/analytics/hadoop.pp
index 13482c3..973df1f 100644
--- a/manifests/role/analytics/hadoop.pp
+++ b/manifests/role/analytics/hadoop.pp
@@ -126,6 +126,8 @@
         yarn_resourcemanager_scheduler_class    => 
'org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler',
         # TODO: use variables from new ganglia module once it is finished.
         ganglia_hosts                           => ['239.192.1.32:8649'],
+        # use net-topology.py.erb to map hostname to /datacenter/rack/row id.
+        net_topology_script_template            => 
'hadoop/net-topology.py.erb',
     }
 
     file { "$::cdh4::hadoop::config_directory/fair-scheduler.xml":
diff --git a/manifests/site.pp b/manifests/site.pp
index 468e455..05ecc38 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -173,6 +173,10 @@
 }
 
 # analytics1011-analytics1020 are Hadoop worker nodes
+# NOTE:  If you add, remove or move Hadoop nodes, you should edit
+# templates/hadoop/net-topology.py.erb to make sure the
+# hostname -> /datacenter/rack/row id is correct.  This is
+# used for Hadoop network topology awareness.
 node /analytics10(1[1-9]|20).eqiad.wmnet/ {
     # ganglia aggregator for the Dells in Analytics cluster.
     if ($::hostname == 'analytics1011') {
diff --git a/modules/cdh4 b/modules/cdh4
index e55bfa1..ec8299a 160000
--- a/modules/cdh4
+++ b/modules/cdh4
-Subproject commit e55bfa10f47a84fa78dee9a540175d503775dc0c
+Subproject commit ec8299a59e4a81c70f0a3cdd32a494ad680800e6
diff --git a/templates/hadoop/net-topology.py.erb 
b/templates/hadoop/net-topology.py.erb
new file mode 100755
index 0000000..e47867f
--- /dev/null
+++ b/templates/hadoop/net-topology.py.erb
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+
+# NOTE: This file is managed by Puppet.
+
+# Returns a rack/row name for the given node name.
+
+# Usage:
+#   net-topology.sh <ipaddr|fqdn>
+
+import socket
+from sys import argv
+
+# Maps fqdn to a unique /datacenter/rack/row id.
+nodes = {
+    'analytics1009.eqiad.wmnet':  '/eqiad/A/2',
+    'analytics1010.eqiad.wmnet':  '/eqiad/B/3',
+    'analytics1011.eqiad.wmnet':  '/eqiad/A/2',
+    'analytics1012.eqiad.wmnet':  '/eqiad/A/2',
+    'analytics1013.eqiad.wmnet':  '/eqiad/A/2',
+    'analytics1014.eqiad.wmnet':  '/eqiad/C/7',
+    'analytics1015.eqiad.wmnet':  '/eqiad/C/7',
+    'analytics1016.eqiad.wmnet':  '/eqiad/C/7',
+    'analytics1017.eqiad.wmnet':  '/eqiad/C/7',
+    'analytics1018.eqiad.wmnet':  '/eqiad/C/7',
+    'analytics1019.eqiad.wmnet':  '/eqiad/C/7',
+    'analytics1020.eqiad.wmnet':  '/eqiad/C/7',
+}
+
+if len(argv) < 2:
+    node = 'default'
+else:
+    node = argv[1]
+
+# If the node doesn't have a key in nodes, perhaps it is a
+# short hostname or IP address.  Look it up!
+if not nodes.has_key(node):
+    node = socket.getfqdn(node)
+
+print(nodes.get(node, '/default-rack'))

-- 
To view, visit https://gerrit.wikimedia.org/r/96526
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0ceb0202cda86f6311d6e0b08c53067344d2c067
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ottomata <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to