1

通常我会执行以下操作来使用 LZO:

  1. 使用 lzop 命令压缩本地磁盘上的数据文件。
  2. 放入HDFS。
  3. 使用分布式 lzo 索引器生成 .index 文件。

我想知道有没有办法同时压缩和索引 HDFS 上的原始文件?

4

1 回答 1

1

是的,您可以:

在客户端和服务器上的 core-site.xml 中,将 com.hadoop.compression.lzo.LzopCodec 附加到以逗号分隔的编解码器列表中:

<property>
  <name>io.compression.codecs</name>
  <value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,
    org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.DeflateCodec,
    org.apache.hadoop.io.compress.SnappyCodec,com.hadoop.compression.lzo.LzopCodec</value>
</property>

在 JobTracker 主机上编辑 mapred-site.xml 文件:

<property>
  <name>mapred.compress.map.output</name>
  <value>true</value>
</property>  

<property>     
   <name>mapred.map.output.compression.codec</name>
   <value>com.hadoop.compression.lzo.LzopCodec</value>   
</property> 

<property>     
   <name>mapred.output.compression.type</name>        
   <value>BLOCK</value>
</property> 
于 2014-03-05T13:33:36.610 回答