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

Powered by GTXLab of Genetalks.

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

English Manual.

系统简介

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

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

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

系统亮点

该数据打包压缩系统的特点:

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

  • 高性能: GTX compressor充分发挥了CPU的并发性以及新型Haswell CPU体系结构与AVX2、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

直压到亚马逊AWS平台,阿里云OSS平台或者腾讯云COS平台的更多相关文章

  1. 亚马逊AWS在线系列讲座——基于AWS云平台的高可用应用设计

    设计高可用的应用是架构师的一个重要目标,可是基于云计算平台设计高可用应用与基于传统平台的设计有很多不同.云计算在给架构师带来了很多新的设计挑战的时候,也给带来了很多新的设计理念和可用的服务.怎样在设计 ...

  2. 国外物联网平台(1):亚马逊AWS IoT

    国外物联网平台(1)——亚马逊AWS IoT 马智 平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并 ...

  3. 微软Azure、谷歌GAE、亚马逊AWS比較

       谷歌Google App Engine 亚马逊AWS 微软Microsoft Azure 提供服 务类型 PaaS, SaaS Iaas, PaaS IaaS, PaaS, SaaS 服务间 ...

  4. 亚马逊AWS服务器CentOS/Linux系统Shell安装Nginx及配置自启动

    领了一个亚马逊的1年免费服务器,今天尝试安装 Nginx 服务器,使用原生的 Shell 方法. 为了方便以后查看,就把过程记录一下. 注意:亚马逊(AWS)服务器默认只能用 user-ec2 账户进 ...

  5. 亚马逊AWS EC2云实例AMI安装LNMP环境(3)——Mysql5.5

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  6. 亚马逊AWS EC2云实例AMI安装LNMP环境(2)——PHP5.6

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  7. 亚马逊AWS EC2云实例AMI安装LNMP环境(1)——Nginx安装

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  8. 亚马逊AWS学习——EC2的自定义VPC配置

    1 网络配置 EC2即亚马逊AWS云服务中的虚拟主机.创建EC2实例时如果使用的默认VPC并分配了公有IP是可以上网的.但我们经常需要自定义的网络环境,这时就需要自己定义VPC和子网了. 1.1 配置 ...

  9. windows系统上利用putty通过SSH连接亚马逊AWS服务器

    1. 找到在购买亚马逊的AWS服务器时保存的密钥文件(假设为abc.pem). 2.打开PuTTYgen,如下图,点击图中1处的“load”,找到abc.pem文件所在的位置,并选择abc.pem,确 ...

随机推荐

  1. JSON.Stringify()和JSON.parse()的比较使用

    1.  JSON.Stringify() 将一个对象解析成字符串 <script> function myonclick() { var value = $('select option: ...

  2. jsonp 原理

    1 json width padding(内填充); 2.计算机文件的属性 并不是以 文件的后缀名确定的,后缀名只是给人看的: 3.script 标签获取数据后 并不能直接使用: 4.尽可能 少声明 ...

  3. 修改thinkpad 小红点(TrackPoint速度)

    from: http://www.jianshu.com/p/b9677e9e56ec Thinkpad大概是对Linux支持最好的笔记本了,Ubuntu大概是对硬件支持最好的Linux发行版了.Ub ...

  4. Python中的操作符重载

    运算符重载是指在方法中拦截内置的操作----当类的实例出现在内置操作中,Python会自动调用自定义的办法,并且返回自定义方法的操作结果.     类可以重载python的操作符 操作符重载使我们的对 ...

  5. 设计模式学习笔记(1)Iterator

    Iterator 模式 public interface Iterator { public boolean hasNext(); public Object next(); } public int ...

  6. 使用HTTP头去绕过WAF(bypasswaf)

    在用node http get 请求的时候,发现的 解决方案: Add headers to all Burp requests to bypass some WAF products. This e ...

  7. inner outer

    left join 是left outer join的简写,left join默认是outer属性的. Inner JoinInner Join 逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输 ...

  8. Web标准:六、html列表

    Web标准:六.html列表 知识点: 1.ul无序和ol有序列表 2.改变项目符号样式或用图片定义项目符号 3.横向图文列表 4.浮动后父容器高度自适应 5.IE6的双倍边距bug   1)ul无序 ...

  9. Python3 ord() 函数

    Python3 ord() 函数  Python3 内置函数 描述 ord() 函数是 chr() 函数(对于 8 位的 ASCII 字符串)的配对函数,它以一个字符串(Unicode 字符)作为参数 ...

  10. ECMAScript5新特性之Object.isExtensible、Object.preventExtensions

    阻止对象扩展后: 1 不能添加属性. 2 可以修改属性的值. 3 可以删除属性. 4 可以修改属性描述符. var fruit = { name : '苹果', desc : '红富士' }; // ...