通常我会执行以下操作来使用 LZO:
- 使用 lzop 命令压缩本地磁盘上的数据文件。
- 放入HDFS。
- 使用分布式 lzo 索引器生成 .index 文件。
我想知道有没有办法同时压缩和索引 HDFS 上的原始文件?
是的,您可以:
在客户端和服务器上的 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>