Linux 最有效的压缩超大数据集

Linux 最有效的压缩超大数据集,linux,storage,Linux,Storage,我目前正在远程HPC高性能计算机上生成一个非常大的数据集。我们现在谈论的是3 TB,一旦我完成了,可能会达到10 TB 450 000个文件中的每个文件的大小从几KB到大约100 MB不等,并且包含没有重复/可预测模式的整数行。此外,它们被划分在150个文件夹中,我使用路径根据输入参数对它们进行分类。现在可以了,但我的研究小组在技术上限制远程服务器上1TB的磁盘空间,尽管管理员愿意在情况解决之前闭上眼睛 您建议如何压缩这样的数据集? 限制是任务在此计算机上一次运行时间不能超过48小时。因此,只有

我目前正在远程HPC高性能计算机上生成一个非常大的数据集。我们现在谈论的是3 TB,一旦我完成了,可能会达到10 TB

450 000个文件中的每个文件的大小从几KB到大约100 MB不等,并且包含没有重复/可预测模式的整数行。此外,它们被划分在150个文件夹中,我使用路径根据输入参数对它们进行分类。现在可以了,但我的研究小组在技术上限制远程服务器上1TB的磁盘空间,尽管管理员愿意在情况解决之前闭上眼睛

您建议如何压缩这样的数据集? 限制是任务在此计算机上一次运行时间不能超过48小时。因此,只有在48小时足够的情况下,长而有效的压缩方法才有可能。。。我真的没有其他选择,因为我和我的团队在其他机器上都没有足够的磁盘空间

编辑:只是澄清一下,这是一台在linux的某些变体上运行的远程计算机。所有标准压缩协议都可用。我没有超级用户权限

EDIT2:根据Sergio的要求,这里是一个示例输出文件的前10行

27 42 46 63 95 110 205 227 230 288 330 345 364 367 373 390 448 471 472 482 509 514 531 533 553 617 636 648 667 682 703 704 735 740 762 775 803 813 882 915 920 936 939 942 943 979 1018 1048 1065 1198 1219 1228 1513 1725 1888 1944 2085 2190 2480 5371 5510 5899 6788 7728 9514 10382 11946 13063 13808 16070 23301 23511 24538 
93 94 106 143 157 164 168 181 196 293 299 334 369 372 439 457 508 527 547 557 568 570 573 592 601 668 701 704 799 838 848 870 875 882 890 913 953 959 1022 1024 1037 1046 1169 1201 1288 1615 1684 1771 2043 2204 2348 2387 2735 3149 4319 4890 4989 5321 5588 6453 7475 9277 9649 9654 11433 16966 
1463 
183 469 514 597 792 
25 50 143 152 205 244 253 424 433 446 461 476 486 545 552 570 632 642 647 665 681 682 718 735 746 772 792 811 830 851 891 903 925 1037 1115 1147 1171 1612 1979 2749 3074 3158 6042 12709 20571 20859 
24 30 86 312 726 875 1023 1683 1799 
33 36 42 65 110 112 122 227 241 262 274 284 305 328 353 366 393 414 419 449 462 488 489      514 635 690 732 744 767 772 812 820 843 844 855 889 893 925 936 939 981 1015 1020 1060 1064 1130 1174 1304 1393 1477 1939 2004 2200 2205 2208 2216 2234 3284 4456 5209 6810 6834 8067 10811 10895 12771 15291 
157 761 834 875 1001 2492 
21 141 146 169 181 256 266 337 343 367 397 402 405 433 454 466 513 527 656 684 708 709 732 743 811 883 913 938 947 986 987 1013 1053 1190 1215 1288 1289 1333 1513 1524 1683 1758 2033 2684 3714 4129 6015 7395 8273 8348 9483 23630 
1253 

所有整数用一个空格分隔,每行对应一个给定元素。我使用隐式行号存储此信息,因为我的数据是关联的,即第0个元素与元素27 42 46 63 110关联。。等等。我相信没有任何额外的信息

在这方面做了一些研究,分析了使用gzip、bzip2和lzma的利弊。希望这能让你对你的最佳方法做出明智的决定。

在这方面做了一些研究,分析了使用gzip、bzip2和lzma的利弊。希望这能让您对最佳方法做出明智的决定。

以下几点可能会有所帮助:

看起来你的号码已经分类了。如果总是这种情况,那么压缩相邻数字之间的差异将比压缩数字本身更有效,因为平均而言差异会更小 有一些用二进制格式编码小整数的好方法,可能比用文本格式编码要好。请参阅Google在其协议缓冲区中使用的技术: 一旦应用了上述技术,压缩/某种标准形式的压缩应该会进一步改善一切。
以下几点可能会有所帮助:

看起来你的号码已经分类了。如果总是这种情况,那么压缩相邻数字之间的差异将比压缩数字本身更有效,因为平均而言差异会更小 有一些用二进制格式编码小整数的好方法,可能比用文本格式编码要好。请参阅Google在其协议缓冲区中使用的技术: 一旦应用了上述技术,压缩/某种标准形式的压缩应该会进一步改善一切。
你所有的数字似乎每行都在增加。在数据库技术中,一种相当常见的方法是只存储大小差异,形成一条类似

24 30 86 312 726 875 1023 1683 1799 
差不多

6 56 226 414 149 148 660 116
您的示例中的其他行甚至会显示出更大的好处,因为差异更小。当数字在两者之间减少时,这也起作用,但是你必须能够处理负的差异


第二件事是更改编码。虽然压缩将减少这种开销,但您当前使用的是每位数8位,而您只需要0-9中的4位空间作为除数。实现您自己的4位字符集将使您的存储需求减少到当前大小的一半!最后,这将是对任意长度的数字进行某种二进制编码。

您所有的数字似乎每行的大小都在增加。在数据库技术中,一种相当常见的方法是只存储大小差异,形成一条类似

24 30 86 312 726 875 1023 1683 1799 
差不多

6 56 226 414 149 148 660 116
您的示例中的其他行甚至会显示出更大的好处,因为差异更小。当数字在两者之间减少时,这也起作用,但是你必须能够处理负的差异


第二件事是更改编码。虽然压缩将减少这种开销,但您当前使用的是每位数8位,而您只需要0-9中的4位空间作为除数。实现您自己的4位字符集将使您的存储需求减少到当前大小的一半!最后,这将是对任意长度数字的某种二进制编码。

在WinXP中:右键单击->发送到zip;是的,我希望它能这么简单…那是什么,来自国家安全局的通信跟踪数据?检查一下,希望有帮助。然而,我认为最好的补偿
压缩策略取决于您的应用程序在WinXP中检查lzma:右键单击->发送到zip;是的,我希望它能这么简单…那是什么,来自国家安全局的通信跟踪数据?检查一下,希望有帮助。但是,我认为最好的压缩策略取决于您的应用程序检查lzma相邻数字位的差异非常有趣!当然,在分析数据时需要额外的计算,但这将极大地减少文件的大小。谢谢。相邻数字位的差异非常有趣!当然,在分析数据时需要额外的计算,但这将极大地减少文件的大小。非常感谢。