AWS EMR Auto Scaling

时间:2013-02-21 09:27:06

标签: amazon-web-services hive amazon-emr autoscaling

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

  1. 生成Ad-hoc群集,其中在执行预先指定的Hive查询(在引导程序中)后,EMR群集被拆除。
  2. 以交互模式生成Hive集群,其中可以使用hive命令行客户端SSH连接到主服务器并提供Hive查询。
  3. 显然,在第二个选项中,群集将保持活动状态,直到明确要求终止。

    我想修改keep alive hive集群中的从节点数。我在emr faq中读到它只支持task-nodes的添加和删除,但仅添加core-nodes,但仅删除{{1}}。核心节点有助于HDFS存储,但任务节点却没有。

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

4 个答案:

答案 0 :(得分:4)

查询数量的放大和缩小与任务节点(Hadoop的计算部分)的数量和核心节点(Hadoop的数据存储部分)的数量更相关,因为数据量是不改变。

当您想要扩展和缩小查询时,重新平衡和重新分发数据并不是一个好主意。它太慢而且太复杂,无法带来任何实际好处。

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

答案 1 :(得分:2)

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

(在旧帖子中发帖道歉,但对于发现此帖子的读者来说,答案可能仍然很有趣。)

答案 2 :(得分:1)

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

你考虑过看Qubole吗? Qubole根据负载提供自动放大和缩小功能。用户使用最小和最大从属节点配置群集。这些将是任务节点和数据节点。

答案 3 :(得分:0)

我知道我在这里参加派对有点晚了,但我多次遇到过类似的问题,我想分享一个可能的选择。我编写了一个Java工具来在处理过程中动态调整EMR集群的大小。它可能对某人有帮助。请查看:

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

源代码可在Github上找到