逐行分块文件的更好替代方法

时间:2016-04-12 14:54:08

标签: bash shell awk compression bigdata

我发现最接近我问的问题的问题就在这里。 Linux shell command to read/print file chunk by chunk

我的系统条件

  1. 具有通过NFS服务的共享文件系统的群集
  2. 磁盘容量= 20T
  3. 文件说明

    大规模基因组学分析中使用的标准FASTQ文件

    1. 包含n行或n / 4条记录的文件。
    2. 典型文件大小为100 - 200 G
    3. 我将它们保留为压缩值为-9的bunzips(当指定为bzip2时)
    4. 在分析这些文件时,我将SGE用于我的工作,因此我将其分析为1M或10M记录块。

      所以在分割我使用的文件时

      <(bzcat [options] filename) > Some_Numbered_Chunk
      

      将这些文件分成更小的块,以便通过SGE进行有效处理。

      问题

      1. 将这些文件分开时,此分块步骤表示大量的计算时间。 一世。因为有很多记录需要筛选。 II。因为NFS IO没有我用于分块的bzcat管道那么快,所以NFS限制了文件可以分块的速度。

      2. 很多时候,我必须将近10-20个这些文件分析在一起并解压缩所有这些文件,总计接近1-2T的数据。因此,在共享系统上,这是一个非常大的限制步骤并导致空间碎片,因为其他人必须等待我返回并删除这些文件。 (不,我不能在流程完成后立即删除所有这些文件,因为我需要手动确保所有流程都成功完成)

      3. 那么如何使用其他方法来优化这一点以减少计算时间,并且还使这些块占用较少的硬盘空间?

1 个答案:

答案 0 :(得分:0)

我想到了几个选择:

  1. 增加存储空间(添加更多物理链接)。
  2. 将数据存储在较小的文件中。
  3. 增加存储容量,以降低压缩率。
  4. 从共享存储中分析(通过NFS获取文件,写入本地磁盘)。