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

如何在hadoop实例类型之间找到正确的部分,hadoop,elastic-map-reduce,instancetype,Hadoop,Elastic Map Reduce,Instancetype,我试图找出有多少主任务、核心任务实例最适合我的工作。我找不到任何教程来解释我是如何理解它的 如何知道是否需要多个核心实例?在EMR的控制台中,我会在指标中看到哪些“症状”提示我需要多个核心?到目前为止,当我在1*core+7*task实例上尝试相同的工作时,它的运行与在8*core上的运行非常相似,但对我来说没有多大意义。或者有没有可能我的工作是如此多的CPU限制,IO是如此之小?(我有一个map-only作业,可以将apache日志文件解析为csv文件) 是否存在这样一种情况,即拥有多个主实

我试图找出有多少主任务、核心任务实例最适合我的工作。我找不到任何教程来解释我是如何理解它的

  • 如何知道是否需要多个核心实例?在EMR的控制台中,我会在指标中看到哪些“症状”提示我需要多个核心?到目前为止,当我在1*core+7*task实例上尝试相同的工作时,它的运行与在8*core上的运行非常相似,但对我来说没有多大意义。或者有没有可能我的工作是如此多的CPU限制,IO是如此之小?(我有一个map-only作业,可以将apache日志文件解析为csv文件)

  • 是否存在这样一种情况,即拥有多个主实例?如果是,何时需要?我想知道,因为我的主节点几乎95%的时间都在等待其他节点完成任务(0%的CPU)

  • 主节点和核心节点可以相同吗?我可以拥有一个仅主节点的集群,当1和唯一节点完成所有操作时。看起来,拥有一个包含1个节点的集群是合乎逻辑的,1个节点是主节点和核心节点,其余的节点是任务节点,但似乎不可能使用EMR以这种方式进行设置。为什么呢


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

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

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

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

每个实例类型的一般说明如下所示:

此外,本视频可能有助于有效使用电子病历:


所有这些我都知道。但是,我如何知道一个核心是否足够,其余的(8个、64个或200个)是否都可以是任务,或者需要有一个比例(显然取决于我的工作),如果我通过(添加太多任务实例),会因为没有“足够”的核心实例和核心实例的IO而减慢作业速度(如果我理解这一点,所有任务实例都会使用)将成为瓶颈哦,我明白了。这是一个有趣的问题,但我恐怕我从未尝试过。我认为我从未见过通过添加更多任务节点来降低我的工作效率,但这可能只是我的工作。你可以通过在EMR控制台上监视你的工作并调整核心/任务的大小来解决这个问题组处理长期运行的作业。是的,但我的问题是:EMR控制台上的哪些度量与此相关?目前我所做的唯一一件事是使用不同的配置运行同一个作业,并度量所花费的时间,但这并不太准确。您有机会找到此问题的答案吗?关于这一点很重要。一个关键点是,进出任务节点的数据必须经过主节点。我猜任务节点的数量可以因此增加,直到它们停止满负荷运行:我认为这表明数据通过主节点的速度不够快(如果您可以监控主机上的数据传输速度,这将对应于饱和率)。