自动设置多节点Hadoop集群



我有一个EC2映像,它是我用安装的Hadoop制作的。然而,我在实例化时将其设置为无角色(它不是从属或主)。为了启动Hadoop集群,我在EC2上启动尽可能多的实例(节点),然后我必须对每个节点做以下3件事:

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

我希望能够找到一种自动完成这项工作的方法,这样对于任意数量的节点,我就不必在每个节点上设置所有这些设置。

其他人如何自动设置Hadoop集群?有没有一种方法可以使网络部分自动化?

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

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

有不同的工具可用于这些任务,例如Puppet或Salt。维基百科上有一个比较。

我想看看是否存在这样的实用程序,但找不到。

因此,我使用python、salt和fabric为"Hadoop供应自动化"构建了一个自动化实用程序。

准备好hadoop集群需要相当多的步骤。

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

对4个节点执行所有这些操作需要1个小时。对于我想做的工作,我需要重复地做这些工作,而且经常需要大量的节点,因此需要自动化。

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

请随意结账https://github.com/varmarakesh/aws-hadoop

如果你已经有了aws帐户,它是为方便设置和运行而设计的。

相关内容

  • 没有找到相关文章

最新更新