如何在hadoop实例类型之间找到正确的部分

Gav*_*iel 6 hadoop elastic-map-reduce instancetype

我试图找出有多少MASTER,CORE,TASK实例对我的工作是最佳的.我找不到任何解释如何弄明白的教程.

  • 我怎么知道我是否需要超过1个核心实例?我会在EMR的控制台中看到哪些"症状"的指标会暗示我需要多个核心?到目前为止,当我尝试使用1*core + 7*任务实例执行相同的工作时,它的运行方式与8*core相似,但对我来说没有多大意义.或者,我的工作是如此受CPU限制,以至于IO很小?(我有一个仅映射作业,将apache日志文件解析为csv文件)

  • 是否有这样的东西有超过1个主实例?如果是,何时需要?我想知道,因为我的主节点几乎只是等待其他节点在95%的时间内完成工作(0%CPU).

  • 主设备和核心节点可以完全相同吗?当1和唯一节点执行所有操作时,我可以拥有仅主集群.看起来能够拥有一个集群,其中一个节点是主节点和核心节点,其余节点是任务节点,这似乎是合乎逻辑的,但似乎不可能通过EMR以这种方式设置它.这是为什么?

Tar*_*ato 1

主实例充当管理器并协调整个集群中的所有内容。因此,它必须存在于您运行的每个作业流程中,但您只需要一个实例即可。除非您部署单节点集群(在这种情况下,主实例是唯一运行的节点),否则就实际的 MapReducing 而言,它不会执行任何繁重的工作,因此该实例不必是功能强大的机器。

您需要的核心实例数量实际上取决于作业以及您想要处理它的速度,因此没有单一的正确答案。一件好事是您可以调整核心/任务实例组的大小,因此如果您认为您的作业运行缓慢,那么您可以向正在运行的进程添加更多实例。

核心实例组和任务实例组之间的一个重要区别是,核心实例将实际数据存储在 HDFS 上,而任务实例则不然。反过来,您只能增加核心实例组(因为删除正在运行的实例会丢失这些实例上的数据)。另一方面,您可以通过添加或删除任务实例来增加和减少任务实例组。

因此,这两种类型的实例可用于调整作业的处理能力。通常,您对核心实例使用按需实例,因为它们必须始终运行且不能丢失,而对任务实例使用竞价实例,因为丢失任务实例不会终止整个作业(例如,任务实例未完成的任务)将在核心实例上重新运行)。这是使用竞价实例经济高效地运行大型集群的一种方法。

此处提供了每种实例类型的一般描述:

http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/InstanceGroups.html

此外,该视频对于有效使用 EMR 可能很有用:

https://www.youtube.com/watch?v=a5D_bs7E3uc

  • 这一切我都知道。但是我怎么知道 1 个核心是否足够并且所有其余的(让它是 8 或 64 或 200)都可以是任务,或者需要有一个比例(显然取决于我的工作),如果我通过(添加太多任务实例)会减慢工作速度,因为没有“足够”的核心实例,并且核心实例的 IO(如果我理解这一点,所有任务实例都会使用)将成为瓶颈 (3认同)
  • 是的,但我的问题正是:EMR 控制台上的哪些措施与此相关?目前我做的唯一一件事就是使用不同的配置运行相同的作业并测量它所花费的时间,但它不太准确。 (3认同)