[大牛翻译系列]Hadoop(20)附录A.10 压缩格式LZOP编译安装配置
附录A.10 LZOP
LZOP是一种压缩解码器,在MapReduce中可以支持可分块的压缩。第5章中有一节介绍了如何应用LZOP。在这一节中,将介绍如何编译LZOP,在集群做相应配置。
A.10.1 获得更多的信息
表A.12 有用的资源
| 描述 | URL地址 |
| Twitter有关于LZOP的博客文章,包括一些统计信息和安装指南 | http://bit.ly/dfEvGn |
| Todd Lipcon的LZO GitHub库。 | https://github.com/toddlipcon/hadoop-lzo |
A.10.2 编译LZOP
在具体步骤之前,需要注意一下几点:
- LZOP的编译环境及硬件最好能够和最终部署的生产环境一致。
- 在每个需要使用LZOP的节点上都需要分别进行安装和配置,包括集群的数据节点。
在CDH发行版上安装Hadoop本地库
在Hadoop中运行LZOP依赖于本地库。首先需要设置本地库。这件事在CDH版本中很容易。脚本如下:
$ yum install hadoop-0.20-native.x86_64
以下是安装的结果:
$ rpm -ql hadoop-0.20-native-0.20.2+923.97-1
/usr/lib/hadoop-0.20/lib/native
/usr/lib/hadoop-0.20/lib/native/Linux-amd64-64
/usr/lib/hadoop-0.20/lib/native/Linux-amd64-64/libhadoop.a
/usr/lib/hadoop-0.20/lib/native/Linux-amd64-64/libhadoop.la
/usr/lib/hadoop-0.20/lib/native/Linux-amd64-64/libhadoop.so
/usr/lib/hadoop-0.20/lib/native/Linux-amd64-64/libhadoop.so.1
/usr/lib/hadoop-0.20/lib/native/Linux-amd64-64/libhadoop.so.1.0.0
/usr/lib/hadoop-0.20/lib/native/Linux-amd64-64/libsnappy.a
/usr/lib/hadoop-0.20/lib/native/Linux-amd64-64/libsnappy.la
/usr/lib/hadoop-0.20/lib/native/Linux-amd64-64/libsnappy.so
/usr/lib/hadoop-0.20/lib/native/Linux-amd64-64/libsnappy.so.1
/usr/lib/hadoop-0.20/lib/native/Linux-amd64-64/libsnappy.so.1.1.1
在非CDN发行版上安装Hadoop本地库
如果用的是Apache的Hadoop发行版,它已经自带了Linux 32位和64位的本地库。文件位于$HADOOP_HOME/lib/native。对于其它的Hadoop发行版,请咨询供应商如何安装Hadoop本地库。也可以自行通过官方文档编译本地库。文档位于http://hadoop.apache.org/common/docs/r1.0.0/native_libraries.html。
安装LZOP本地库
使用LZOP必须安装LZOP本地库。在RedHat上,脚本如下:
$ yum install liblzo-devel
在CentOS上,必须从http://pkgs.repoforge.org/lzo/下载和操作系统版本架构匹配的lzo-devel的RPM包。
在Hadoop中编译,安装,配置LZOP库
有两个GitHub库维护LZOP库。Todd Lipcon维护一个基于CDH发行版的,在https://github.com/toddlipcon/hadoop-lzo。Twitter维护另一个,在https://github.com/kevinweil/hadoop-lzo。如果需要最新和最好的,用Twitter的那个版本。如果要在CDH发行版上应用,那么就需要Todd的那个版本。
源代码中包含了LZOP的本地库和JAVA库。在下载并解压缩tarball包之后,到相应的目录中编译代码可得到本地库和JAVA库。脚本如下:
$ ant package
在完成以后,将生成的库文件复制到Hadoop的库目录中。脚本如下:
# replace the following path with your actual
# Hadoop installation directory
#
# the following is the CDH Hadoop home dir
#
export HADOOP_HOME=/usr/lib/hadoop
$ cp ./build/hadoop-lzo-<version>.jar $HADOOP_HOME/lib/
$ cp -R build/hadoop-lzo-<version>/lib/native/* \
$HADOOP_HOME/lib/native/
配置Hadoop
下一步,需要配置Hadoop的内核,以加入对新的压缩编码器的支持。将一下行加入到core-site.xml中。CDH中core-site.xml的位置是/etc/hadoop/conf/core-site.xml。确保移出了其中的空行和空格。注意,在逗号之间没有白色字符。
其中,io.compression.codecs的值假定Snappy压缩编码器已经安装了。如果不是,那么就需要将org.apache.hadoop.io.compress.SnappyCodec删除。
<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>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.LzoCodec,
com.hadoop.compression.lzo.LzopCodec,
org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
CDH发行版中/usr/lib/hadoop/bin/hadoop可以自动添加本地库目录到JVM的java.library.path中。但是,如果客户端的Hadoop代码不是用那个脚本运行的话,那么就需要手动添加以下脚本到JAVA的命令行中。注意引号和/usr之间没有空白字符。
-Djava.library.path=/usr/lib/hadoop/lib/native/Linux-amd64-64:/usr/lib64
然后bin/run.sh脚本就可以运行Hadoop脚本。它会将本地库目录加入到java.library.path中。
[大牛翻译系列]Hadoop(20)附录A.10 压缩格式LZOP编译安装配置的更多相关文章
- [大牛翻译系列]Hadoop 翻译文章索引
原书章节 原书章节题目 翻译文章序号 翻译文章题目 链接 4.1 Joining Hadoop(1) MapReduce 连接:重分区连接(Repartition join) http://www.c ...
- [大牛翻译系列]Hadoop(9)MapReduce 性能调优:理解性能瓶颈,诊断map性能瓶颈
6.2 诊断性能瓶颈 有的时候作业的执行时间会长得惊人.想靠猜也是很难猜对问题在哪.这一章中将介绍如何界定问题,找到根源.涉及的工具中有的是Hadoop自带的,有的是本书提供的. 系统监控和Hadoo ...
- [大牛翻译系列]Hadoop(19)MapReduce 文件处理:基于压缩的高效存储(二)
5.2 基于压缩的高效存储(续) (仅包括技术27) 技术27 在MapReduce,Hive和Pig中使用可分块的LZOP 如果一个文本文件即使经过压缩后仍然比HDFS的块的大小要大,就需要考虑选择 ...
- [大牛翻译系列]Hadoop(18)MapReduce 文件处理:基于压缩的高效存储(一)
5.2 基于压缩的高效存储 (仅包括技术25,和技术26) 数据压缩可以减小数据的大小,节约空间,提高数据传输的效率.在处理文件中,压缩很重要.在处理Hadoop的文件时,更是如此.为了让Hadoop ...
- [大牛翻译系列]Hadoop(22)附录D.2 复制连接框架
附录D.2 复制连接框架 复制连接是map端连接,得名于它的具体实现:连接中最小的数据集将会被复制到所有的map主机节点.复制连接的实现非常直接明了.更具体的内容可以参考Chunk Lam的<H ...
- [大牛翻译系列]Hadoop(21)附录D.1 优化后的重分区框架
附录D.1 优化后的重分区框架 Hadoop社区连接包需要将每个键的所有值都读取到内存中.如何才能在reduce端的连接减少内存开销呢?本文提供的优化中,只需要缓存较小的数据集,然后在连接中遍历较大数 ...
- [大牛翻译系列]Hadoop(10)MapReduce 性能调优:诊断reduce性能瓶颈
6.2.3 Reduce的性能问题 Reduce的性能问题有和map类似的方面,也有和map不同的方面.图6.13是reduce任务的具体的执行各阶段,标识了可能影响性能的区域. 这一章将介绍影响re ...
- [大牛翻译系列]Hadoop(3)MapReduce 连接:半连接(Semi-join)
4.1.3 半连接(Semi-join) 假设一个场景,需要连接两个很大的数据集,例如,用户日志和OLTP的用户数据.任何一个数据集都不是足够小到可以缓存在map作业的内存中.这样看来,似乎就不能使用 ...
- [大牛翻译系列]Hadoop(17)MapReduce 文件处理:小文件
5.1 小文件 大数据这个概念似乎意味着处理GB级乃至更大的文件.实际上大数据可以是大量的小文件.比如说,日志文件通常增长到MB级时就会存档.这一节中将介绍在HDFS中有效地处理小文件的技术. 技术2 ...
随机推荐
- T-SQL 之 多表联合更新
1. sqlite 多表更新方法 UPDATE tA SET col1=tB.col1 FROM tableA tA INNER JOIN tableB tB ON tA.col2=tB.col2 这 ...
- IOS 应用中从竖屏模式强制转换为横屏模式
在 iPhone 应用里,有时我们想强行把显示模式从纵屏改为横屏(反之亦然),CocoaChina 会员 “alienblue” 为我们提供了两种思路 第一种:通过人为的办法改变view.transf ...
- [Java] SSH框架笔记_框架分析+环境搭建+实例源码下载
首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框 ...
- Android 高级UI设计笔记10:瀑布流控件PinterestLikeAdapterView的使用
1. 首先我们看看瀑布流的效果,如下: 2. 今天要介绍的瀑布流控件是:PinterestLikeAdapterView 项目地址:https://github.com/GDG-Korea/Pinte ...
- iOS - 混合开发
5.oc 与 js 混合开发 PhoneGap 专门做混合开发的,已经被另一个公司收购. WebViewJavascriptBridge 国内用的比较多 混合开发的好处:跨平台性.H5开发的时间成本, ...
- 基本API-StdIn.java
/************************************************************************* * Compilation: javac StdI ...
- HDU 2845 Beans (DP)
Beans Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- hdu 4738 桥
题目:还是自己看题目吧 trick:当不连通时不需要人去炸.否则,当桥的费用为0时当然需要一个人去炸... #include <set> #include <map> #inc ...
- 2013 ACM/ICPC Asia Regional Online —— Warmup2
HDU 4716 A Computer Graphics Problem 水题.略 HDU 4717 The Moving Points 题目:给出n个点的起始位置以及速度矢量,问任意一个时刻使得最远 ...
- iOS加入百度地图的几个问题
1.其中一个.m文件要改成.mm文件 2.plist文件必须包含两项 Bundle display name-值不能为空 NSLocationWhenInUseUsageDescription-值可以 ...