2012-10-15 195 views
0

我有安装了Hadoop的EC2映像。但是,我将其设置为在实例化时不起作用(它不是从属或主控)。为了启动Hadoop集群我启动的多个实例(节点),因为我需要在EC2上,然后我必须做以下3件事到每个节点:自动设置多节点Hadoop集群

  1. 更新/ etc/hosts文件包含必要的IP地址。
  2. 如果主节点更改$ HADOOP_HOME/conf/masters和$ HADOOP_HOME/conf/slave
  3. 在节点之间启用SSH访问。

我希望能够找到一种方法来自动执行此操作,以便对于任意数量的节点,我不必进入并在每个节点上设置所有这些设置。

其他人如何自动设置Hadoop集群?有没有办法使网络部分自动化?

我不知道这是可能的,因为IP地址每次都会有所不同,但我想知道其他人尝试了什么或常用什么。是否有一种自动化这些流程的好方法,所以每次我设置一个集群进行测试时,我不必为每个节点都执行这些操作。我不太了解Linux脚本,这是可能的脚本?或者我只需要处理手动配置每个节点?

+0

你有没有任何理由不使用Amazon的Elastic MapReduce?在过去的一年里,我一直在使用它,它的工作效果非常好 - 您创建JAR,将数据加载到S3并提供您想要运行的机器数量和类型。 – anonymous1fsdfds

+0

我应该澄清,最终目标是在我们自己的一组服务器上拥有一个独立于AWS,CDH等的集群。虽然服务器还不可用,所以我制作了自己的EC2映像,并安装了Hadoop。我一直在使用EC2来测试我们的服务器准备就绪,但由于我最终无法使用它,我一直在寻找一个不涉及AWS或Cloudera的答案。 –

回答

0

我没有使用Hadoop的经验,但一般来说,您拥有的任务称为“配置管理”。一般来说,你写一些“receipes”并为你的服务器定义“角色”(主,从)。这样的角色可能包含服务的配置文件,待安装的软件包,主机名更改,SSH密钥等。在服务器初次启动后,您可以告诉它们应该是哪个角色,并且它们将自动安装。

有不同的工具可用于这些任务,例如PuppetSalt。有一个comparison available at Wikipedia

+0

感谢您的想法,我一定会注意到这一点。我试图找出是否有任何Hadoop特定的方法。如果我找不到任何东西,这绝对是我将要采用的路线。 –

+0

我有类似的需求,差不多两年后。小心分享你如何解决你的问题? @Eric –

+0

@Arun Jose不幸的是,在我发布这个问题后,我没有再继续这个项目,所以我从来没有找到一个好的解决方案。如果您在此期间提出了一个可靠的解决方案,请将其作为这个问题的答案发布:) –

-1

我正要通过看看这些工具是否存在,但找不到。

因此,我使用python,salt和fabric为“Hadoop provisioning automation”构建了一个自动化实用程序。

为了让hadoop集群准备就绪有很多步骤。

  • 由EC2实例启动。
  • 创建安全组。
  • 设置ssh密钥,以便实例主机可以ssh到奴隶。
  • 安装JDK。
  • 安装hadoop。
  • 作为名称节点,辅助namenode的候节点,奴隶-make的Hadoop 配置文件的更改..
  • 开始服务

做所有这些事情说了4个节点是要采取1小时。对于我想要做的工作,我需要反复做这些事情,并且经常这样做,因为有大量节点,因此需要自动化。

对于需要在每个节点上完成的步骤(例如:jdk install,hadoop软件包安装等),我使用salt进行配置管理。 Salt提供类似木偶和厨师的功能。

请随时检查 https://github.com/varmarakesh/aws-hadoop

如果你已经有一个AWS账户,它是专为方便安装和运行。