我正在研究AWS上的Hive(特别是EMR)。他们提供了两个选项
hive
命令行客户端SSH连接到主服务器并提供Hive查询。显然,在第二个选项中,群集将保持活动状态,直到明确要求终止。
我想修改keep alive hive集群中的从节点数。我在emr faq中读到它只支持task-nodes
的添加和删除,但仅添加core-nodes
,但仅删除{{1}}。核心节点有助于HDFS存储,但任务节点却没有。
我想向正在运行的集群添加更多核心节点,并在运行的查询数量较少时将其缩小。有没有办法实现这一点(可能是使用cloudwatch)?
答案 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上找到