Snappy或LZO用于日志,然后由hadoop使用

Snappy或LZO用于日志,然后由hadoop使用,hadoop,hive,lzo,snappy,Hadoop,Hive,Lzo,Snappy,我有大量的服务。我记录事件。每隔几分钟,我使用gzip压缩日志,并将它们旋转到S3。在此基础上,我们通过Hive使用Amazon的Hadoop(弹性mapreduce)处理日志 现在,在服务器上,当我们压缩和旋转日志时,会在几分钟内出现CPU峰值。我们希望从gzip切换到lzo或snappy,以帮助减少cpu峰值。我们是一个cpu受限的服务,所以我们愿意在轮换时用更大的日志文件换取更少的cpu消耗 我读了很多关于LZO和Snappy(又名zippy)的书。LZO的优点之一是它在HDFS中是可拆分

我有大量的服务。我记录事件。每隔几分钟,我使用gzip压缩日志,并将它们旋转到S3。在此基础上,我们通过Hive使用Amazon的Hadoop(弹性mapreduce)处理日志

现在,在服务器上,当我们压缩和旋转日志时,会在几分钟内出现CPU峰值。我们希望从gzip切换到lzo或snappy,以帮助减少cpu峰值。我们是一个cpu受限的服务,所以我们愿意在轮换时用更大的日志文件换取更少的cpu消耗

我读了很多关于LZO和Snappy(又名zippy)的书。LZO的优点之一是它在HDFS中是可拆分的。然而,我们的文件是通过Gzip压缩的~15MB,所以我认为我们在HDFS中不会达到64MB的默认块大小,所以这不重要。即使它这样做了,我们也应该能够将默认值提高到128MB

现在,我想试试snappy,因为它似乎稍微快一点/资源密集度低一点。两者似乎都不在Amazon的yum-repo中,因此我们可能无论如何都必须定制安装/构建——因此在工程时间方面没有多少折衷。我听说过一些关于LZO许可证的担忧,但我认为如果它不接近我们的代码,我会在我们的服务器上安装它,对吗

那么,我应该选择哪一个呢? 其中一个在Hadoop中的性能会比另一个更好吗? 是否有人在这两种实现中都这样做了,并且有任何问题可以分享?

可能为时已晚,但为snappy压缩/解压缩提供了一个命令行工具:

压缩和解压缩文件:

$python-msnappy-c解压文件compressed\u file.snappy

$python-m snappy-d压缩\u文件。snappy未压缩\u文件

压缩和解压缩流:

$cat未压缩数据| python-msnappy-c>压缩数据。snappy

$cat compressed_data.snappy | python-m snappy-d>未压缩的_数据


,这是一个相当大的胜利,如果你想它的文件,你读了很多hadoop。最后,这至少对我来说是一个非常重要的认可。

看看cloudera的博客文章。他们详细介绍了每一个,并推荐Snappy。您还可以在这里找到diff压缩类型的基准:谢谢。我们最后和LZO一起去了。我们只比较了压缩时间,它们大致相当。我们还很难找到一个可靠的snappy命令行工具,当您偶尔需要手动检查数据时,这一工具非常关键。谢谢。我们最后和lzo去了,我们有lzop。不过,这很好知道。虽然可能相互关联,但实际上我们最关心的是压缩CPU和内存需求。我们的前端主机必须进行压缩(在为实时流量提供服务的相同主机上),而解压缩总是离线进行。当时没有一个方便的命令行工具是一个很大的威慑。也许我需要再去看看。