我试图找出有多少主任务、核心任务示例最适合我的工作。我找不到任何教程来解释我是如何理解它的。
如何知道是否需要多个核心示例?在emr的控制台中,我会看到哪些指标提示我需要多个核心的“症状”?到目前为止,当我在1core+7task示例上尝试相同的任务时,它的运行方式与8*core非常相似,但对我来说没有太大意义。或者有没有可能我的工作是如此多的cpu限制,io是如此之小(我有一个map-only作业,它将apache日志文件解析为csv文件)
有没有一个以上的主示例?如果是,什么时候需要?我想知道,因为我的主节点几乎只在95%的时间里等待其他节点完成任务(0%cpu)。
主节点和核心节点可以相同吗?当1和only节点执行所有操作时,我可以拥有一个仅主节点的集群。看起来有一个集群,其中一个节点是主节点和核心节点,其余的节点是任务节点,这是合乎逻辑的,但是用emr来设置它似乎是不可能的。为什么?
1条答案
按热度按时间dsf9zpds1#
主示例充当管理器并协调整个集群中的所有内容。因此,它必须存在于您运行的每个作业流中,但您只需要一个示例。除非您部署的是单节点集群(在这种情况下,主示例是唯一运行的节点),否则就实际的mapreducing而言,它不会做任何繁重的工作,因此该示例不必是一台功能强大的机器。
您需要的核心示例的数量实际上取决于作业以及处理它的速度,因此没有一个正确的答案。一件好事是,您可以调整核心/任务示例组的大小,因此如果您认为您的作业运行缓慢,那么您可以向正在运行的进程添加更多示例。
核心示例组和任务示例组之间的一个重要区别是,核心示例在hdfs上存储实际数据,而任务示例则不存储。反过来,只能增加核心示例组(因为删除正在运行的示例会丢失这些示例上的数据)。另一方面,您可以通过添加或删除任务示例来增加和减少任务示例组。
因此,这两种类型的示例可用于调整作业的处理能力。通常,您对核心示例使用ondemand示例,因为它们必须一直运行并且不能丢失;对任务示例使用spot示例,因为丢失的任务示例不会杀死整个作业(例如,任务示例未完成的任务将在核心示例上重新运行)。这是通过使用spot示例经济高效地运行大型集群的一种方法。
每个示例类型的一般说明如下:
http://docs.aws.amazon.com/elasticmapreduce/latest/developerguide/instancegroups.html
此外,此视频可能有助于有效使用电子病历:
https://www.youtube.com/watch?v=a5d_bs7e3uc