1.简介:
安装LZO:
lzo并不是Linux系统原生支持,所以需要下载安装软件包,这里至少需要安装3个软件包。
lzo, lzop, hadoop-gpl-packaging。
增加索引:
gpl-packaging主要作用是对压缩的lzo文件创建索引,否则的话,无论压缩的文件是否大于hdfs上的block大小,都只会是一个分片处理。
2.安装lzo并生成数据:
2.1生成数据
数据可以通过 cat a >> b, cat b>>a 这种方式快速生成,尽量让数据大一些,保证压缩后的数据比blocksize大,这样才能测试分片。
2.2安装lzo相关的工具
1 | [root@hadoop001 ~]# yum install -y svn ncurses-devel |
2.3使用lzop工具压缩测试数据
lzo压缩:lzop -v file
lzo解压:lzop -dv file
1 | [hadoop@hadoop001 date]$ lzop -v lzodate.txt |
3.编译hadoop-lzo
3.1下载并配置 hadoop—lzo
1 | [hadoop@hadoop software]$ wget https://github.com/twitter/hadoop-lzo/archive/master.zip |
3.2mvn编译源码
1 | [hadoop@hadoop hadoop-lzo-master]$ mvn clean package -Dmaven.test.skip=true |
1 | #将hadoop-lzo-0.4.21-SNAPSHOT.jar 复制到每台hadoop的common目录 |
3.3配置core.site.xml
1 | # 停止hadoop |
3.3配置mapred-site.xml
1 | #编辑mapred-site.xml添加或修改如下内容 |
4.LZO文件测试
4.1LZO文件不支持分片
1 | #创建LZO压缩文件测试表,若hadoop的common目录没有hadoop-lzo的jar,就会报类DeprecatedLzoTextInputFormat找不到异常 |
由日志我们可以看出只有一个map任务,而我们的数据文件是远大于128M的,说明当前lzo文件默认不支持数据切片
4.2LZO文件支持分片
注意若不是直接load的lzo文件,需要开启压缩,且压缩格式为LzopCodec,load数据并不能改变文件格式和压缩格式。
1 | #开启压缩,生成的压缩文件格式必须设置为LzopCodec,lzoCode的压缩文件格式后缀为.lzo_deflate是无法创建索引的。 |
由日志可知 此时有两个map任务。即构建索引后支持数据分片。
总结:
大数据中常见的压缩格式只有bzip2是支持数据分片的,lzo在文件构建索引后才会支持数据分片