根据 HDFS 架构页面,HDFS 是为“流式数据访问”而设计的。我不确定这到底是什么意思,但我猜这意味着像 seek 这样的操作要么被禁用,要么性能欠佳。这是正确的吗?
我对使用 HDFS 存储需要流式传输到浏览器客户端的音频/视频文件感兴趣。大多数流将从开始到结束,但有些流可能会进行大量搜索。
也许还有另一个文件系统可以做得更好?
根据 HDFS 架构页面,HDFS 是为“流式数据访问”而设计的。我不确定这到底是什么意思,但我猜这意味着像 seek 这样的操作要么被禁用,要么性能欠佳。这是正确的吗?
我对使用 HDFS 存储需要流式传输到浏览器客户端的音频/视频文件感兴趣。大多数流将从开始到结束,但有些流可能会进行大量搜索。
也许还有另一个文件系统可以做得更好?
HDFS 将数据存储在大块中——比如 64 MB。这个想法是您希望数据按顺序排列在硬盘驱动器上,从而减少硬盘驱动器读取数据所需执行的寻道次数。
此外,HDFS 是一个用户空间文件系统,因此有一个中央名称节点,其中包含一个内存目录,其中所有块(及其副本)都存储在整个集群中。文件预计会很大(比如 1 GB 或更多),并被分成几个块。为了读取文件,代码向名称节点询问块列表,然后按顺序读取块。
通过保持驱动器可以为这些大数据块维持的最大 I/O 速率,数据从硬盘驱动器“流式传输”。
流式传输只是意味着它可以在传输数据时为您提供高于某个阈值的恒定比特率,而不是让数据以突发或波的形式进入。
如果 HDFS 用于流式传输,它可能仍然支持查找,但需要一些开销来缓存恒定流的数据。
当然,根据系统和网络负载,您的搜索可能需要更长的时间。
来自Hadoop 的流式数据:权威指南,第 3 版: