0

我想比较 1000 个小文件(1-2 mb)的 HDFS 和本地文件系统的性能。在不使用序列文件的情况下,HDFS 读取 1000 个文件所需的时间几乎是本地文件系统的两倍。我在这里听说过序列文件 - HDFS 中的小文件问题 我想显示 HDFS 比本地 FS 检索这些记录的响应时间更好。序列文件会有所帮助还是我应该寻找其他东西?(HBase 可能)

编辑:我正在使用 Java 程序来读取像这里HDFS 这样的文件 Read through Java

4

1 回答 1

1

是的,对于简单的文件检索,抓取单个序列文件将比抓取 1000 个文件快得多。从 HDFS 读取时会产生更多开销,包括启动 JVM(假设您正在使用hadoop fs -get ...)、从 NameNode 获取每个文件的位置以及网络时间(假设您有多个数据节点)。

序列文件可以被认为是一种容器形式。如果您将所有 1000 个文件放入一个序列文件中,您只需要抓取 32 个块(如果您的块大小设置为 64MB)而不是 1000 个。这将减少位置查找和总网络连接。此时您在读取序列文件时确实遇到了另一个问题。它是一种二进制格式。

HBase 更适合低延迟和随机读取,因此它可能是您更好的选择。请记住,磁盘搜索仍然会发生(除非您正在从内存中工作),因此在本地读取一堆小文件可能是比使用 HDFS 作为文件存储更好的解决方案。

于 2015-06-29T18:52:39.570 回答