基本问题是launch-hadoop-master
脚本执行的图像搜索没有返回任何结果。最可能的原因是不同地区可用的 AMI 不同(但这可能是由于您对S3_BUCKET
和HADOOP_VERSION
中所做的任何更改hadoop-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 分发的默认设置是S3_BUCKET
is hadoop-images
,HADOOP_VERSION
is0.19.0
和ARCH
isx86
如果您使用的是 m1.small实例)。如果您搜索US-West-2 区域中的公共 AMI,您会看到 Hadoop 映像并不多,但如果您搜索US-East-1 区域中的公共 AMI,您会看到那里不少。因此,解决此问题的一种方法是在 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-master
launch-hadoop-cluster