2014-10-11 71 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