我正在尝试在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_BUCKET
和HADOOP_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_BUCKET
是hadoop-images
, HADOOP_VERSION
是0.19.0
, ARCH
是x86
,如果您使用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-master
和launch-hadoop-cluster
脚本中强制将AMI_IMAGE
设置为图像名称。