Hadoop:增加块大小时性能下降?

时间:2011-11-23 21:39:29

标签: hadoop hdfs

在增加Hadoop中的块大小时,有没有人看到任何性能下降?我们正在建立一个集群,我们预计每天都会有大量的数据(100个GB),我们需要存储,所以我的想法是我们可以增加块大小。然而,有人担心是否会降低将要运行的MapReduce作业的速度。我能看到它发生的唯一方法是块的数量是否少于可以在集群上运行的任务的数量。

是否有人有关于此主题的任何其他信息?

1 个答案:

答案 0 :(得分:2)

以下是需要考虑的几件事:

  • 不建议使用太小的文件 - 文件系统元数据保存在namenode内存中 - 文件数量的硬件限制。
  • HDFS上的默认块大小为64MB,但生产服务器中最常见的是128MB。
  • 默认情况下,HDFS块较大,与搜索时间相比,块的传输时间较长 - 因此传输时间较长 由多个块组成的大型文件在磁盘传输时运行。
  • MapReduce任务一次只能在一个块上运行,因此如果任务太少(集群中的节点少),您的作业可能会很慢。
  • 将块大小设置为接近HDFS上文件的大小并不是一个好主意,因为它会增加错误数据的可能性。假设您有1个1GB的文件,并且您的块大小也是1 GB。假设您的云上的复制因子为3(默认或最常见)。这意味着您将整个文件作为3台计算机上的一个块。与仅在3台计算机上复制了一些文件块相比,这是不同的。
  • 如果(输入处理文件的)块数少于您可以在您的环境中同时运行的任务数 - 这很好 - 这意味着您正在以最大并行度处理所有输入数据,并且仍然拥有可用资源。