如何在CDH中使用LZO压缩

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

1.问题描述

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

具体请参考:

https://www.cloudera.com/documentation/enterprise/latest/topics/cm_mc_gpl_extras.html

https://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_install_gpl_extras.html#xd_583c10bfdbd326ba-3ca24a24-13d80143249--7ec6

首先我在没做额外配置的情况下,生成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.LzoCodeccom.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实操(gh_c4c535955d0f)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业

继上一章介绍如何使用R连接Hive与Impala后,Fayson接下来讲讲如何在CDH集群中提交R的Spark作业,Spark自带了R语言的支持,在此就不做介绍...

47360
来自专栏大数据学习笔记

Hadoop基础教程-第12章 Hive:进阶(12.4 Hive Metastore)(草稿)

第12章 Hive:进阶 12.4 Hive Metastore 12.4.1 三种配置方式 Hive Metastore有三种配置方式,分别是: Embedd...

55470
来自专栏Hadoop实操

如何在Kerberos环境下的CDH集群部署Spark2.1的Thrift及spark-sql客户端

55240
来自专栏Hadoop实操

如何使用java命令从非集群节点向CDH集群提交MapReduce作业

在前面文章Fayson讲过《如何使用hadoop命令向CDH集群提交MapReduce作业》和《如何跨平台在本地开发环境提交MapReduce作业到CDH集群》...

36360
来自专栏牛肉圆粉不加葱

Spark Streaming + Kakfa 编程指北

本文简述如何结合 Spark Streaming 和 Kakfa 来做实时计算。截止目前(2016-03-27)有两种方式:

11740
来自专栏祝威廉

StreamingPro 支持Spark Structured Streaming

Structured Streaming 的文章参考这里: Spark 2.0 Structured Streaming 分析。2.0的时候只是把架子搭建起来了...

13830
来自专栏算法channel

HDFS|基本概念和读写原理

01 — HDFS设计目的 A distributed file system that provides high-throughput access to ...

41670
来自专栏Hadoop实操

如何使用Cloudera Manager在线为集群减容

在Hadoop集群资源紧张的情况下可以在线扩容来提升集群的计算能力,具体参考Fayson前面的文章《如何在非Kerberos环境下对CDH进行扩容》,那么在集群...

1.5K70
来自专栏星汉技术

Hadoop问题:DataNode线程不见了

35660
来自专栏Hadoop实操

如何在Kerberos的CDH使用Sentry实现Spark SQL的权限控制

74720

扫码关注云+社区

领取腾讯云代金券