gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 11:22:18 25 4
gpt4 key购买 nike

我正在研究网络爬虫,并且必须处理大数据(数万亿数据文件中约 160 TB 的原始数据)。

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

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

使用/dev/file 还是自己写用户级文件系统更好?有没有人有这方面的经验。

最佳答案

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

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

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

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

顺便说一句,在文件系统和原始磁盘数据之间进行选择主要是一个配置问题(如果你想要原始磁盘,你指定一个 /dev/sdb 路径,和 /home/somebigfile 如果你想要一个文件)。您可以编写一个 webcrawler 来实现这两种方法,然后对这两种方法进行基准测试。性能很可能取决于实际系统和硬件。

举个例子,关系数据库引擎在上个世纪(例如 1990 年代)经常使用原始磁盘分区,但今天似乎经常使用大文件。

请记住,真正的瓶颈是硬件(即磁盘):文件系统使用的 CPU 时间通常微不足道,甚至无法衡量。

附言。我最近对这些问题没有太多实际经验。

关于linux - 使用没有文件系统的硬盘来处理大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22268327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com