使用没有文件系统的硬盘来处理大数据

时间:2014-03-08 10:53:01

标签: linux operating-system filesystems bigdata

我正在使用网络抓取工具,必须处理大数据(数万亿个数据文件中的大约160 TB原始数据)。

数据应存储为磁性硬盘上的一个大bz2文件。 SSD用于保存元数据。硬盘上最重要的操作是对磁盘上所有4 TB的顺序读取,这应该以150 MB / s的最大速度完成。

我不想浪费文件系统的开销而是直接使用“/ dev / file”设备。此访问是否使用os块缓冲区?访问操作是以FIFO方式排队还是同步?

使用/ dev / file或编写自己的用户级文件系统会更好吗? 有没有人体验过它。

1 个答案:

答案 0 :(得分:0)

如果您不使用任何文件系统但直接读取您的磁盘设备(例如/dev/sdb),则会失去文件系统缓存的所有好处。我完全不确定这是值得的。

请记住,您可以使用readahead(2)posix_fadvise(2)madvise(2)等系统调用来向内核提供提示以提高性能。

此外,您可能在使文件系统使用比平常更大的块大小时。并且在read(2)数据时不要忘记使用大块(例如64到256 KB)。您还可以使用mmap(2)从磁盘获取数据。

我建议不要“编写自己的文件系统”。现有的文件系统已经过调整(有些用于PB级存储)。您可能希望在制作时选择大块(例如-bmke2fs(8) ...)

BTW,在文件系统和原始磁盘数据之间进行选择主要是配置问题(如果需要原始磁盘,则指定/dev/sdb路径;如果需要文件,则指定/home/somebigfile)。您可以对webcrawler进行编码以便能够同时执行这两种操作,然后对两种方法进行基准测试很可能,性能可能取决于实际的系统和硬件。

作为一个例子,关系数据库引擎在上个世纪(例如20世纪90年代)经常使用原始磁盘分区,但现在似乎经常使用大文件。

请记住,真正的瓶颈是硬件(即磁盘):文件系统使用的CPU时间通常无关紧要,甚至无法测量。

PS。我对这些问题的最近经验并不多。