`
zhangxiong0301
  • 浏览: 360770 次
社区版块
存档分类
最新评论

(转) hadoop2安装LZO

阅读更多

1.为什么使用lzo?
2.如何安装配置lzo?
3.如何使用lzo?







Hadoop经常用于处理大量的数据,如果期间的输出数据、中间数据能压缩存储,对系统的I/O性能会有提升。综合考虑压缩、解压速度、是否支持split,目前lzo是最好的选择。LZO(LZO是Lempel-Ziv-Oberhumer的缩写)是一种高压缩比和解压速度极快的编码,它的特点是解压缩速度非常快,无损压缩,压缩后的数据能准确还原,lzo是基于block分块的,允许数据被分解成chunk,能够被并行的解压。LZO库实现了许多有下述特点的算法:
  (1)、解压简单,速度非常快。
  (2)、解压不需要内存。
  (3)、压缩相当地快。
  (4)、压缩需要64 kB的内存。
  (5)、允许在压缩部分以损失压缩速度为代价提高压缩率,解压速度不会降低。
  (6)、包括生成预先压缩数据的压缩级别,这样可以得到相当有竞争力的压缩比
  (7)、另外还有一个只需要8 kB内存的压缩级别。
  (8)、算法是线程安全的。
  (9)、算法是无损的。
本文针对Hadoop 2.2.0,介绍如何安装和使用lzo。

一、下载、解压并编译lzo包

  1. [wyp@master ~]$ wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz
  2. [wyp@master ~]$ tar -zxvf lzo-2.06.tar.gz
  3. [wyp@master ~]$ cd lzo-2.06
  4. [wyp@master ~]$ export CFLAGS=-m64
  5. [wyp@master ~]$ ./configure -enable-shared -prefix=/usr/local/hadoop/lzo/ 
  6. [wyp@master ~]$ make && sudo make install
复制代码


编译完lzo包之后,会在/usr/local/hadoop/lzo/生成一些文件,目录结构如下:

  1. [wyp@master /usr/local/hadoop/lzo]$ ls -l
  2. total 12
  3. drwxr-xr-x 3 root root 4096 Mar 21 17:23 include
  4. drwxr-xr-x 2 root root 4096 Mar 21 17:23 lib
  5. drwxr-xr-x 3 root root 4096 Mar 21 17:23 share
复制代码

 将/usr/local/hadoop/lzo目录下的所有文件打包,并同步到集群中的所有机器上。

 在编译lzo包的时候,需要一些环境,可以用下面的命令安装好lzo编译环境

  1. [wyp@master ~]$ yum -y install  lzo-devel     \
  2.                zlib-devel  gcc autoconf automake libtool
复制代码


二、安装Hadoop-LZO


这里下载的是Twitter hadoop-lzo,可以用Maven进行编译。

  1. [wyp@master ~]$ wget https://github.com/twitter/hadoop-lzo/archive/master.zip
复制代码

下载后的文件名是master,它是一个zip格式的压缩包,可以进行解压:

  1. [wyp@master ~]$ unzip master
复制代码

解压后的文件夹名为hadoop-lzo-master

当然,如果你电脑安装了git,你也可以用下面的命令去下载

  1. [wyp@master ~]$ git clone https://github.com/twitter/hadoop-lzo.git​
复制代码


hadoop-lzo中的pom.xml依赖了hadoop2.1.0-beta,由于我们这里用到的是Hadoop 2.2.0,所以建议将hadoop版本修改为2.2.0:

  1. <properties>
  2.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  3.     <hadoop.current.version>2.2.0</hadoop.current.version>
  4.     <hadoop.old.version>1.0.4</hadoop.old.version>
  5.   </properties>
复制代码


然后进入hadoop-lzo-master目录,依次执行下面的命令

  1. [wyp@master hadoop-lzo-master]$ export CFLAGS=-m64
  2. [wyp@master hadoop-lzo-master]$ export CXXFLAGS=-m64
  3. [wyp@master hadoop-lzo-master]$ export C_INCLUDE_PATH=     \
  4.                                   /usr/local/hadoop/lzo/include
  5. [wyp@master hadoop-lzo-master]$ export LIBRARY_PATH=/usr/local/hadoop/lzo/lib
  6. [wyp@master hadoop-lzo-master]$ mvn clean package -Dmaven.test.skip=true
  7. [wyp@master hadoop-lzo-master]$ cd target/native/Linux-amd64-64
  8. [wyp@master Linux-amd64-64]$ tar -cBf - -C lib . | tar -xBvf - -C ~
  9. [wyp@master ~]$cp ~/libgplcompression* $HADOOP_HOME/lib/native/ 
  10. [wyp@master hadoop-lzo-master]$cp target/hadoop-lzo-0.4.18-SNAPSHOT.jar   \
  11.                                    $HADOOP_HOME/share/hadoop/common/
复制代码

其实在tar -cBf – -C lib . | tar -xBvf – -C ~命令之后,会在~目录下生成一下几个文件:

  1. [wyp@master ~]$ ls -l
  2. -rw-r--r--  1 libgplcompression.a
  3. -rw-r--r--  1 libgplcompression.la
  4. lrwxrwxrwx  1 libgplcompression.so -> libgplcompression.so.0.0.0
  5. lrwxrwxrwx  1 libgplcompression.so.0 -> libgplcompression.so.0.0.0
  6. -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加上下面配置:

  1. export LD_LIBRARY_PATH=/usr/local/hadoop/lzo/lib
复制代码


2、在$HADOOP_HOME/etc/hadoop/core-site.xml加上如下配置:

  1. <property>
  2.         <name>io.compression.codecs</name>
  3.         <value>org.apache.hadoop.io.compress.GzipCodec,
  4.                org.apache.hadoop.io.compress.DefaultCodec,
  5.                com.hadoop.compression.lzo.LzoCodec,
  6.                com.hadoop.compression.lzo.LzopCodec,
  7.                org.apache.hadoop.io.compress.BZip2Codec
  8.         </value>
  9. </property>
  10. <property>
  11.         <name>io.compression.codec.lzo.class</name>
  12.         <value>com.hadoop.compression.lzo.LzoCodec</value>
  13. </property>
复制代码


3、在$HADOOP_HOME/etc/hadoop/mapred-site.xml加上如下配置

  1. <property>
  2.         <name>mapred.compress.map.output</name>
  3.         <value>true</value>
  4. </property>
  5. <property>
  6.         <name>mapred.map.output.compression.codec</name>
  7.         <value>com.hadoop.compression.lzo.LzoCodec</value>
  8. </property>
  9. <property>
  10.         <name>mapred.child.env</name>
  11.         <value>LD_LIBRARY_PATH=/usr/local/hadoop/lzo/lib</value>
  12. </property>
复制代码


四、如何使用

这里在Hive中使用一下lzo,在hive中创建一个lzo表:

  1. hive> create table lzo(
  2.     > id int,
  3.     > name string)
  4.     > STORED AS INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat' 
  5.     > OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';
  6. OK
  7. Time taken: 3.423 seconds
复制代码


如果在创建lzo表出现了如下错误:

  1. FAILED: Error in metadata: Class not found:     \
  2. com.hadoop.mapred.DeprecatedLzoTextInputFormat
  3. FAILED: Execution Error, 
  4. return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
复制代码

请检查你的环境是否配置好。

然后在本地用lzo压缩一个文件,先看看users.txt的内容:

  1. [wyp@master ~]$ cat users.txt
  2. 1^Awyp
  3. 2^Azs
  4. 3^Als
  5. 4^Aww
  6. 5^Awyp2
  7. 6^Awyp3
  8. 7^Awyp4
  9. 8^Awyp5
  10. 9^Awyp6
  11. 10^Awyp7
  12. 11^Awyp8
  13. 12^Awyp5
  14. 13^Awyp9
  15. 14^Awyp20
  16. [wyp@master ~]$ lzop users.txt 
  17. [wyp@master ~]$ ls -l users.txt*
  18. -rw-r--r-- 1 wyp wyp 97  Mar 25 15:40 users.txt
  19. -rw-r--r-- 1 wyp wyp 154 Mar 25 15:40 users.txt.lzo
复制代码


将users.txt.lzo的数据导入到lzo表里面:

  1. hive> load data local inpath '/home/wyp/users.txt.lzo' into table lzo;
  2. Copying data from file:/home/wyp/users.txt.lzo
  3. Copying file: file:/home/wyp/users.txt.lzo
  4. Loading data to table default.lzo
  5. Table default.lzo stats: [num_partitions: 0, num_files: 1, 
  6.                num_rows: 0, total_size: 154, raw_data_size: 0]
  7. OK
  8. Time taken: 0.49 seconds
  9. hive> select * from lzo;
  10. OK
  11. 1        wyp
  12. 2        zs
  13. 3        ls
  14. 4        ww
  15. 5        wyp2
  16. 6        wyp3
  17. 7        wyp4
  18. 8        wyp5
  19. 9        wyp6
  20. 10        wyp7
  21. 11        wyp8
  22. 12        wyp5
  23. 13        wyp9
  24. 14        wyp20
  25. Time taken: 0.244 seconds, Fetched: 14 row(s)
复制代码


好了,我们可以在Hadoop中使用lzo了

分享到:
评论

相关推荐

    hadoop-lzo-0.4.20.jar

    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 下的所有文件 拷到 ...

    hadoop-lzo-0.4.21-SNAPSHOT jars

    此外,可能还需要安装LZO的本地库(如liblzo2)以支持Hadoop的Native IO,以提升性能。 总的来说,Hadoop-LZO是一个针对Hadoop的LZO压缩解决方案,它提供了一种高效的数据压缩方式,尤其适合大数据处理场景,通过这...

    hadoop-lzo-0.4.15.jar

    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-2.06&hadoop;-lzo

    文件“lzo-2.06.tar.gz”是LZO源代码的归档文件,通过解压可以获得LZO的源代码,开发者或系统管理员可以编译安装这个库,以便在自己的系统上使用LZO压缩和解压缩工具。而“hadoop-lzo-master.zip”则是Hadoop-LZO...

    hadoop-lzo-0.4.21-SNAPSHOT.jar

    2. 数据压缩:Hadoop LZO提供了一种名为`LZOFileFormat`的文件格式,可以用来创建和读取LZO压缩的文件。通过设置`mapreduce.output.fileoutputformat.class`属性为`com.hadoop.compression.lzo.LZOFileOutputFormat`...

    2.Hadoop-lzo.7z lzo源码+包

    标题中的“2.Hadoop-lzo.7z lzo源码+包”指的是一个包含Hadoop-LZO相关的源代码和预编译的库文件的压缩包。Hadoop-LZO是Hadoop生态系统中的一个扩展,它提供了对LZO(一种高效的压缩算法)的支持。LZO是一种快速的...

    hadoop-lzo-0.4.15.tar.gz

    4. `README.txt` 或 `INSTALL.txt` 文件:提供安装和使用指南,包括如何构建、配置和集成Hadoop LZO到现有Hadoop集群的步骤。 5. `CHANGES.txt` 文件:记录了自上一个版本以来的改动和改进,帮助用户了解新版本的...

    hadoop集群内lzo的安装与配置

    本文将详细介绍在Hadoop集群内安装和配置LZO的步骤。 首先,需要准备合适的环境。本文中的操作以CentOS 5.5操作系统为基础,配合Hadoop-0.20.2-CDH3B4版本进行介绍。若您的环境与此不同,请根据实际情况作适当调整...

    hadoop-lzo-master.zip

    2. 调整Hadoop的Block大小以匹配LZO压缩后的数据块大小。 3. 对数据进行预处理,如去除重复或无用的信息,以减少压缩前的数据量。 六、应用场景 Hadoop-LZO广泛应用于需要高效数据压缩和解压缩的场景,如日志分析...

    hadoop-lzo-0.4.20-SNAPSHOT.jar

    编译后的hadoop-lzo源码,将hadoop-lzo-0.4.21-SNAPSHOT.jar放到hadoop的classpath下 如${HADOOP_HOME}/share/hadoop/common。hadoop才能正确支持lzo,免去编译的烦恼

    hadoop-lzo所需包

    2. 安装hadoop-lzo-64所需包:这个文件则是为64位操作系统准备的,内容与32位包相似,但所有的库和组件都是针对64位架构优化的。 安装Hadoop-LZO的过程通常涉及以下步骤: 1. 下载对应操作系统的安装包(此处为32...

    lzo 2.0.6、hadoop-lzo-master、apache-maven

    【标题】"lzo 2.0.6、hadoop-lzo-master、apache-maven" 涉及的主要是三个关键元素:LZO压缩库、Hadoop-LZO项目以及Apache Maven,这些都是在大数据处理和软件构建领域的重要工具。 【LZO 2.0.6】: LZO(Lempel-...

    hadoop-lzo-master

    2.安装 lzo apt-get install gcc apt-get install lzop 3.在本地测试 可以 执行 压缩及解压缩命令 下载 https://github.com/kevinweil/hadoop-lzo/zipball/master 解压包 export CFLAGS=-m64 export CXXFLAGS=-...

    hadoop-lzo-0.4.13.jar

    hadoop-lzo-0.4.13.jar 依赖包 hadoop-lzo-0.4.13.jar 依赖包 hadoop-lzo-0.4.13.jar 依赖包

Global site tag (gtag.js) - Google Analytics