【问题标题】:how to install custom packages on amazon EMR bootstrap action in code?如何在代码中的亚马逊 EMR 引导操作上安装自定义包?
【发布时间】:2014-04-19 23:37:19
【问题描述】:

需要在 amazon EMR 引导操作上安装一些包和二进制文件,但我找不到任何使用它的示例。

基本上,我想安装python包,并指定每个hadoop节点使用这个包来处理s3桶中的项目,这里是一个示例frpm boto。

                      name='Image to grayscale using SimpleCV python package',
                      mapper='s3n://elasticmapreduce/samples/imageGrayScale.py',
                      reducer='aggregate',
                      input='s3n://elasticmapreduce/samples/input',
                      output='s3n://<my output bucket>/output'

我需要让它使用 SimpleCV python 包,但不确定在哪里指定它。如果没有安装怎么办,如何安装?有没有办法避免等待安装完成,是否可以将其安装在某处并仅引用 python 包?

【问题讨论】:

  • 你听说过boto吗?
  • 是的,我从那里获得了示例代码

标签: python boto amazon-emr


【解决方案1】:

有一个类 boto.emr.bootstrap_action.BootstrapAction 用于引导操作。

如下定义。大部分代码来自boto example page

import boto.emr
from boto.emr.bootstrap_action import BootstrapAction

action = BootstrapAction(name="Bootstrap to add SimpleCV",
                         path="s3n://<my bucket uri>/bootstrap-simplecv.sh")

conn = boto.emr.connect_to_region('us-west-2')
jobid = conn.run_jobflow(name='My jobflow',
                         log_uri='s3://<my log uri>/jobflow_logs',
                         steps=[step],  # step defined elsewhere
                         bootstrap_actions=[action])

您需要定义引导操作。如果您需要其他版本的 Python,那么可以,在完全相同的计算机上预编译它,将其 tar,放入 S3 存储桶,然后在引导过程中解压缩它会节省时间。

#!/bin/sh
# filename: bootstrap-simplecv.sh  (save it in an S3 bucket)
set -e -x

sudo apt-get install python-setuptools
sudo easy_install pip 
sudo pip install -U SimpleCV

我认为您可以让 EMR 实例在 boto 内旋转,以便引导仅在您的会话中第一次发生。请注意在您注销之前将其关闭,以免您对账单感到意外。

【讨论】:

  • 特别是 sudo apt-get 命令帮助我手动完成。
猜你喜欢
  • 2015-05-26
  • 2013-03-03
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 2019-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多