给定一个包含mapper,reducer类的大型数据文件和jar文件,我希望能够知道,应该形成多大的Hadoop集群(我的意思是我需要多少台机器来构建一个集群才能使给定的作业高效运行。) 我在给定的数据文件上运行作业。
答案 0 :(得分:0)
假设您的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分钟。我正在运行4GB的400GB数据集(400/4 GB)。如果我的工作花了12分钟,我想要它。
(30 minutes x 2 nodes) x (400 / 4) GB / 12 = 500 nodes
这在许多方面都是不完美的:
总之,没有超级准确的方式来做你说的话。你现在真正做的最好的是实验和外推。您可以进行测试的节点越多越好,因为外推部分会更准确。
根据我的经验,当从200个节点到800个节点进行测试时,该指标非常准确。从1个节点或2个节点到800个,我感到很紧张。但20个节点到800个节点可能没问题。