提取hadoop作业的属性

提取hadoop作业的属性,hadoop,Hadoop,给定一个包含mapper、reducer类的大型数据文件和jarfile,我想知道应该形成多大的Hadoop集群(我的意思是,为了让给定的作业高效运行,我需要多少台机器才能形成集群) 我正在给定的数据文件上运行作业。假设您的MapReduce作业线性扩展,我建议进行以下测试,以大致了解您需要什么。我想当你说“高效运行”时,你心里一定有一段时间。。。这可能是某人的1分钟或某人的1小时。。。这取决于你 在一个节点上运行作业,该作业位于适合一个节点的数据子集上。。。或者更优选少量节点。此测试群集应代表

给定一个包含mapper、reducer类的大型数据文件和jarfile,我想知道应该形成多大的Hadoop集群(我的意思是,为了让给定的作业高效运行,我需要多少台机器才能形成集群) 我正在给定的数据文件上运行作业。

假设您的MapReduce作业线性扩展,我建议进行以下测试,以大致了解您需要什么。我想当你说“高效运行”时,你心里一定有一段时间。。。这可能是某人的1分钟或某人的1小时。。。这取决于你

在一个节点上运行作业,该作业位于适合一个节点的数据子集上。。。或者更优选少量节点。此测试群集应代表您稍后将购买的硬件类型

  [(time job took on your test cluster) x (number of nodes in test cluster)]
x [(size of full data set) / (size of sample data set)]
/ (new time, i.e., "run efficiently")

= (number of nodes in final cluster)
需要注意的一些事项:

  • 如果将“作业在测试集群上花费的时间”增加一倍,则需要两倍的节点
  • 如果将“新时间”减半,即希望作业运行速度加倍,则需要加倍的节点数
  • 样本的比率告诉您缩放结果的比例

例如:

我有一个在两个节点上运行30分钟的作业。我在400GB数据集(400/4GB)的4GB上运行此作业。我希望我的工作花12分钟

(30 minutes x 2 nodes) x (400 / 4) GB / 12 = 500 nodes

这在许多方面是不完美的:

  • 对于一个或两个节点,我没有充分考虑通过网络传输内容需要多长时间。。。mapreduce作业的主要部分。所以,你可以假设它需要比这个估计更长的时间。如果可以,可以在4-10个节点上测试作业,并从那里开始缩放
  • Hadoop不能很好地“缩小”。有一个特定的速度限制,你将无法通过MapReduce。在我见过的大多数集群上大约2-3分钟。也就是说,您不会因为拥有一百万个节点而使MapReduce作业在3秒钟内运行
  • 你的工作可能不会线性扩展,在这种情况下,这个练习是有缺陷的
  • 也许你找不到有代表性的硬件。在这种情况下,你必须考虑到你认为你的新系统会快多少

总之,没有一种超精确的方式来做到你所说的。你现在能做的最好的事情就是实验和推断。可以在更多节点上执行测试的情况越好,因为外推部分将更精确

根据我的经验,当从200个节点到800个节点进行测试时,这个度量是非常准确的。从1个或2个节点到800个节点我会很紧张。但是从20个节点到800个节点就可以了

你所说的“高效运行”是什么意思?“高效运行”的意思是,我应该在更少的时间内获得输出,并且我不应该在机器数量更少的情况下使用额外的机器(我有可用机器数量的上限)。