hadoop&hive压缩相关说明

本文介绍了Hadoop MapReduce作业中不同压缩格式和支持工具,并详细对比了各种压缩算法的压缩比、压缩时间及解压时间。此外,还给出了Hive环境下中间结果及最终输出结果压缩的最佳实践配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于MR作业,压缩中间数据,可以减少磁盘操作,减少网络传输数据量,进而提交查询速度。
对此整理下日常生活中出现的疑惑点。

hadoop对每个压缩格式的支持
 压缩格式  工具  算法  文件扩展名  多文件  可分割性
 DEFLATE  无  DEFLATE  .deflate  不  不
 gzip  gzip  DEFLATE  .gz  不  不
 ZIP  zip  DEFLATE  .zip  是  是,在文件范围内
 bzip2  bzip2  bzip2  .bz2  不  是
 LZO  lzop  LZO  .lzo  不  是
Snappy snappy Snappy .snapyy  不  是


hadoop下各种压缩算法的压缩比,压缩时间,解压时间对比

压缩算法 原始文件大小  压缩后的文件大小  压缩速度 解压缩速度 
gzip   8.3GB   1.8GB 17.5MB/s 58MB/s
bzip2 8.3GB 1.1GB 2.4MB/s 9.5MB/s
LZO-bset  8.3GB 2GB 4MB/s 60.6MB/s
LZO 8.3GB 2.9GB 49.3MB/S 74.6MB/s


本地压缩库
考虑到性能,最好使用一个本地库(native library)来压缩和解压。
 压缩格式  Java实现   本地实现 
 DEFLATE  是  是
 gzip  是  是
 bzip2  是  否
 LZO  否  是 


hadoop job中间输出结果压缩
mapred.compress.map.output=true;
mapred.map.output.compression.codec=org.apache.hadoop.io.compress.DefaultCodec (hadoop默认)
mapred.map.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec (建议开启)
mapred.map.output.compression.codec= org.apache.hadoop.io.compress.LzoCodec (建议开启,需单独安装)

mapred.map.output.compression.codec= org.apache.hadoop.io.compress.GzipCodec

mapred.output.compression.codec=org.apache.hadoop.io.compress.BZip2Codec 


hive中间结果进行压缩
对中间数据进行压缩可以减少map和reduce task间的数据传输量。对于中间数据压缩,选择一个低cpu开销的编/解码器要比选择一个压缩率高的编/解码器要重要的多。
hive.exec.compress.intermediate=true;
mapred.map.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec (建议开启)
mapred.map.output.compression.codec= org.apache.hadoop.io.compress.LzoCodec (建议开启,需单独安装)


对hive的最终输出结果进行压缩
hive.exec.compress.output=true;
mapred.output.compression.codec=org.apache.hadoop.io.compress.BZip2Codec  
mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec (建议开启)
mapred.output.compression.codec= org.apache.hadoop.io.compress.LzoCodec (建议开启,需单独安装)


hadoop输出结果以块分割
mapred.output.compression.type=BLOCK;

压缩类型,NONE、RECORD、BLOCK(默认RECORD 记录级别)


hive输出结果以块、二进制分割
io.seqfile.compression.type=BLOCK(压缩性能最好,而且可以分割)
set hive.exec.compress.output=true;

建议由hive生成的中间表,都以creat table …stored as seqeuncefile创建,支持压缩,可切分



Q:hadoop中间输出结果压缩对结果是否有影响?

A:没有影响,对于IO型作业,相反可以加快查询速度。


Q:在MR中应该采用什么存储格式?
A:存储未压缩的文件时候,使用分割机制的压缩格式,如.bz2
使用支持压缩和分割的Sequence File(序列文件)。

对于大型文件,不要对整个文件使用不支持分割的压缩格式,这样子会损失本地优势,降低MR性能。



Q:推荐hive生产环境参数设置?
A:mapred.map.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec  中间结果压缩方法
mapred.output.compression.type=BLOCK块级别分割
io.seqfile.compression.type=BLOCK块级别分割
hive.exec.compress.intermediate=true            hive中间结果压缩
//hive.exec.compress.output=true输出结果压缩
//mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec   输出结果压缩方法



参考文献:
hive中间结果和结果的压缩: http://blog.csdn.net/inte_sleeper/article/details/7572235
hadoopMR压缩详解: http://www.cnblogs.com/ggjucheng/archive/2012/04/22/2465580.html  






Docker 和 Jenkins 都是企业级软件开发中常用的工具,它们可以协同工作,提高持续集成和容器化应用的效率。 1. **Docker**:Docker是一个开源的应用容器引擎,它允许你在一台机器上创建并运行多个隔离的、自包含的“容器”,每个容器都有自己的运行环境,包括操作系统、库、依赖等,使得应用程序可以在任何支持Docker的平台上一致地运行。 2. **Jenkins**: Jenkins 是一个开源的持续集成服务器,用于自动化构建、测试和部署软件项目。它提供了一个Web界面,让你可以配置各种构建步骤,并能够监控项目的进度。 **安装部署流程**(简述): - **安装Docker**:Windows用户可以下载Docker Desktop;Linux用户通常通过包管理器如apt-get或yum安装;macOS用户也可以通过Homebrew安装。 - **设置Docker服务**:启动Docker服务并确保其运行在后台。在某些系统上需要添加用户到docker组或运行命令时指定sudo权限。 - **安装Jenkins**:你可以从Jenkins官网下载war文件并通过HTTP或HTTPS协议将其部署到Web服务器(例如Apache或Nginx),然后在浏览器中访问Jenkins的初始化页面开始安装过程。 - **配置Jenkins**:填写必要的信息,比如管理员用户名和密码,选择Jenkins仓库源(如果你打算从远程Git仓库拉取项目)。 - **关联Docker插件**:在Jenkins管理界面,找到插件管理器,搜索并安装Docker Pipeline或Docker Build插件。 - **创建Dockerfile Jenkinsfile**:为了利用Docker,你需要编写Dockerfile来定义镜像,以及Jenkinsfile来定义持续集成的工作流。 - **设置构建作业**:在Jenkins中创建新的自由风格项目或Pipeline项目,配置好源码管理(Git、SVN等)、构建阶段(Docker build、测试等)和部署选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值