HDFS在存储时是否加密或压缩数据?

时间:2011-09-19 04:02:32

标签: hadoop hdfs

当我将文件放入HDFS时,例如

$ ./bin/hadoop/dfs -put /source/file input
  • 存储时文件压缩
  • 存储时文件是加密吗?是否有我们可以指定的配置设置来更改它是否加密?

2 个答案:

答案 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来提高工作性能。

设置需要一些工作,并且使用起来有点痛苦,但它是值得的(透明加密会很棒)。再一次,步骤是:

  1. 安装LZO和LZOP(命令行实用程序)
  2. 安装hadoop-lzo
  3. 上传使用LZOP压缩的文件。
  4. 按照hadoop-lzo wiki的描述索引文件(索引允许将其拆分)。
  5. 运行你的工作(使用适当的参数mapred.output.compress和mapred.output.compression.code)