直压到亚马逊AWS平台,阿里云OSS平台或者腾讯云COS平台

GTX Compressor (直压上云技术预览版)

Powered by GTXLab of Genetalks.git

技术预览版本下载地址: https://github.com/Genetalks/gtz/archive/0.2.2h_tech_preview.tar.gzgithub

English Manual.算法

系统简介

GTX Compressor是Genetalks公司GTX Lab实验室开发的面向大型数据(数GB甚至数TB数据,尤为是生物信息数据)上云,而量身定制的复杂通用数据压缩打包系统,能够对任意基因测序数据以及数据目录进行高压缩率的快速打包,造成单个压缩数据文件,以方便存储档与远程传输、校验。区别于以往的压缩工具,GT Compressor系统着力于 高压缩率,高速率,方便的数据抽取ubuntu

GTX Compressor能够在AWS C4.8xlarge机器(或同配置服务器),以超过114MB/s的速度,将接近200GB大小的33个质量数的FASTQ文件(NA12878_1.fastq),在13分钟内压缩到原大小的19%,而对于X10等只有 7个质量数的FASTQ数据,其压缩率更能够达到5.5%centos

GTX Compressor提供“直压上云”功能。考虑商业使用时,用户不只须要将测序产生的海量数据存储于本地,更迫切地寻求将数据快速稳定传输至云端的能力。 GTX Compressor的数据压缩引擎容许用户直接将fastq文件压缩存储到亚马逊AWS平台,阿里云OSS平台或者腾讯云COS平台,并保持与本地压缩相同的压缩速度与压缩效率。普通100Mbits Intenet线路,能够在短短30分钟内稳定地将200GB Fastq文件的直压上云。服务器

系统亮点

该数据打包压缩系统的特色:并发

  • 高压缩比 采用Context Model压缩技术,配合多种优化的预测模型,平衡系统并发度与内存资源消耗后,能达到极高的压缩率。对FASTQ文件,压缩率最高可达5.58%。app

  • 高性能: GTX compressor充分发挥了CPU的并发性以及新型Haswell CPU体系结构与AVX二、BMI2等指令集的计算能力,使得在普通服务器上的压缩速度,最高可以以接近114MB/s的输入流量输入数据并压缩完毕。工具

  • 高速直压上云: GTX compressor支持直压上云和从云端直接解压下载功能。普通的20核服务器,经过百兆Intenet线路,能够在短短30分钟内稳定地将200GB Fastq文件的直压上云。 性能

系统环境要求

  • 64位 Linux 系统(CentOS 6.5以上或Ubuntu 12.04以上,推荐Ububtu 14.04及以上64位操做系统)

  • 4核以上,最小8GB内存的主机系统(若要达到最大并发性,推荐32核 64GB内存,或与AWS C4.8xlarge机器相同配置)

安装说明

本系统采用开包即用的打包原则,不依赖当前系统其余任何库。

下载包内包含ubuntu版本和centos版本的两个tar.gz的包。选择对应tar.gz的包,解压后,gtz命令就在当前解压的gtz_0.2.2b_ubuntu_tech_preview目录或gtz_0.2.2b_centos_tech_preview目录中,直接使用便可。

命令行说明

执行 ./gtz -h,输出命令行帮助说明。

USAGE: 
./gtz  [--list] [-e <string>] [-f] [--endpoint <string>]  [--appid <string>]  [--timeout <string>]
          [--secret-access-key <string>] [--access-key-id <string>] [-b
          <string>] [-s <string>] [-c] [-n <string>] [-l <string>] [-i]
          [-d] [--delete] [-a] [-g <number>] [-o <string>] [--] [--version]
          [-h] <file names> ...

通用选项说明:

  • -h:输出以上命令行帮助信息
  • --version:输出gt_compress程序的版本号
  • --access-key-id : 指定云平台用户ID
  • --secret-access-key: 指定云平台用户密钥
  • --endpoint : 指定阿里云OSS平台或者腾讯云COS平台的访问域名和数据中心
  • --appid : 指定腾讯云COS平台的用户ID

压缩选项说明:

  • -f, --force : 强制删除容器内的object
  • --timeout : 指定上传超时阀值
  • -i:压缩时增长索引,主要用于在压缩文件中快速检索fastq文件的某段内容,该选项会下降压缩速度
  • -a:追加模式,本次压缩的内容会追加到压缩文件中
  • -g:分组加速压缩,分组越多,须要的cpu和内存越多,压缩速度越快。不指定该值时,程序会根据cpu和内存自动选择最优值
  • -o:指定压缩文件名,不指定时,默认为out.gtz
  • file_name:须要压缩的文件或目录, 若不指定,则从标准输入中读入数据

解压选项说明:

  • -d,--decode : 解压模式 --list : 列出压缩包中全部的压缩文件名,与-d参数一块儿使用 -e, --extract : 解压压缩包中指定的压缩文件,文件名之间用冒号:分割,与-d参数一块儿使用
  • --timeout : 指定下载超时阀值
  • -c,--stdout           :   解压数据输出至标准输出, 只能与 -d 参数一块儿使用
  • -o:指定输出文件名,使用-n或-l时须要指定该选项,不然不须要该选项
  • file_name:须要压缩的文件, 若不指定,则从标准输入中读入数据

示例:

配置环境变量:

export access_key_id=xxxxxx

export secret_access_key=xxxxxx

export endpoint=xxxxxx (该环境变量只有上传至OSS或者COS时才需设置)

export appid=xxxxxx (该环境变量只有上传至COS时才需设置)

压缩举例

直压阿里OSS:

./gtz  -o oss://gtz/out.gtz   source.fastq  (or source.fastq.gz, gtz支持对fastq.gz的从新压缩)

或者
	# zcat 经过管道将fastq的数据送入gtz加压,zcat解压出来的fastq数据流在 out.gtz 中将以stdin这个文件名存在
	zcat source.fastq.gz  |  ./gtz  -o oss://gt-compress/out.gtz

直压腾讯COS:

./gtz  -o cos://gtz/out.gtz   source.fastq  (or source.fastq.gz, gtz支持对fastq.gz的从新压缩)

或者
	# zcat 经过管道将fastq的数据送入gtz加压,zcat解压出来的fastq数据流在 out.gtz 中将以stdin这个文件名存在
	zcat source.fastq.gz  |  ./gtz  -o cos://gt-compress/out.gtz

直压AWS S3:

./gtz  -o s3://gtz/out.gtz   source.fastq   (or source.fastq.gz, gtz支持对fastq.gz的从新压缩)

或者:
	# zcat 经过管道将fastq的数据送入gtz加压,zcat解压出来的fastq数据流在 out.gtz 中将以stdin这个文件名存在
	zcat source.fastq.gz  |  ./gtz  -o s3://gt-compress/out.gtz

压缩到本地:

./gtz  -o gtz/out.gtz   source.fastq  (or source.fastq.gz, gtz支持对fastq.gz的从新压缩)

或者
	# zcat 经过管道将fastq的数据送入gtz加压,zcat解压出来的fastq数据流在 out.gtz 中将以stdin这个文件名存在
	zcat source.fastq.gz  |  ./gtz  -o gtz/out.gtz

海量小文件与tar配合进行快速压缩和上传:

为了大量小型文件(500MB如下)快速压缩或传输上云,支持使用管道方式与 tar 配合进行打包压缩, 对于海量小型数据,压缩和传输速度将很是好。(注意,这种方式下,GTZ使用的针对普通二进制数据的压缩算法,不会对tar包里面的fastq进行特殊处理)。
tar -cf - ./you_dir_or_file | gtz -o /dest.gtz

或者直接打包上云: 

tar -cf - ./you_dir_or_file | gtz -o s3://bucket/dest.gtz

tar -cf - ./you_dir_or_file | gtz -o oss://bucket/dest.gtz

tar -cf - ./you_dir_or_file | gtz -o cos://bucket/dest.gtz

直接传输回来解包:

gtz -c -d s3://bucket/dest.gtz | tar -xf - 

固然,大型文件(500MB以上)或大型文件所在的目录,尤为是 fastq或fastq.gz文件或其所在的目录,仍是建议直接使用 GTZ 进行打包压缩直传,速度更快。

追加文件进压缩包

./gtz -a -o oss://gtz/out.gtz /A/source2.fastq  # -a 指当前是追加模式

./gtz -a -o cos://gtz/out.gtz /A/source2.fastq  # -a 指当前是追加模式

./gtz -a -o s3://gtz/out.gtz /A/source2.fastq   # -a 指当前是追加模式

./gtz -a -o gtz/out.gtz /A/source2.fastq   # -a 指当前是追加模式

查看压缩包里包含的文件

./gtz_0.2.0_ubuntu_release/gtz --list -d oss://gtz/out.gtz

./gtz_0.2.0_ubuntu_release/gtz --list -d cos://gtz/out.gtz

./gtz_0.2.0_ubuntu_release/gtz --list -d s3://gtz/out.gtz

./gtz_0.2.0_ubuntu_release/gtz --list -d gtz/out.gtz

解压举例

从阿里 OSS 解压:

./gtz  -d oss://gtz/out.gtz

或者 单独抽取几个文件:
# -e 表明抽取文件,后面要抽取的文件名称间,用 ":" 隔开
./gtz -e source.fastq:/A/source2.fastq -d oss://gtz/out.gtz

或者某个文件到管道:
# -c 表明输出到console, -e 表明抽取其中的某个文件
./gtz -c -e source.fastq  -d oss://gtz/out.gtz > myfile.txt
或者
./gtz -c -e source.fastq  -d oss://gtz/out.gtz | gzip -c > source.gz

从腾讯 COS 解压:

./gtz  -d cos://gtz/out.gtz

或者 单独抽取几个文件:
# -e 表明抽取文件,后面要抽取的文件名称间,用 ":" 隔开
./gtz -e source.fastq:/A/source2.fastq -d cos://gtz/out.gtz

或者某个文件到管道:
# -c 表明输出到console, -e 表明抽取其中的某个文件
./gtz -c -e source.fastq  -d cos://gtz/out.gtz > myfile.txt
或者
./gtz -c -e source.fastq  -d cos://gtz/out.gtz | gzip -c > source.gz

从AWS S3 解压:

./gtz  -d s3://gtz/out.gtz

或者 单独抽取几个文件:
# -e 表明抽取文件,后面要抽取的文件名称间,用 ":" 隔开
./gtz -e source.fastq:/A/source2.fastq -d s3://gtz/out.gtz

或者某个文件到管道:
# -c 表明输出到console, -e 表明抽取其中的某个文件
./gtz -c -e source.fastq  -d s3://gtz/out.gtz > myfile.txt
或者
./gtz -c -e source.fastq  -d s3://gtz/out.gtz | gzip -c > source.gz

从本地文件:

./gtz  -d ./gtz/out.gtz

或者 单独抽取几个文件:
# -e 表明抽取文件,后面要抽取的文件名称间,用 ":" 隔开
./gtz -e source.fastq:/A/source2.fastq -d gtz/out.gtz

或者某个文件到管道:
# -c 表明输出到console, -e 表明抽取其中的某个文件
./gtz -c -e source.fastq  -d gtz/out.gtz > myfile.txt
或者
./gtz -c -e source.fastq  -d gtz/out.gtz | gzip -c > myfastq.gz
相关文章
相关标签/搜索