基本问题是,搜索脚本执行的图像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
是hadoop-images
,HADOOP_VERSION
是0.19.0
和ARCH
是x86
如果您使用m1.small实例)。如果您搜索public AMIs in the US-West-2 region,则会看到Hadoop映像并不多,但如果搜索public AMIs in the US-East-1 region,则会看到有不少。因此,解决这个问题的方法之一是在美国东部地区工作(这是最简单的),或者通过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
到图像名称。