2014-10-11 116 views
7

我试图发起集群和运行作业全部采用伯特启动并配置EMR集群。 我发现的创造job_flows的例子很多的。但我不能为我的生活,发现,展示了一个例子:如何使用博托

  1. 如何定义群集(由clusted_id)使用
  2. 如何配置启动群集(例如,如果我想用点情况下对某些任务节点)

我这么想吗?

回答

16

宝途和底层EMR API当前混合术语工作流,和作业流程正在deprecated。我认为他们是同义词。

您可以通过调用函数boto.emr.connection.run_jobflow()创建一个新的集群。它将返回EMR为您生成的群集ID。

首先强制性的东西:

#!/usr/bin/env python 

import boto 
import boto.emr 
from boto.emr.instance_group import InstanceGroup 

conn = boto.emr.connect_to_region('us-east-1') 

然后我们指定实例群体,包括我们要支付的任务节点现货价格:

instance_groups = [] 
instance_groups.append(InstanceGroup(
    num_instances=1, 
    role="MASTER", 
    type="m1.small", 
    market="ON_DEMAND", 
    name="Main node")) 
instance_groups.append(InstanceGroup(
    num_instances=2, 
    role="CORE", 
    type="m1.small", 
    market="ON_DEMAND", 
    name="Worker nodes")) 
instance_groups.append(InstanceGroup(
    num_instances=2, 
    role="TASK", 
    type="m1.small", 
    market="SPOT", 
    name="My cheap spot nodes", 
    bidprice="0.002")) 

最后,我们开始一个新的集群:

cluster_id = conn.run_jobflow(
    "Name for my cluster", 
    instance_groups=instance_groups, 
    action_on_failure='TERMINATE_JOB_FLOW', 
    keep_alive=True, 
    enable_debugging=True, 
    log_uri="s3://mybucket/logs/", 
    hadoop_version=None, 
    ami_version="2.4.9", 
    steps=[], 
    bootstrap_actions=[], 
    ec2_keyname="my-ec2-key", 
    visible_to_all_users=True, 
    job_flow_role="EMR_EC2_DefaultRole", 
    service_role="EMR_DefaultRole") 

如果我们关心的话,我们也可以打印集群ID:

print "Starting cluster", cluster_id 
+0

此答案的更新通过'boto3'而不是boto来完成? – Navneet 2016-12-27 21:17:51

+0

@vilsepi这给了我这个错误Amazon EMR集群(在python中创建的集群)在2017-10-02 08:21 UTC由于VALIDATION_ERROR的原因而终止,并显示错误。想法? – thebeancounter 2017-10-02 08:26:40