与本地文件系统相比,序列文件有助于提高hdfs中的读取性能吗?

at0kjp5o  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(292)

我想比较1000个小文件(1-2MB)的hdfs和本地文件系统的性能。如果不使用序列文件,hdfs读取1000个文件所需的时间几乎是本地文件系统的两倍。我在这里听说过序列文件—hdfs中的小文件问题—我想展示hdfs检索这些记录的响应时间比本地文件更好。序列文件会有帮助吗?还是我应该找别的东西((可能是hbase)
编辑:我使用java程序来读取像这里这样的文件hdfs读取java

vsdwdz23

vsdwdz231#

是的,对于简单的文件检索,抓取单个序列文件要比抓取1000个文件快得多。当从hdfs读取时,会产生更多的开销,包括旋转jvm(假设您正在使用jvm) hadoop fs -get ... ),从namenode获取每个文件的位置,以及网络时间(假设您有多个datanode)。
序列文件可以看作是容器的一种形式。如果将所有1000个文件放入一个序列文件中,则只需获取32个块(如果块大小设置为64mb),而不是1000个。这将减少位置查找和总的网络连接。在读取序列文件时,您确实遇到了另一个问题。它是二进制格式。
hbase更适合低延迟和随机读取,因此它可能是一个更好的选择。请记住,磁盘查找仍然会发生(除非您是在内存中工作),因此在本地读取一堆小文件可能是比使用hdfs作为文件存储更好的解决方案。

相关问题