测试LZO的index功能

题目

请测试LZO的index功能
​ a) 练习lzo的index如何使用(hadoop-lzo.jar)
​ b) block是128M,你的lzo数据>128,请使用一个shell造出来这个数据
​ c) 当做wc的input,观察是否是2个map task

环境

Linux版本: CentOS 6.5

jdk版本: JDK1.8

hadoop版本: 2.6.0-cdh5.7.0

一份数据:page_views.dat 18.1M

linux 有LZO类库:安装LZOM

上传数据

1
2
3
$ cd ~/data
## 这个目录上传我们page_views.dat
$ rz

放大数据

1
2
$ touch create_data.sh
$ vi create_data.sh

将我们的数据放大100倍

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
basepath=$(cd `dirname $0`; pwd)
if [ "$basepath" != "/home/hadoop/data" ];then
exit
fi
rm -f page_big900.dat
for ((a=1;a<=100;a++))
do
cat page_views.dat >>page_big900.dat
done

运行脚本

1
$ sh create_data.sh

压缩数据

1
$ lzop -9v page_big900.dat

上传到HDFS

1
2
$ hdfs dfs -mkdir /user/hadoop/LZO
$ hdfs dfs -put page_big900.dat.lzo /user/hadoop/LZO

建立索引文件

1
$ hadoop jar $HADOOP_HOMOE/share/hadoop/common/hadoop-lzo-0.4.20-SNAPSHOT.jar com.hadoop.compression.lzo.LzoIndexer /user/hadoop/LZO/page_big900.dat.lzo
注:也可以使用集群的方式
1
$ hadoop jar $HADOOP_HOMOE/share/hadoop/common/hadoop-lzo-0.4.20-SNAPSHOT.jar com.hadoop.compression.lzo.DistributedLzoIndexer /home/wyp/input/cite.txt.lzo

此时会在hdfs目下生成一个index文件

当做WC的input,运行MR作业

当做wc的input,观察是否是以128M为一个split形成一个map task,此次任务按计算应该有 640/128 = 5个

1
2
3
4
5
$ yarn jar /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount \
-D mapreduce.job.inputformat.class=com.hadoop.mapreduce.LzoTextInputFormat \
-D mapred.output.compress=true \
-D mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec \
/user/hadoop/LZO/page_big900.dat.lzo /user/hadoop/LZO/output

至此,测试完成。