Ottomata has submitted this change and it was merged.
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(-)
Approvals:
Ottomata: Verified; Looks good to me, approved
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: merged
Gerrit-Change-Id: I0ceb0202cda86f6311d6e0b08c53067344d2c067
Gerrit-PatchSet: 2
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ottomata <[email protected]>
Gerrit-Reviewer: Faidon Liambotis <[email protected]>
Gerrit-Reviewer: Ottomata <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits