【问题标题】:AWS EMR Auto ScalingAWS EMR 自动扩展
【发布时间】:2013-02-06 13:29:30
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    当您想扩大和缩小查询时重新平衡和重新分配数据并不是一个好主意。它太慢太复杂,无法带来任何真正的好处。

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

    【讨论】:

    • 如果需要一个保持活动的蜂巢集群来避免为每个查询设置新的 EMR 集群并在完成后将其拆除的开销,该怎么办?
    • 是的,可以调查一下……感谢您指出这个方向。我想我的用例不会通过虚拟 hive emr 集群来实现,所以将关闭这个问题。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      让数据节点也按比例放大是有一些价值的。对于长时间运行的集群,仅使用任务节点扩展太多可能会导致 HDFS 瓶颈(如果有大量中间数据。)

      你考虑过看趣博乐吗? Qubole 提供基于负载的自动扩展和缩减。用户配置具有最小和最大从节点的集群。这些将是任务节点和数据节点。

      【讨论】:

        【解决方案4】:

        我知道我在这里聚会有点晚了,但我多次遇到类似的问题,我想分享一个可能的替代方案。我编写了一个 Java 工具来在处理过程中动态调整 EMR 集群的大小。它可能会帮助某人。在以下位置查看:

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

        源代码在 Github 上提供

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-07-01
          • 2018-08-20
          • 2021-09-17
          • 2018-05-01
          • 2021-01-27
          • 2021-04-22
          • 1970-01-01
          • 2020-10-14
          相关资源
          最近更新 更多