我有一个EC2映像,它是我用安装的Hadoop制作的。然而,我在实例化时将其设置为无角色(它不是从属或主)。为了启动Hadoop集群,我在EC2上启动尽可能多的实例(节点),然后我必须对每个节点做以下3件事:
- 更新/etc/hosts以包含必要的IP地址
- 如果是master节点,则更改$HADOOP_HOME/conf/masters和$HADOOP_HOME/conf/slaves
- 启用节点之间的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帐户,它是为方便设置和运行而设计的。