2011-11-07 142 views
0

我试图在亚马逊云上进行设置以运行一些hadoop MapReduce作业,但我努力成功地创建一个集群。我已经下载了ec2文件,有我的证书和密钥对文件,但我相信这是AMI导致我的麻烦。如果我试图运行带有主节点和n个从节点的群集,则使用标准兼容AMI启动n + 1个实例,然后在终端中运行代码“hadoop-ec2启动群集名称n”。主节点成功,但从节点开始启动时出现错误,说“缺少参数-h(缺少AMI)”,但我不完全确定如何进展。亚马逊云上的Hadoop

此外,我的一些工作将需要改变hadoops参数设置(特别是mapred-site.xml配置文件),是否有可能改变这个文件,如果有,我该如何获得访问权限? hadoop已经安装在亚马逊机器上了,这个文件可以访问和修改吗?

感谢

回答

1

你试过Amazon Elastic MapReduce?这是一个简单的API,可根据需要调用指定大小的Hadoop集群。

然后手动创建自己的群集比较容易。

但是,一旦工作流程默认完成,它会关闭集群,并将输出保留在S3上。如果你需要的只是简单的捣鼓,那么这可能是一条路。

如果您需要永久存储HDFS内容(例如,如果您在Hadoop之上运行HBase),您实际上可能需要在EC2上拥有自己的群集。在这种情况下,您可能会发现Cloudera为Amazon EC2分发Hadoop很有用。

上的节点

涂改Hadoop配置,将开始可能使用EC2引导操作

问:如何配置我的工作流的Hadoop设置?

Elastic MapReduce默认Hadoop配置适用于大多数工作负载。但是,根据您的作业流程的具体内存和处理要求,调整这些设置可能是适当的。例如,如果您的作业流程任务需要大量内存,您可以选择每个核心使用更少的任务,并减少作业跟踪器堆大小。对于这种情况,可以使用预定义的引导操作来配置启动时的作业流程。有关配置详细信息和使用说明,请参阅开发人员指南中的配置内存强化引导操作。还提供了一个额外的预定义引导操作,允许您将群集设置自定义为您所选择的任何值。有关使用说明,请参阅开发者指南中的Configure Hadoop Bootstrap Action

关于要启动集群的方式,请澄清:

如果我试图运行具有主节点和n个从节点的群集,我开始使用标准的n + 1个实例然后在终端中运行代码“hadoop-ec2启动集群名称n”。主节点成功,但从节点开始启动时出现错误,说“缺少参数-h(缺少AMI)”,但我不完全确定如何进展。

你究竟如何尝试启动它?你使用的是什么AMI?

+0

首先我使用了我能找到的任何AMIs。我在终端上运行一段代码,比如“ec2-describe-images -o amazon”,然后选择AMI工作的任何一个;然后使用“ec2-run-instances amixxxxxx -n 5 -k keypair”启动具有此AMI的实例,最后尝试启动具有“hadoop-ec2启动集群名称4”的集群(这是针对具有4个从集群的集群节点)。说实话,我对云很陌生,并不知道自己在做什么。 –

+0

我希望改变的参数是hadoop的工作参数,如io.sort.mb(用于在映射和缩小阶段之间进行排序的缓冲区内存量)等...它们通过更改文件(mapred -site.xml)存储在hadoop文件夹中。 –

+0

@Jonathan Viccary好的,我看到,您正在使用Hadoop的src/contrib/ec2/bin中的“hadoop-ec2”脚本。如果你想以这种方式启动hadoop集群......我看了看脚本,发现它自动启动实例 - 你不必手动调用ec2-run-instances。但你必须配置它:http://wiki.apache.org/hadoop/AmazonEC2#Setting_up –