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. CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介

    自我学习:一.线程安全日期格式化操作的几种方式:1.每次new一个新对象:public static Date parse(String date) throws ParseException { r ...

  2. Alpha版本检测报告

    1.Alpha版本测试报告 发布一篇随笔,作为项目的测试报告,内容包括: (1)测试计划 测试人员 工作安排 覃一霸 编写测试报告 张江波 执行测试.截图测试结果 测试功能 功能 描述 效果 结果 登 ...

  3. sun 证书问题解决

    1.下载的需要的证书: sudo ./$JAVA_HOME/jre/bin/keytool -import -alias WOSt03 -keystore $JAVA_HOME/jre/lib/sec ...

  4. leetcode324

    class Solution { public void wiggleSort(int[] nums) { int[] temp = Arrays.copyOfRange(nums, 0, nums. ...

  5. 基于二进制RPC协议法的轻量级远程调用框架 ---- Hessian

    使用Java创建Hessian服务有四个步骤: 1.创建Java接口作为公共API                             (client和server端 创建一个相同的借口) 2.使 ...

  6. Spring boot @ConfigurationProperties 和@Value

      @ConfigurationProperties @Value 功能 批量注入配置文件中的属性 一个个指定 松散绑定(松散语法) 支持 不支持 SpEL 不支持 支持 JSR303数据校验 支持 ...

  7. Mybatis知识(3)

    1.JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的? ① 数据库链接创建.释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题. 解决:在SqlMapConfig ...

  8. 行矩阵列矩阵D3D&GL&U3D

    void Start () { //矩阵函数原型:Matrix4x4(Vector4 colum0, Vector4 colum1, Vector4 colum2, Vector4 colum3),这 ...

  9. 科比投球预测-python实例

    链接:http://pan.baidu.com/s/1i4PNJlr 密码:fz7e import matplotlib.pyplot as pltfig = plt.figure()ax1 = fi ...

  10. 初涉定制linux系统之——rpm相关安装包的准备

    在上一篇博客http://www.cnblogs.com/dengtr/p/5543820.html#3634582 中介绍了如何定制Centos系统镜像,但其中有个问题,就是服务所依赖的安装包不在原 ...