美文网首页Hadoop实操
0003-如何在CDH中使用LZO压缩

0003-如何在CDH中使用LZO压缩

作者: Hadoop实操 | 来源:发表于2018-12-08 22:20 被阅读7次

Fayson的github: https://github.com/fayson/cdhproject
推荐关注微信公众号:“Hadoop实操”,ID:gh_c4c535955d0f,或者扫描文末二维码。

1.问题描述

CDH中默认不支持Lzo压缩编码,需要下载额外的Parcel包,才能让Hadoop相关组件如HDFS,Hive,Spark支持Lzo编码。

具体请参考:
Configuring Services to Use the GPL Extras Parcel
Installing the GPL Extras Parcel

首先我在没做额外配置的情况下,生成Lzo文件并读取。我们在Hive中创建两张表,test_table和test_table2,test_table是文本文件的表,test_table2是Lzo压缩编码的表。如下:

create external table test_table
(
s1 string,
s2 string
)
row format delimited fields terminated by '#'
location '/lilei/test_table';

insert into test_table values('1','a'),('2','b');

create external table test_table2
(
s1 string,
s2 string
)
row format delimited fields terminated by '#'
location '/lilei/test_table2';

通过beeline访问Hive并执行上面命令:




查询test_table中的数据:


将test_table中的数据插入到test_table2,并设置输出文件为lzo压缩:

set mapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzoCodec;
set hive.exec.compress.output=true;
set mapreduce.output.fileoutputformat.compress=true;
set mapreduce.output.fileoutputformat.compress.type=BLOCK;

insert overwrite table test_table2 select * from test_table;

在Hive中执行报错如下:

Error:Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask (state=08S01,code=2) 

通过Yarn的8088可以发现是因为找不到Lzo压缩编码:

Compression codec com.hadoop.compression.lzo.LzoCodec was not found. 

2.解决办法

通过Cloudera Manager的Parcel页面配置Lzo的Parcel包地址:


注意:如果集群无法访问公网,需要提前下载好Parcel包并发布到httpd

下载->分配->激活







配置HDFS的压缩编码加入Lzo:

com.hadoop.compression.lzo.LzoCodec
com.hadoop.compression.lzo.LzopCodec 

保存更改,部署客户端配置,重启整个集群。



等待重启成功:



再次插入数据到test_table2,设置为Lzo编码格式:

set mapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzoCodec;
set hive.exec.compress.output=true;
set mapreduce.output.fileoutputformat.compress=true;
set mapreduce.output.fileoutputformat.compress.type=BLOCK;

insert overwrite table test_table2 select * from test_table;

插入成功:


2.1.Hive验证

首先确认test_table2中的文件为Lzo格式:



在Hive的beeline中进行测试:




Hive基于Lzo压缩文件运行正常。

2.2.Spark SQL验证

var textFile=sc.textFile("hdfs://ip-172-31-8-141:8020/lilei/test_table2/000000_0.lzo_deflate")

textFile.count()

sqlContext.sql("select * from test_table2")

SparkSQL基于Lzo压缩文件运行正常。


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。


原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

相关文章

  • 0003-如何在CDH中使用LZO压缩

    Fayson的github: https://github.com/fayson/cdhproject推荐关注微信...

  • hadoop,spark中使用lzo

    一、环境准备 hadoop-2.6.0-cdh5.15.1并支持压缩(参考:hadoop安装文档) lzo jar...

  • Go gzip,lzo,snappy的简单使用

    简单的使用 flate,gzip,lzo,zlib,snappy 库压缩compresser.go 简易压缩 by...

  • Hive读取索引文件问题

    LZO压缩 数据保存在HDFS上面可以选取LZO压缩形式。LZO压缩的特点是可以切片 但是hadoop本身并不支持...

  • HadoopLZO压缩配置

    编译hadoop-lzo组件 1)hadoop本身并不支持lzo压缩,故需要使用twitter提供的hadoop-...

  • CDH6安装Lzo

    官方安装文档官方配置文档 环境 centos7.6cdh6.2.1 Parcel安装Lzo 在CDH的 Parce...

  • LZO 创建索引

    创建LZO文件索引,LZO压缩文件的可切片特性依赖于其索引,故我们需要手动为LZO压缩文件创建索引。若无索引,则L...

  • hadoop之配置LZO压缩以及创建索引支持分片

    一、LZO相关软件下载及前置工作1、查看是否安装了lzop,lzo格式文件压缩解压需要用到服务器的lzop工具 如...

  • 压缩

    1.压缩格式:deflate,gzip,bzip2,lzo,snappy2.面试中,一般回答压缩方式用snappy...

  • HBase优化

    HBase优化 1、垃圾回收优化使用CMS垃圾回收机制2、启用压缩GZIP、Snappy、LZO,推荐Snappy...

网友评论

    本文标题:0003-如何在CDH中使用LZO压缩

    本文链接:https://www.haomeiwen.com/subject/cjmchqtx.html