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



我正在尝试在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,总是得到相同的错误消息。

有人遇到过这个问题吗?

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

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发行版的默认值是S3_BUCKEThadoop-images, HADOOP_VERSION0.19.0, ARCHx86,如果您使用m1。小实例)。如果您搜索US-West-2区域的公共ami,您将看到没有很多Hadoop映像,但是如果您搜索US-East-1区域的公共ami,您将看到有相当多的Hadoop映像。因此,解决此问题的一种方法是在US-East-1区域工作(这是最简单的),或者,或者,通过export EC2_URL=https://ec2.us-east-1.amazonaws.com在登录脚本中设置EC2_URL,但现在您需要确保从AWS控制台将密钥放在该区域。

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

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

不返回美国东部-1地区的任何图像。注意,运行hadoop-ec2命令的Hadoop发行版的版本(HADOOP_VERSION)不需要与将要运行映像的Hadoop版本相同。

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

最新更新