根据HDFS体系结构页面,HDFS被devise用于“stream式数据访问”。 我不确定这意味着什么,但会猜测这意味着像seek这样的操作要么被禁用,要么性能不是最佳的。 这是正确的吗?
我有兴趣使用HDFS存储需要stream式传输到浏览器客户端的audio/video文件。 大部分stream将开始结束,但有些可能有大量的search。
也许有另一个文件系统可以做得更好?
stream式传输仅仅意味着在传输数据时,它可以为您提供一个高于某个阈值的恒定比特率,而不是使数据以突发或波形进入。
如果HDFS是为stream式处理而devise的,那么它可能仍然会支持查找,并且需要将数据caching在一个固定的stream中。
当然,根据系统和networking负载的不同,您的search时间可能会更长一些。
HDFS将数据存储在大块中 – 比如64 MB。 这个想法是,你希望你的数据在你的硬盘驱动器上按顺序排列,减less了你的硬盘驱动器读取数据的次数。
另外,HDFS是一个用户空间文件系统,因此有一个中央名称节点,它包含一个内存目录,其中包含所有块(及其副本)在整个群集中的存储位置。 预计文件很大(比如说1GB或更多),并分成几个块。 为了读取文件,代码向名称节点询问块列表,然后顺序读取块。
通过保持驱动器可以承受的最大I / O速率,数据通过硬盘驱动器进行“stream式传输”。
从Hadoopstream式数据:权威指南,第3版 :
HDFS是build立在最高效的数据处理模式是一次写入,多次读取模式的基础上的。 通常从源生成或复制数据集,然后随着时间对数据集进行各种分析。 每个分析都会涉及大部分(如果不是全部的话)数据集,所以读取整个数据集的时间比读取第一个logging的时间更重要。