AWS EMR Auto Scaling

问题描述:

我正在研究AWS上的Hive(特别是EMR)。它们提供了两个选项AWS EMR Auto Scaling

  1. 产生Ad-hoc群集,其中在执行预先指定的Hive查询(在引导程序中)后执行EMR群集评估。
  2. 在交互模式下产生一个Hive集群,其中一个可以通过SSH连接到主服务器,并使用hive命令行客户端提供Hive查询。

很明显,在第二个选项中,集群将保持活动状态,直到明确要求终止。

我想修改一个keep alive hive集群中的从节点数量。我在emr faq中读到它只支持task-nodes的添加和删除,但仅仅是添加(但不删除)core-nodes。核心节点有助于HDFS存储,但任务节点不会。

我想向正在运行的群集添加更多核心节点,并在正在运行的查询数较少时将其缩小。有没有办法做到这一点(可能是使用cloudwatch)?

查询数量的增加和减少与任务节点数量(Hadoop的计算部分)和核心节点数量(Hadoop的数据存储部分)的数量相关性更大,因为数据量没有改变。

当您想要扩展和缩小查询时,重新平衡和重新分配数据不是一个好主意。它太慢而且太复杂,不能提供任何真正的好处。

无需配置EMR的“支付使用费用”和快速启动应该会鼓励您在不需要它时终止集群,并在需要时启动新集群。 您可以优化EMR上的Hive,以便在启动群集时将您的表元数据存储在外部MySQL数据库中,以避免丢失或重复表定义。

+0

那么,如果需要什么保持活跃的蜂巢集群,避免设置新的EMR集群为每个查询的开销并在完成后撕毁它? – 2013-02-25 13:39:32

+0

也许你应该考虑Redshift(http://aws.amazon.com/redshift/) – Guy 2013-03-02 15:38:23

+0

是的,可以看看...感谢指向这个方向。我想我的用例不会通过虚拟hive emr集群来实现,所以会关闭这个问题。 – 2013-03-03 16:26:20

使数据节点也可以放大也是有一定价值的。对于长时间运行的集群,仅使用任务节点进行缩放可能会导致HDFS瓶颈(如果存在大量中间数据)。

您是否考虑过查看Qubole? Qubole提供基于负载的自动扩展和缩减。用户使用最小和最大从节点配置群集。这些将是任务节点和数据节点。

你可以看看Themis,一个在Atlassian开发的EMR自动缩放框架。目前的功能包括主动式和反应式自动缩放,它带有一个Web UI,并且该工具非常易于配置。

(道歉,张贴在一个古老的线程,但得到的答复仍然可以让读者发现这个线索很有趣。)

我知道我是一个有点晚了这里的聚会,但我有一个类似的问题很多次,我想分享一个可能的选择。我已经编写了一个Java工具来在处理过程中动态调整EMR集群的大小。它可能有助于某人。瞧瞧吧:

http://www.lopakalogic.com/articles/hadoop-articles/dynamically-resize-emr/

的源代码可在Github上