Bash 一个更好的替代方法是逐行分块文件

Bash 一个更好的替代方法是逐行分块文件,bash,shell,awk,compression,bigdata,Bash,Shell,Awk,Compression,Bigdata,我发现最接近我所问的问题是这里。 我的系统状况 具有通过NFS提供服务的共享文件系统的群集 磁盘容量=20T 文件描述 用于大规模基因组学分析的标准FASTQ文件 包含n行或n/4条记录的文件 典型的文件大小是100-200g 我将它们保存为压缩值为-9的bunzip(当指定为bzip2时) 在分析这些文件时,我将SGE用于我的工作,因此我将它们分为1M或10M个记录块进行分析 所以在划分文件时,我使用 <(bzcat [options] filename) > Some_Numb

我发现最接近我所问的问题是这里。

我的系统状况
  • 具有通过NFS提供服务的共享文件系统的群集
  • 磁盘容量=20T
  • 文件描述 用于大规模基因组学分析的标准FASTQ文件

  • 包含n行或n/4条记录的文件
  • 典型的文件大小是100-200g
  • 我将它们保存为压缩值为-9的bunzip(当指定为bzip2时)
  • 在分析这些文件时,我将SGE用于我的工作,因此我将它们分为1M或10M个记录块进行分析

    所以在划分文件时,我使用

    <(bzcat [options] filename) > Some_Numbered_Chunk
    
    一些\u编号的\u块
    
    将这些文件分成更小的块,以便通过SGE进行高效处理

    问题
  • 当分割这些文件时,这个分块步骤代表了大量的计算时间。 我因为有很多记录要筛选。 二,。因为NFS IO没有我用于分块的bzcat管道快,所以NFS限制了文件分块的速度

  • 很多时候,我不得不一起分析这些文件中的近10-20个,然后将它们全部解包,合并成近1-2T的数据。因此,在共享系统上,这是一个非常大的限制步骤,会导致空间问题,因为其他人必须等待我返回并删除这些文件。(否我无法在流程完成后立即删除所有这些文件,因为我需要手动确保所有流程都已成功完成)


  • 那么,我如何使用其他方法来优化这一点,以降低计算时间,并使这些块占用更少的硬盘空间呢?

    我想到了几个选项:

  • 增加存储带宽(添加更多物理链接)
  • 将数据存储在较小的文件中
  • 增加存储容量,以便降低压缩比
  • 对共享存储进行分析(通过NFS获取文件,写入本地磁盘)