当我将文件放入HDFS时,例如
$ ./bin/hadoop/dfs -put /source/file input
答案 0 :(得分:8)
There在HDFS中没有隐式压缩。换句话说,如果您希望压缩数据,则必须以这种方式编写数据。如果您计划编写map reduce作业来处理压缩数据,那么您将需要使用可拆分压缩格式。
Hadoop可以处理压缩文件,这里有一个很好的article。此外,中间和最终MR输出可以是compressed。
“HDFS中的透明压缩”有JIRA,但我看不到太多进展。
我认为没有单独的加密API,但您也可以使用压缩编解码器进行加密/解密。 Here是有关加密和HDFS的更多详细信息。
答案 1 :(得分:-1)
我最近在集群上设置了压缩。其他帖子提供了有用的链接,但您希望LZO压缩工作的实际代码位于:https://github.com/kevinweil/hadoop-lzo。
您可以开箱即用,使用GZIP压缩,BZIP2压缩和Unix压缩。只需上传其中一种格式的文件即可。使用该文件作为作业的输入时,您需要指定压缩文件以及正确的CODEC。以下是LZO压缩的示例。
-jobconf mapred.output.compress=true
-jobconf mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec
为什么我要继续关于LZO压缩? Praveen的cloudera article引用就是这样的。 LZO压缩是可分裂的压缩(例如,与GZIP不同)。这意味着可以将单个文件拆分为块以传递给映射器。如果没有可拆分的压缩文件,单个映射器将接收整个文件。这可能会导致您使用太少的映射器并在网络周围移动太多数据。
BZIP2也是可拆分的。它还具有比LZO更高的压缩率。但是,它很慢。 LZO的压缩比比GZIP差。但是,它已优化为 extremely fast 。事实上,它甚至可以通过最小化磁盘I / O来提高工作性能。
设置需要一些工作,并且使用起来有点痛苦,但它是值得的(透明加密会很棒)。再一次,步骤是: