【问题标题】:Setting up multi node Hadoop cluster automatically自动设置多节点 Hadoop 集群
【发布时间】:2015-11-26 21:32:22
【问题描述】:

我有一个安装了 Hadoop 的 EC2 映像。但是,我将其设置为在实例化时无角色(它不是从属或主控)。为了启动 Hadoop 集群,我在 EC2 上启动了所需数量的实例(节点),然后我必须对每个节点执行以下 3 项操作:

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

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

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

我不确定这是否可能,因为 IP 地址每次都会不同,但我想知道其他人尝试过什么或常用什么。有没有一种好方法可以自动化这些过程,所以每次我设置一个集群进行测试时,我不必为每个节点都做这些?我对Linux脚本不太了解,这可以通过脚本实现吗?还是我只需要手动配置每个节点?

【问题讨论】:

  • 您有什么理由不使用 Amazon 的 Elastic MapReduce?在过去的一年里,我一直在使用它,并且效果很好 - 您创建 JAR,将数据加载到 S3 并提供您想要运行的机器数量和类型。
  • 我应该澄清一下,最终目标是在我们自己的一组服务器上拥有一个独立于 AWS、CDH 等的集群。虽然服务器还不可用,所以我制作了自己的 EC2 映像,并在其上安装了 Hadoop。在我们的服务器准备好之前,我一直在使用 EC2 来测试我们拥有的东西,但是由于我最终无法使用它,所以我正在寻找一个不涉及 AWS 或 Cloudera 的答案。

标签: hadoop amazon-ec2 configuration-management


【解决方案1】:

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

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

【讨论】:

  • 感谢您的想法,我一定会考虑的。我正在尝试查找是否有任何特定于 Hadoop 的方法。如果我找不到任何东西,这绝对是我要走的路线。
  • 差不多两年后我也有类似的需求。愿意分享您是如何解决问题的吗? @埃里克
  • @Arun Jose 不幸的是,在我发布这个问题之后,我并没有在那个项目上停留太久,所以我从来没有找到一个好的解决方案。如果您同时提出了一个可靠的解决方案,请将其发布为这个问题的答案:)
【解决方案2】:

我想看看有没有像这样的实用程序,但找不到。

所以我使用 python、salt 和 fabric 为“Hadoop 配置自动化”构建了一个自动化实用程序。

准备好 hadoop 集群涉及很多步骤。

  • 由 EC2 实例启动。
  • 创建安全组。
  • 设置 ssh 密钥,以便实例主实例可以 ssh 到从属实例。
  • 安装 JDK。
  • 安装 hadoop。
  • 指定节点为namenode,secondary namenode, slaves -make hadoop 配置文件更改..
  • 启动服务

为 4 个节点做所有这些事情需要 1 小时。对于我想做的工作,我需要重复且经常使用大量节点,因此需要自动化。

对于需要在每个节点中完成的步骤(例如:jdk 安装、hadoop 包安装等),我使用 salt 进行配置管理。 Salt 提供类似 puppet 和 chef 的功能。

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

如果您已经有一个 aws 帐户,它的设计目的是便于设置和运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 2015-12-20
    相关资源
    最近更新 更多