(一)环境:
hadoop | 2.8.1 |
hive | 1.2.2 |
core-site.xml 配置项
<property> <name>io.compression.codecs</name> <value>org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.DefaultCodec, org.apache.hadoop.io.compress.BZip2Codec, com.hadoop.compression.lzo.LzopCodec, com.hadoop.compression.lzo.LzoCodec </value> </property> <!-- lzop --> <property> <name>io.compression.codec.lzo.class</name> <value>com.hadoop.compression.lzo.LzopCodec</value> </property>
mapred-site.xml 配置项
<!--设置map中间结果使用 lzop 压缩--> <property> <name>mapreduce.map.output.compress</name> <value>true</value> </property> <property> <name>mapreduce.map.output.compress.codec</name> <value>com.hadoop.compression.lzo.LzopCodec</value> </property> <!--设置map/reduce 整个过程使用 lzop 压缩 --> <property> <name>mapreduce.output.fileoutputformat.compress</name> <value>true</value> </property> <!-- lzop --> <property> <name>mapreduce.output.fileoutputformat.compress.codec</name> <value>com.hadoop.compression.lzo.LzopCodec</value> </property>
(二)
1.hive建表sql
CREATE TABLE `lzo5`( `uuid` string) STORED AS INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
2.创建uuid.txt文件,放1行数据
uuid1
3.lzop创建lzo文件
lzop uuid.txt
4.hive load数据
load data inpath "/home/hadoop/uuid.txt.lzo" into table lzo5;
5.hive查询,查看结果是1(正确)
select count(1) from lzo5;
6.给hive表lzo5路径下的lzo文件,创建lzo索引
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/share/hadoop/common/hadoop-lzo-0.mmon/hadoop-lzo-0.4.21-SNAPSHOT.jar com.hadoop.compression.lzo.DistributeddLzoIndexer hdfs://hd1:9000/user/hive/warehouse/lzo5
7.查看索引生成情况
hdfs dfs -ls hdfs://hd1:9000/user/hive/warehouse/lzo5
8.再次查询sql,查看结果是1(正确)
select count(1) from lzo5;
(三)如何知道lzo index是否生效?
创建一个lzo文件,比hdfs的block size略大一点,分别在无索引和有索引两种场景下测试,看map数
- 无索引的map数是1,因为lzo无索引不可split,
- 有索引的map数是lzo文件大小 / block size 个, 因为lzo + index后支持split
(四)对比结果:
block size是128M,生成的lzo文件是370M
无索引和有索引的执行时间如下,有索引的查询略快一点:
无索引,map数1个
有索引的,map数3个(index后,支持split)
相关推荐
hadoop 的lzo压缩源码包tar.gz,其中包括lzo-2.06.tar.gz和lzo-2.10.tar.gz两个版本,可供选择
hadoop2 lzo 文件 ,编译好的64位 hadoop-lzo-0.4.20.jar 文件 ,在mac 系统下编译的,用法:解压后把hadoop-lzo-0.4.20.jar 放到你的hadoop 安装路径下的lib 下,把里面lib/Mac_OS_X-x86_64-64 下的所有文件 拷到 ...
lzo-2.09.tar.gz
hadoop2 lzo 文件 ,编译好的64位 hadoop-lzo-0.4.15.jar 文件 ,在mac 系统下编译的,用法:解压后把hadoop-lzo-0.4.15.jar 放到你的hadoop 安装路径下的lib 下,把里面lib/Mac_OS_X-x86_64-64 下的所有文件 拷到 ...
图形图像压缩资料(LZO+LZSS+LZW) 有代码 有例子 有文档 !无损压缩算法C、C++源代码,好资料,共享下!
配置hadoop支持LZO和snappy压缩
制作ubifs根文件系统必备工具之三:lzo-2.05.tar.gz
移植lzo
1. 下载并解压hadoop-lzo-master.zip 2. 需要jdk1.6+(非mac),jdk1.7 3. 安装LZO-2.x库(上步) 4. 编译hadoop-lzo $>C_INCLUDE_PATH=/usr/local/include $>LIBRARY_PATH=/usr/local/lib $>参见下文先搭建maven...
编译后的hadoop-lzo源码,将hadoop-lzo-0.4.21-SNAPSHOT.jar放到hadoop的classpath下 如${HADOOP_HOME}/share/hadoop/common。hadoop才能正确支持lzo,免去编译的烦恼
hadoop-lzo-0.4.21-SNAPSHOT.jar是hadoop数据压缩lzo工具包
hadoop-lzo-0.4.15.tar.gz
lzo 最新版2.06 2012年12月3日
hadoop-lzo-0.4.13.jar 依赖包 hadoop-lzo-0.4.13.jar 依赖包 hadoop-lzo-0.4.13.jar 依赖包
lzo,版本2.10