【问题标题】:Should local HDFS access be faster?本地 HDFS 访问是否应该更快?
【发布时间】:2012-08-13 21:31:09
【问题描述】:

我在一些 aws 实例上运行 HDFS (0.20.2)。我强制 HDFS 将文件的所有块写入一个数据节点(通过将复制减少到 1 并仅添加 1 个数据节点)。

在本地访问文件(在存储块的数据节点上)或从集群中的另一台主机访问文件时,我看不到任何显着的性能差异。本质上,执行 copyToLocal 所需的时间与我在本地数据节点或任何其他机器上的时间完全相同(通过 JAVA-API 访问也是如此) 不应该有区别吗?

文件大小为 3.5 GB,块大小为 128MB(如果这很重要)。普通中等实例的实例。

更新

感谢您的建议,但实际问题仅发生在小型或中型实例上,而在大型实例上,我得到了预期的行为(因此本地访问明显快于 ~20 秒与 ~40 秒)。

【问题讨论】:

  • 1.运行 copyToLocal 命令的客户端曾经在数据所在的数据节点上,然后在另一台机器上? 2.namenode在同一台机器上?
  • 1.是 2. 否,namenode 位于没有数据节点的另一台机器上
  • 由于您只有一个数据节点,因此副本放置策略没有任何区别。作为旁注,你能告诉我们你在这两种情况下的时间吗?
  • 好吧,运行 copyToLocal 我得到了本地和远程客户端的 ~1:30。请注意,所有机器都在一个可用区中。我还运行了一个 hadoop fs -cat > /dev/null,它在本地和远程机器上都运行了 38 秒

标签: hadoop hdfs


【解决方案1】:

不完全确定我理解这个问题,但您可能对HDFS-2246 感兴趣,当块位于数据节点本地时,它会加快读取速度。在1.0.0 release notes 和这个HBaseCon 2012 presentation 中也提到了它。

【讨论】:

    猜你喜欢
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 2016-03-31
    • 1970-01-01
    • 2021-06-17
    • 2017-09-01
    相关资源
    最近更新 更多