如何为'hadoop-ec2'正确配置Amazon EC2 AMI?

时间:2013-04-09 05:58:47

标签: hadoop amazon-web-services amazon-ec2 ec2-ami ec2-api-tools

我正在尝试在Amazon EC2上启动实例。我已经广泛研究过这个问题,但是我没有找到任何有用的信息。

当我运行命令hadoop-ec2 launch-cluster mycluster 2时,收到以下错误消息:

Starting master with AMI.
Required parameter 'AMI' missing (-h for usage)

我已输入我的AWS密钥,AWS密钥,AWS密钥对等。我正在使用hadoop-1.0.4。我正在使用默认的S3存储桶(hadoop-images),但我尝试了很多其他AMI,并且我总是收到相同的错误消息。

以前有人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:1)

基本问题是launch-hadoop-master脚本执行的图像搜索不会返回任何结果。最可能的原因是由于不同地区可用的AMI不同(但可能是由于您对S3_BUCKET中的HADOOP_VERSIONhadoop-ec2-env.sh所做的任何更改。

来自launch-hadoop-master脚本:

# Finding Hadoop image
AMI_IMAGE=`ec2-describe-images -a | grep $S3_BUCKET 
                                  | grep $HADOOP_VERSION
                                  | grep $ARCH
                                  | grep available
                                  | awk '{print $2}'`

# Start a master
echo "Starting master with AMI $AMI_IMAGE"

因此,似乎AMI_IMAGE未设置为有效图像,因此搜索与各种grep过滤器匹配的AMI失败(Hadoop 1.0.4发布的默认值为如果您使用m1.small实例,则S3_BUCKEThadoop-imagesHADOOP_VERSION0.19.0ARCHx86。如果您搜索public AMIs in the US-West-2 region,您会发现Hadoop图片不多,但如果您搜索public AMIs in the US-East-1 region,则会看到相当多的图片。因此,解决此问题的一种方法是在US-East-1区域工作(这是最简单的),或者通过EC2_URL在您的登录脚本中设置export EC2_URL=https://ec2.us-east-1.amazonaws.com,但现在您需要确保将您的密钥从AWS控制台放入此区域。

如果您确实将HADOOP_VERSION更改为1.0.4,我会注意到

ec2-describe-images -a | grep hadoop-images 
                       | grep "1.0.4"'
                       | grep x86
                       | grep available 

不会返回US-East-1区域中的任何图像。请注意,运行HADOOP_VERSION命令的Hadoop发行版的版本(hadoop-ec2)不需要与运行映像的Hadoop版本相同。

最后,作为一个直接修复,您可以找到要使用的AMI,并强制将AMI_IMAGE设置为launch-hadoop-masterlaunch-hadoop-cluster脚本中的图像名称。