ubuntu

Ubuntu HDFS压缩功能怎么用

小樊
54
2025-09-29 22:24:13
栏目: 智能运维

Ubuntu环境下HDFS压缩功能使用指南

一、准备工作:安装压缩工具

HDFS支持多种压缩格式(如Gzip、Snappy、LZO、Zstandard等),需根据需求安装对应的Linux工具包。以Ubuntu为例,常用命令如下:

确保Hadoop集群所有节点均安装对应工具,避免压缩/解压时出现兼容性问题。

二、配置Hadoop支持压缩

需修改Hadoop核心配置文件(位于$HADOOP_HOME/etc/hadoop/目录),启用HDFS对压缩的支持:

1. 修改core-site.xml

配置Hadoop支持的压缩编解码器,指定哪些压缩格式可用于HDFS操作:

<property>
    <name>io.compression.codecs</name>
    <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.SnappyCodec,org.apache.hadoop.io.compress.DefaultCodec</value>
</property>

2. (可选)修改hdfs-site.xml

调整HDFS块大小(默认128MB),根据压缩率优化存储效率(如压缩后文件较小,可适当减小块大小):

<property>
    <name>dfs.blocksize</name>
    <value>67108864</value> <!-- 64MB -->
</property>

修改完成后,重启Hadoop集群使配置生效:

$HADOOP_HOME/sbin/stop-dfs.sh
$HADOOP_HOME/sbin/start-dfs.sh

三、使用命令行工具进行压缩与解压

1. 本地文件压缩

使用Linux命令行工具将本地文件压缩为HDFS支持的格式:

2. 上传压缩文件到HDFS

使用hadoop fs -put命令将本地压缩文件上传至HDFS目标路径:

hadoop fs -put /local/path/input.txt.gz /hdfs/path/destination/

3. HDFS文件解压

将HDFS中的压缩文件下载至本地,再用Linux工具解压:

4. 直接上传压缩文件(可选)

使用hadoop fs -put-compress选项,直接将本地未压缩文件上传并压缩到HDFS:

hadoop fs -put -compress snappy /local/path/input.txt /hdfs/path/destination/

此命令会自动将input.txt压缩为Snappy格式并上传至HDFS。

四、在MapReduce作业中使用压缩

若需在MapReduce作业中压缩中间数据或最终输出,需配置作业参数:

1. 启用Map输出压缩

减少Map任务到Reduce任务的中间数据传输量:

Configuration conf = new Configuration();
conf.set("mapreduce.map.output.compress", "true");
conf.set("mapreduce.map.output.compress.codec", "org.apache.hadoop.io.compress.SnappyCodec");

2. 启用最终输出压缩

压缩Reduce任务的输出结果(如保存到HDFS的文件):

conf.set("mapreduce.output.fileoutputformat.compress", "true");
conf.set("mapreduce.output.fileoutputformat.compress.codec", "org.apache.hadoop.io.compress.GzipCodec");

3. 提交作业

将配置应用到MapReduce作业(如Java程序)并提交:

Job job = Job.getInstance(conf, "Compressed MapReduce Job");
// 设置其他作业参数(如输入输出路径、Mapper/Reducer类)
System.exit(job.waitForCompletion(true) ? 0 : 1);

五、验证压缩效果

  1. 检查HDFS中的压缩文件

    hadoop fs -ls /hdfs/path/destination/
    

    输出应显示压缩后的文件(如input.txt.gzinput.txt.snappy)。

  2. 查看文件内容

    • 对于Gzip文件:
      hadoop fs -cat /hdfs/path/destination/input.txt.gz | gzip -d
      
    • 对于Snappy文件:
      hadoop fs -cat /hdfs/path/destination/input.txt.snappy | snappy -d
      
  3. 检查压缩率

    hadoop fs -du -h /hdfs/path/destination/input.txt.gz  # 查看压缩后大小
    hadoop fs -du -h /local/path/input.txt              # 查看原始大小
    

注意事项

0
看了该问题的人还看了