自动扩展EMR-是否需要?我应该只使用EC2吗?我应该只使用Qubole吗?

时间:2014-11-05 00:13:01

标签: hadoop amazon-web-services emr autoscaling qubole

为了减少配置时间,我们决定保留一个包含5个实例的专用EMR集群(我们预计需要大约5个)。如果我们需要更多,我们认为我们需要实现某种自动缩放。

我对EMR一点都不熟悉 - 它是否支持自动缩放?我在文档中找到了这个:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-manage-resize.html

这是寻找自动缩放的正确位置还是我误解了它们的意思"调整大小"。我已经读到EMR的一个好处是"按需处理"而且我认为它会在ec2实例之间分配负载,而无需指定多少个实例,因此这给我的印象就是它自己对ec2实例进行了缩放,这意味着我们不需要自己进行自动缩放。我是否误解了需求处理"按需处理"装置

如果我提供的调整大小链接适合我尝试做的事情,那么是否有人有确定何时调整大小的经验?该文档仅描述了如何但不是,例如,如何为何时调整大小设置警报。我已经使用了他们的常规自动缩放服务,它允许您根据特定条件调整大小,但我在这里没有看到。

我还不确定自动调节EMR是不是一个坏主意 - 它是否过于复杂(因为像Qubole这样的整个公司提供此功能)或者可能不是很有用,因为EMR已经使用了它所需的任何计算能力?我不太了解EMR实际提供的内容,所以也许这就是为什么我感到困惑。

2 个答案:

答案 0 :(得分:6)

您链接的页面显示了手动或以编程方式增加群集中节点的方法。我无法找到有关EMR自动缩放的任何其他内容。

除非我们错过了一些事实,否则你仍然需要提出自己的缩放算法和流程。如果您考虑的因素包括您的工作积压,您支付的时间单位,使用较便宜的“现货”实例,多个集群等,这可能不是一项微不足道的工作。

除了增加群集的大小外,还有缩小规模。 EMR允许(手动或以编程方式)任务节点,但他们声明它们不适用于核心节点。您必须通过AWS功能终止核心节点,并有丢失数据的风险。如果您的工作负载随着时间的推移而增加和减少,核心节点的缩小将有助于降低成本。

Qubole自动处理所有这些开箱即用的事情。您可以从UI或API运行作业,它可以启动,调整大小或调整群集大小。完成后,它会缩小或终止群集。它还允许您一次运行最少数量的节点。我还听说过Qubole节点的启动时间明显快于EMR。

希望这会对你有所帮助。

答案 1 :(得分:1)

AWS目前(截至2016年底)不支持自动扩展,作为EMR的一部分。但是,EMR API提供了所有必要的成分:1)收集监控数据,2)以编程方式上下扩展集群。

基本上,为EMR集群实现自动扩展有两个主要选项:

  1. 自动扩展循环:在服务器上运行并持续监视群集当前负载的进程。可以定期收集性能指标(内存,CPU,I / O等)并存储在数据库中。根据性能指标评估自动调节规则,并在需要时按比例放大或缩小集群的任务节点。
  2. 基于事件的自动调节:使用CloudWatch指标(例如metrics for EMRmetrics for EC2),您可以编程方式定义在特定条件下触发的触发器(例如,如果所有节点的平均CPUUtilization超过80%,则添加节点。
  3. 这两种选择各有利弊。选项2的优点是它是一种无服务器方法(不需要运行自己的服务器)。缺点是CloudWatch指标是批量收集的(通常是五分钟间隔),因此数据可能会稍微延迟或不太精确。此外,基于事件的方法可能无法提供检查群集扩展的当前和历史状态所需的工具。另一方面,选项1确实需要服务器,但因此需要更多控制来自定义缩放规则的逻辑。此外,它允许保留可缩放决策历史记录的可搜索记录。

    您可以查看 Themis ,这是在Atlassian开发的EMR自动缩放框架。 Themis实现了自动调节循环,如上面选项1中所述。当前功能包括主动和自动缩放,它带有Web UI,并且该工具非常易于配置。