if (clusterSpec.getProvider().equals("ec2"))
masterTemplateBuilder.imageNameMatches(".*10\\.?04.*")
.osDescriptionMatches("^ubuntu-images.*")
.architecture(Architecture.X86_32);
Template masterTemplate = masterTemplateBuilder.build();
InstanceTemplate instanceTemplate = clusterSpec.getInstanceTemplate(MASTER_ROLE);
checkNotNull(instanceTemplate);
checkArgument(instanceTemplate.getNumberOfInstances() == 1);
Set<? extends NodeMetadata> nodes;
try {
nodes = computeService.runNodesWithTag(
clusterSpec.getClusterName(), 1, masterTemplate);
} catch (RunNodesException e) {
// TODO: can we do better here (retry?)
throw new IOException(e);
}
NodeMetadata node = Iterables.getOnlyElement(nodes);
InetAddress namenodePublicAddress = InetAddress.getByName(Iterables.get(node.getPublicAddresses(),0));
InetAddress jobtrackerPublicAddress = InetAddress.getByName(Iterables.get(node.getPublicAddresses(),0));
FirewallSettings.authorizeIngress(computeServiceContext, node, clusterSpec,
WEB_PORT);
FirewallSettings.authorizeIngress(computeServiceContext, node, clusterSpec,
NAMENODE_WEB_UI_PORT);
FirewallSettings.authorizeIngress(computeServiceContext, node, clusterSpec,
JOBTRACKER_WEB_UI_PORT);
FirewallSettings.authorizeIngress(computeServiceContext, node, clusterSpec,
namenodePublicAddress.getHostAddress(), NAMENODE_PORT);
FirewallSettings.authorizeIngress(computeServiceContext, node, clusterSpec,
namenodePublicAddress.getHostAddress(), JOBTRACKER_PORT);
if (!namenodePublicAddress.equals(jobtrackerPublicAddress)) {
FirewallSettings.authorizeIngress(computeServiceContext, node, clusterSpec,
jobtrackerPublicAddress.getHostAddress(), NAMENODE_PORT);
FirewallSettings.authorizeIngress(computeServiceContext, node, clusterSpec,
jobtrackerPublicAddress.getHostAddress(), JOBTRACKER_PORT);
}
// Launch slaves (DN and TT)
byte[] slaveBootScript = RunUrlBuilder.runUrls(
"sun/java/install",
String.format("%s dn,tt -n %s -j %s",
hadoopInstallRunUrl,
namenodePublicAddress.getHostName(),
jobtrackerPublicAddress.getHostName()));
TemplateBuilder slaveTemplateBuilder = computeService.templateBuilder()
.osFamily(UBUNTU)
.options(runScript(slaveBootScript)
.installPrivateKey(clusterSpec.readPrivateKey())
.authorizePublicKey(clusterSpec.readPublicKey()));
// TODO extract this logic elsewhere
if (clusterSpec.getProvider().equals("ec2"))
slaveTemplateBuilder.imageNameMatches(".*10\\.?04.*")
.osDescriptionMatches("^ubuntu-images.*")
.architecture(Architecture.X86_32);
Template slaveTemplate = slaveTemplateBuilder.build();
instanceTemplate = clusterSpec.getInstanceTemplate(WORKER_ROLE);
checkNotNull(instanceTemplate);
Set<? extends NodeMetadata> workerNodes;