转自 http://blog.csdn.net/joseph_happy/article/details/50374057

  • 简介
  • 部署
    • 安装lzop native library
    • 安装hadoop-lzo
    • 配置hadoop环境变量
    • 验证lzo(通过hive测试)
      • 创建lzo表
      • 导入数据
      • 索引LZO文件
      • 利用hive执行mr任务
      • 修改使用中hive表的输入输出格式

简介

  • 启用lzo

启用lzo的压缩方式对于小规模集群是很有用处,压缩比率大概能降到原始日志大小的1/3。同时解压缩的速度也比较快。

  • 安装lzo

lzo并不是linux系统原生支持,所以需要下载安装软件包。这里至少需要安装3个软件包:lzo, lzop, hadoop-gpl-packaging。

  • 增加索引

gpl-packaging的作用主要是对压缩的lzo文件创建索引,否则的话,无论压缩文件是否大于hdfs的block大小,都只会按照默认启动2个map操作。

部署

安装lzop native library

[root@localhost ~]#  wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz[root@localhost ~]#  tar -zxvf lzo-2.06.tar.gz[root@localhost ~]#  cd lzo-2.06[root@localhost ~]#  export CFLAGS=-m64[root@localhost ~]#  ./configure -enable-shared -prefix=/usr/local/hadoop/lzo/[root@localhost ~]# make && sudo make install编译完lzo包之后,会在/usr/local/hadoop/lzo/生成一些文件。将/usr/local/hadoop/lzo目录下的所有文件打包,并同步到集群中的所有机器上。在编译lzo包的时候,需要一些环境,可以用下面的命令安装好lzo编译环境[root@localhost ~]#  yum -y install  lzo-devel  zlib-devel  gcc autoconf automake libtool

安装hadoop-lzo

    这里下载的是Twitter hadoop-lzo,可以用Maven(如何安装Maven请参照本博客的《Linux命令行下安装Maven与配置》)进行编译。[root@localhost ~]#  wget https://github.com/twitter/hadoop-lzo/archive/master.zip下载后的文件名是master,它是一个zip格式的压缩包,可以进行解压:[root@localhost ~]#  unzip master解压后的文件夹名为hadoop-lzo-master当然,如果你电脑安装了git,你也可以用下面的命令去下载[root@localhost ~]#  git clone https://github.com/twitter/hadoop-lzo.githadoop-lzo中的pom.xml依赖了hadoop2.1.0-beta,由于我们这里用到的是Hadoop 2.2.0,所以建议将hadoop版本修改为2.2.0:<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><hadoop.current.version>2.2.0</hadoop.current.version><hadoop.old.version>1.0.4</hadoop.old.version>
</properties>然后进入hadoop-lzo-master目录,依次执行下面的命令[root@localhost ~]# export CFLAGS=-m64[root@localhost ~]# export CXXFLAGS=-m64[root@localhost ~]# export C_INCLUDE_PATH=/usr/local/hadoop/lzo/include[root@localhost ~]# export LIBRARY_PATH=/usr/local/hadoop/lzo/lib[root@localhost ~]# mvn clean package -Dmaven.test.skip=true[root@localhost ~]# cd target/native/Linux-amd64-64[root@localhost ~]# tar -cBf - -C lib . | tar -xBvf - -C ~[root@localhost ~]# cp ~/libgplcompression* $HADOOP_HOME/lib/native/[root@localhost ~]# cp target/hadoop-lzo-0.4.18-SNAPSHOT.jar $HADOOP_HOME/share/hadoop/common/其实在tar -cBf – -C lib . | tar -xBvf – -C ~命令之后,会在~目录下生成一下几个文件:[root@localhost ~]# ls -l
1-rw-r--r--  1 libgplcompression.a
2-rw-r--r--  1 libgplcompression.la
3lrwxrwxrwx  1 libgplcompression.so -> libgplcompression.so.0.0.0
4lrwxrwxrwx  1 libgplcompression.so.0 -> libgplcompression.so.0.0.0
5-rwxr-xr-x  1 libgplcompression.so.0.0.0其中libgplcompression.so和libgplcompression.so.0是链接文件,指向libgplcompression.so.0.0.0,将刚刚生成的libgplcompression*和target/hadoop-lzo-0.4.18-SNAPSHOT.jar同步到集群中的所有机器对应的目录。

配置hadoop环境变量

1、在Hadoop中的$HADOOP_HOME/etc/hadoop/hadoop-env.sh加上下面配置:
export LD_LIBRARY_PATH=/usr/local/hadoop/lzo/lib
2、在$HADOOP_HOME/etc/hadoop/core-site.xml加上如下配置:
<property><name>io.compression.codecs</name><value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.BZip2Codec</value>
</property><property><name>io.compression.codec.lzo.class</name><value>com.hadoop.compression.lzo.LzoCodec</value></property>
3、在$HADOOP_HOME/etc/hadoop/mapred-site.xml加上如下配置
<property><name>mapred.compress.map.output</name><value>true</value>
</property><property><name>mapred.map.output.compression.codec</name><value>com.hadoop.compression.lzo.LzoCodec</value>
</property><property><name>mapred.child.env</name><value>LD_LIBRARY_PATH=/usr/local/hadoop/lzo/lib</value>
</property>将刚刚修改的配置文件全部同步到集群的所有机器上,并重启Hadoop集群,这样就可以在Hadoop中使用lzo。

验证lzo(通过hive测试)

创建lzo表

CREATE TABLE lzo (
ip STRING,
user STRING,
time STRING,
request STRING,
status STRING,
size STRING,
rt STRING,
referer STRING,
agent STRING,
forwarded String
)
partitioned by (
date string,
host string
)
row format delimited
fields terminated by ' '
STORED AS INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat"
OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat";

导入数据

LOAD DATA Local INPATH '/home/hadoop/data/access_20151230_25.log.lzo' INTO TABLE lzo PARTITION(date=20151229,host=25);
/home/hadoop/data/access_20151219.log文件的格式如下:xxx.xxx.xx.xxx  -       [23/Dec/2015:23:22:38 +0800]    "GET /ClientGetResourceDetail.action?id=318880&token=Ocm HTTP/1.1"   200     199     0.008   "xxx.com"        "Android4.1.2/LENOVO/Lenovo A706/ch_lenovo/80"   "-"
直接采用lzop  /home/hadoop/data/access_20151219.log即可生成lzo格式压缩文件/home/hadoop/data/access_20151219.log.lzo

索引LZO文件

  1. 批量lzo文件修改$HADOOP_HOME/bin/hadoop jar
/home/hadoop/hadoop-2.2.0/share/hadoop/common/hadoop-lzo-0.4.20-SNAPSHOT.jar
com.hadoop.compression.lzo.DistributedLzoIndexer
/user/hive/warehouse/lzo2. 单个lzo文件修改$HADOOP_HOME/bin/hadoop jar
/home/hadoop/hadoop-2.2.0/share/hadoop/common/hadoop-lzo-0.4.20-SNAPSHOT.jar
com.hadoop.compression.lzo.LzoIndexer
/user/hive/warehouse/lzo/20151228/lzo_test_20151228.lzo

利用hive执行mr任务

set hive.exec.reducers.max=10;
set mapred.reduce.tasks=10;
select ip,rt from nginx_lzo limit 10;
在hive的控制台能看到类似如下格式输出,就表示正确了!
hive> set hive.exec.reducers.max=10;
hive> set mapred.reduce.tasks=10;
hive> select ip,rt from lzo limit 10;
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job_1388065803340_0009, Tracking URL = http://mycluster:8088/proxy/application_1388065803340_0009/
Kill Command = /home/hadoop/hadoop-2.2.0/bin/hadoop job -kill job_1388065803340_0009
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
2013-12-27 09:13:39,163 Stage-1 map = 0%, reduce = 0%
2013-12-27 09:13:45,343 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.22 sec
2013-12-27 09:13:46,369 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.22 sec
MapReduce Total cumulative CPU time: 1 seconds 220 msec
Ended Job = job_1388065803340_0009
MapReduce Jobs Launched:
Job 0: Map: 1 Cumulative CPU: 1.22 sec HDFS Read: 63570 HDFS Write: 315 SUCCESS
Total MapReduce CPU Time Spent: 1 seconds 220 msec
OK
xxx.xxx.xx.xxx "XXX.com"
Time taken: 17.498 seconds, Fetched: 10 row(s)

修改使用中hive表的输入输出格式

ALTER TABLE lzo SET FILEFORMAT  INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'  OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"  SERDE "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe";

hadoop支持lzo完整过程相关推荐

  1. Hadoop支持LZO压缩配置

    支持LZO压缩配置 hadoop本身并不支持lzo压缩,故需要使用twitter提供的hadoop-lzo开源组件.hadoop-lzo需依赖hadoop和lzo进行编译,编译步骤如下. hadoop ...

  2. Hadoop配置lzo压缩

    前言 OS:CentOS 7 hadoop:2.7.7 lzo:lzo-2.10 Apache Maven:3.6.0 JDK:1.8.0_221 hadoop-lzo是一个围绕lzo压缩算法实现的M ...

  3. windows下hadoop对lzo的支持

    windows下hadoop对lzo的支持 背景 下半年学习大数据,首当其冲,先学习了hadoop 学习hadoop的过程可谓是艰难重重 其中最麻烦的就是本地调式,写代码总会有bug,在网上也找到一些 ...

  4. hadoop配置支持LZO压缩格式

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 简介 安装lzo lzo并不是linux系统原生支持,所以需要下载安装软件包.这里至少需要安装3个软件包:lzo ...

  5. Hadoop之 MapReducer工作过程

    1. 从输入到输出 一个MapReducer作业经过了input,map,combine,reduce,output五个阶段,其中combine阶段并不一定发生,map输出的中间结果被分到reduce ...

  6. Hadoop之Lzo压缩配置

    Hadoop之Lzo压缩配置 一.hadoop-lzo编译 hadoop本身并不支持lzo压缩,故需要使用twitter提供的hadoop-lzo开源组件.hadoop-lzo需依赖hadoop和lz ...

  7. Hadoop配置lzo

    Hadoop配置lzo 编译部署参考:https://blog.csdn.net/weixin_40420525/article/details/84869883 一.编译: 0. 环境准备 mave ...

  8. hadoop3.x支持LZO压缩配置

    前提 在hadoop中使用lzo的压缩算法可以减小数据的大小和数据的磁盘读写时间,不仅如此,lzo是基于block分块的,这样他就允许数据被分解成chunk,并行的被hadoop处理.这样的特点,就可 ...

  9. Ubuntu上snmp安装、配置、启动及远程测试完整过程

    0.说明 关于一个完整的教程,还是那句话,国内的要么不完整,要么就太旧了,而且思路也不清晰,所以这里写一篇完整的给大家分享一下. 虽然对于Linux主机的监控可以通过执行特定的命令来完成,但是相比之后 ...

最新文章

  1. 有云服务器还需要云虚拟主机吗,有云服务器还需要云虚拟主机吗
  2. priority_queue+贪心:运输(题解)
  3. 为什么我要转载文章?
  4. 慎用PHP $_REQUEST数组
  5. qstring转string
  6. 深入浅出python系列(二):运算符
  7. TK mybatis 逆向工程
  8. python-常见的语法错误
  9. Linux系统版本介绍
  10. win系统下非系统盘msdia.dll文件怎么处理
  11. python判断图片模糊_用Python进行图像模糊处理和特征提取
  12. 原型工具XSTAR与AXURE对比
  13. c语言else需要条件,C语言else条件判断
  14. 坚定文化新自信 提升文化软实力
  15. 你不知道的CSS函数,Min、Max、Clamp()函数基础用法
  16. win10蓝屏提示重新启动_关于网传0x000000F4蓝屏的临时分析解答
  17. mysql数据库备份与恢复命令
  18. 云图雅集—优美的文章段落
  19. 面对肺炎疫情小贴士-IT奶爸带娃记
  20. coreldraw凹槽_CATIA课时:操作工具栏创建修剪分割曲面视频教程_翼狐网

热门文章

  1. 怎么写竞品分析报告(思路):
  2. MVC搭建webAPI服务
  3. 我的世界服务器启动txt文件,我的世界服务器开启设置全攻略 我的世界开服图文详细教程...
  4. 投身开源,需要持之以恒的热爱与贡献 —— Apache Spark Committer 姜逸坤
  5. 图观——渲染一个简易的三维场景
  6. android sqlite 分词,sqlite3自定义分词器
  7. 电脑配置单4(自用勿删)
  8. 羚珑视频编辑器开发总结
  9. 用PS去设计食品网站的展示
  10. POJ1753 翻转游戏 题解