我对hadoop很陌生,我的问题很简单:有没有任何研究或声明可以根据我有多少事务(数据库事务)和多少项(每个事务中的项)来确定有多少节点将使用hadoop?
免责声明:这是一个非常棘手的问题,可能会有一本关于这个主题的书。此外,我在这里有足够的主观意见,让我对在StackOverflow上记录它感到紧张,所以我希望这有帮助,但不要认为这是某种你必须听的圣经。
此外,您的问题对于Hadoop问题来说有点偏离基础。Hadoop很少谈论事务和项目。您将文件放在HDFS中,而不是记录中(尽管这些文件可以有记录)。你的项目数量(记录?)并不重要——数据大小很重要。Hadoop中不存在传统意义上的事务。我无论如何都会回答你的问题,但你在向我发出警告。确保Hadoop适合您尝试做的事情。人们通常会问:我需要在HDFS中放入多少数据(TB)?我需要将多少TB/天加载到HDFS?我的MapReduce作业需要处理多少GB?
以下是一些对hadoop很有帮助的建议:hadoop可以很好地扩展。对于5个节点或500个节点,代码保持不变。性能和存储可以线性扩展。在3-4个节点上尝试一下,看看会发生什么,然后乘以你真正需要的。
以下是我有时会给人们介绍的一些指南。
http://hortonworks.com/blog/how-to-size-your-hadoop-cluster/——这个来自hortonworks的对我来说有点太高级了,但它可能会帮助你。
http://blog.cloudera.com/blog/2013/08/how-to-select-the-right-hardware-for-your-new-hadoop-cluster/--一篇不错的文章,解释了在调整集群规模时需要考虑的一些要点。
我关于数据存储的经验法则(即,其中一些是基于我的意见):
- 我希望集群的存储利用率达到50%。然后,您可以进行3倍的复制。使用MapReduce,您将需要相当大的"暂存空间"来进行临时作业输出和正在进行的数据转换。这意味着您需要6倍(2倍和3倍)的基本数据存储:10TB的数据意味着您需要60TB的HDFS。别忘了压缩你的数据
- 在10个左右的节点下,您可以在一个节点上处理所有主节点。最终,您将需要用于主进程的独立节点
- 其次是作业吞吐量。这真的很难,因为很难判断一个任务在你还没有的硬件上运行需要多少时间。看看您的理论磁盘吞吐量,乘以磁盘数量,然后除以2(考虑HDFS开销)。然后,根据从磁盘上获取数据所需的时间进行计算,看看你对此是否满意。如果你不高兴,你需要更多的节点