我在一些aws实例上运行HDFS(0.20.2)。我强制HDFS将文件的所有块写入一个datanode(通过将复制减少到1并且只添加1个datanode)。
在本地(在存储块的datanode上)或从群集中的其他主机访问文件时,我没有看到任何显着的性能差异。基本上,执行copyToLocal所需的时间与本地数据节点或任何其他机器上的完全相同(同样适用于通过JAVA-API访问) 不应该有区别吗?
该文件的大小为3.5 GB,块大小为128 MB(如果这很重要)。普通媒体实例的实例。
更新
对于您的建议,但实际问题仅发生在小型或中型实例上,而在大型实例上我得到预期的行为(因此本地访问速度明显更快〜20s vs 40s)。
答案 0 :(得分:0)
我不完全确定我理解这个问题但您可能对HDFS-2246感兴趣,当数据块是本地数据块时,它会加速读取。 1.0.0 release notes和此HBaseCon 2012 presentation中也提到了它。