我处理大量数十 GB 的数据集,通常将其分成几个文件。对这些文件执行任何类型的数据端范围的操作(grep、sed、搜索、读取/写入数据库和 Hadoop)当然非常缓慢且耗时。到目前为止,我一直在使用任何能以优惠价格买到的硬盘 - 通常是 5400rpm 或 7200rpm 的 Seagates。
是时候升级 HD 了。对于我所描述的工作类型,我应该关注哪些参数?主轴速度?接口?寻道时间和吞吐量?我读过各种各样的东西,其中一些并不重要,所以我很困惑。
如果这还不够的话,我可以提供更多信息。
答案1
如果可以的话,使用多个磁盘 - 在操作系统级别对它们进行条带化或让 Hadoop 将数据分布在多个驱动器上 - 拥有多个主轴寻道将大大提高性能,并且比 SSD 便宜。
答案2
主轴速度当然很重要,寻道时间也很重要。但处理海量数据库文件最重要的是随机读写能力(即从磁盘的所有不同区域获取大量数据,而不是顺序读写,即所有数据在磁盘上按顺序排列)
SAS 在这方面绝对胜出。对于普通的 IDE 或 SATA 磁盘,如果您有四块不连续的数据,并且请求是按特定顺序接收的,那么驱动器必须旋转一整圈才能拾取每块数据。
使用 SAS,控制器将按照最能满足请求的顺序对请求进行排序,并进行排序以便在可能的情况下在一次旋转中拾取多条数据。因此,仅仅因为请求以 ABCD 的形式进入,SAS 驱动器就可能以 ADCB 的形式为它们提供服务,因为这是它们在物理磁盘上的顺序。普通的 SATA/IDE 驱动器只能以 ABCD 的形式为它们提供服务,尽管这不是最佳顺序。
答案3
对于整个数据扫描/分析操作来说,寻道时间并不是那么重要(假设您使用平面文件或现代可扩展数据库,如 Hypertable,而不是传统的基于 B-Tree* 的数据库,后者需要大量随机寻道来扫描大表)。如果您依靠硬盘的随机 I/O 来处理大型数据集,那么您肯定做错了。
对于此类工作,最重要的因素是原始持续(未缓存)顺序读/写吞吐量以及同时处理多个扫描而不会降级为随机 I/O 模式的能力。其中一个基准测试站点提供了针对 1+TB SATA 驱动器的良好基准测试。它表明 Seagate 和 Western Digital 驱动器在处理多个扫描方面表现相当出色,而三星驱动器在进行多个扫描时性能会急剧下降。
答案4
如果您能买得起,固态硬盘真的会对您有所帮助。