直壓到亞馬遜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
相關文章
相關標籤/搜索