I/O 和 RAM 限制对于 Hadoop 性能很重要。但是磁盘速度与 I/O 有关吗?

I/O 和 RAM 限制对于 Hadoop 性能很重要。但是磁盘速度与 I/O 有关吗?

Hortonworks 表示:“大多数情况下,Hadoop 集群的性能不会受到磁盘速度的限制——I/O 和 RAM 限制更为重要。”*

磁盘速度与 I/O 限制有何无关?

答案1

从技术上来说,这个评论是正确的,但有细微差别。您必须了解您的 MapReduce 作业正在做什么。

虽然磁盘转速很重要,但它可能不如网络速度,无论是关闭系统还是关闭交换机,特别是在您在 Reduce 阶段生成大量输入数据的情况下,因为 Reducer 无法考虑数据局部性。

很多时候,你会发现集群使用 7200rpm 驱动器,配置为磁盘阵列(因为这是 Hadoop 社区的一般建议,以平衡成本、性能和可靠性)。在大多数配置中,您大概不会发现每个主轴有超过 1-2 个读取器/写入器(认为:每个主轴 1-2 个任务)。由于旋转延迟的改善,性能不会得到很大改善(尽管我在这里故意回避 SSD 问题)。

使用现代 7200rpm 驱动器,您将获得 100-200MBytes/s 的速度……或相当于每秒 1-2Gbps。我的集群构建为大约 25Gbps磁盘I/O ...但为了在 shuffle 和 Reduce 阶段充分利用该性能,我需要 至少网络上有那么多可用的性能只是为了从系统中获取数据。

如果我只需要在交换机上与其他节点通信,那么这将使我 (几乎) 达到 1:1 的超额订阅。如果我的集群桥接多个交换机,我现在必须确保我有足够的容量来处理在 shuffle 期间可能发生的大量东西向流量,因为数据会从映射器移动到 Reducer。

如果无法将数据传送到集群中需要的位置,那么世界上所有的磁盘 I/O 都无济于事。数据局部性和机架感知会有所帮助,但只能在整个 MR 过程的某些部分起作用。

答案2

磁盘速度与 I/O 限制有何无关?

我完全同意你的观点,它们是相互关联的,特别是对于 Hadoop 而言——我刚刚设计完一对新的集群,磁盘速度绝对是其中一个重要方面。

答案3

可能的解释:

  • 并非所有 I/O 都是磁盘 I/O,网络 I/O 通常是集群环境中的一个问题
  • 磁盘的数量和配置对整体磁盘 I/O 的影响通常比磁盘本身的速度更大(例如,在 RAID0 配置中,2 个较慢的磁盘在总体价格相同的情况下,其性能可以优于单个非常快的磁盘)
  • RAM 限制总是会超过磁盘速度——一旦系统开始交换,无论磁盘速度有多快,性能就会下降(确实,与 I/O 无直接关系)

相关内容