Hadoop 2.2.0安装和配置lzo

转自:http://www.iteblog.com/archives/992

 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。

文章目录 [hide]

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

[wyp@master ~]$ wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz

[wyp@master ~]$ tar -zxvf lzo-2.06.tar.gz

[wyp@master ~]$ cd lzo-2.06

[wyp@master ~]$ export CFLAGS=-m64

[wyp@master ~]$ ./configure -enable-shared -prefix=/usr/local/hadoop/lzo/

[wyp@master ~]$ make && sudo make install

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

[wyp@master /usr/local/hadoop/lzo]$ ls -l

total 12

drwxr-xr-x 3 root root 4096 Mar 21 17:23 include

drwxr-xr-x 2 root root 4096 Mar 21 17:23 lib

drwxr-xr-x 3 root root 4096 Mar 21 17:23 share

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

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

[wyp@master ~]$ yum -y install  lzo-devel     \

               zlib-devel  gcc autoconf automake libtool

二、安装Hadoop-LZO

  这里下载的是Twitter hadoop-lzo,可以用Maven(如何安装Maven请参照本博客的《Linux命令行下安装Maven与配置》)进行编译。

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

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

[wyp@master ~]$ unzip master

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

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

[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:

<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目录,依次执行下面的命令

[wyp@master hadoop-lzo-master]$ export CFLAGS=-m64

[wyp@master hadoop-lzo-master]$ export CXXFLAGS=-m64

[wyp@master hadoop-lzo-master]$ export C_INCLUDE_PATH=     \

                                  /usr/local/hadoop/lzo/include

[wyp@master hadoop-lzo-master]$ export LIBRARY_PATH=/usr/local/hadoop/lzo/lib

[wyp@master hadoop-lzo-master]$ mvn clean package -Dmaven.test.skip=true

[wyp@master hadoop-lzo-master]$ cd target/native/Linux-amd64-64

[wyp@master Linux-amd64-64]$ tar -cBf - -C lib . | tar -xBvf - -C ~

[wyp@master ~]$cp ~/libgplcompression* $HADOOP_HOME/lib/native/

[wyp@master hadoop-lzo-master]$cp target/hadoop-lzo-0.4.18-SNAPSHOT.jar   \

                                   $HADOOP_HOME/share/hadoop/common/

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

[wyp@master ~]$ ls -l

-rw-r--r--  1 libgplcompression.a

-rw-r--r--  1 libgplcompression.la

lrwxrwxrwx  1 libgplcompression.so -> libgplcompression.so.0.0.0

lrwxrwxrwx  1 libgplcompression.so.0 -> libgplcompression.so.0.0.0

-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。

四、如何使用

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

hive> create table lzo(

    > id int,

    > name string)

    > STORED AS INPUTFORMAT ‘com.hadoop.mapred.DeprecatedLzoTextInputFormat‘

    > OUTPUTFORMAT ‘org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat‘;

OK

Time taken: 3.423 seconds

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

FAILED: Error in metadata: Class not found:     \

com.hadoop.mapred.DeprecatedLzoTextInputFormat

FAILED: Execution Error,

return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

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

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

[wyp@master ~]$ cat users.txt

1^Awyp

2^Azs

3^Als

4^Aww

5^Awyp2

6^Awyp3

7^Awyp4

8^Awyp5

9^Awyp6

10^Awyp7

11^Awyp8

12^Awyp5

13^Awyp9

14^Awyp20

[wyp@master ~]$ lzop users.txt

[wyp@master ~]$ ls -l users.txt*

-rw-r--r-- 1 wyp wyp 97  Mar 25 15:40 users.txt

-rw-r--r-- 1 wyp wyp 154 Mar 25 15:40 users.txt.lzo

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

hive> load data local inpath ‘/home/wyp/users.txt.lzo‘ into table lzo;

Copying data from file:/home/wyp/users.txt.lzo

Copying file: file:/home/wyp/users.txt.lzo

Loading data to table default.lzo

Table default.lzo stats: [num_partitions: 0, num_files: 1,

               num_rows: 0, total_size: 154, raw_data_size: 0]

OK

Time taken: 0.49 seconds

hive> select * from lzo;

OK

1   wyp

2   zs

3   ls

4   ww

5   wyp2

6   wyp3

7   wyp4

8   wyp5

9   wyp6

10  wyp7

11  wyp8

12  wyp5

13  wyp9

14  wyp20

Time taken: 0.244 seconds, Fetched: 14 row(s)

好了,我们可以在Hadoop中使用lzo了!!(完)

附:linux下maven安装配置 :http://www.iteblog.com/archives/775

时间: 2024-08-01 03:35:56

Hadoop 2.2.0安装和配置lzo的相关文章

hadoop 2.5.0安装和配置

安装hadoop要先做以下准备: 1.jdk,安装教程在 http://www.cnblogs.com/stardjyeah/p/4640917.html 2.ssh无密码验证,配置教程在 http://www.cnblogs.com/stardjyeah/p/4641524.html 3.linux静态ip配置,教程在 http://www.cnblogs.com/stardjyeah/p/4640691.html 准备好以后就可以进行hadoop 2.5.0安装和配置了 1)        

Linux下Hadoop 2.2.0 集群配置攻略

Hadoop 2.2.0 集群配置攻略 用户输入标识: chmod +x jdk-7u45-linux-x64.rpm  为黑色带底纹 系统输出标识: java version "1.7.0_51" 为绿色小字 2014年3月20-日 by lilihao Q 404536204 1. 安装sun jdk (1). 到Oracle的官方网站下载jdk,目前最新版本是7u51 安装包: http://www.oracle.com/technetwork/java/javase/downl

CUDA 6.0 安装及配置( WIN7 64位 / 英伟达G卡 / VS2010 )

前言 本文讲解如何在VS 2010开发平台中搭建CUDA开发环境 当前配置: 系统:WIN7 64位 开发平台:VS 2010 显卡:英伟达G卡 CUDA版本:6.0 若配置不一样,请勿参阅本文. 第一步 点击这里下载 cuda最新版,目前最高版本是6.0.下载完毕后得到 cuda_6.0.37_winvista_win7_win8.1_general_64.exe 文件. 第二步 运行安装程序,弹出安装过程中转文件路径设定框: 这个路径随便填无所谓,安装完后就会自动删除的,我就直接设置为默认的

VMware Workstation 10.0 安装与配置

VMware Workstation 10.0虚拟机 1.先安装VMware Workstation 10.0原版, 2.然后用下面的任意一个VMware Workstation序列号注册(或者你也可以用注册工具) 1Y0LW-4WJ9N-LZ5G9-Z81QP-92PN7 JU052-F4J41-HZGM8-QU056-93P6Y 0Y6DK-8H1DH-UZ249-X2A5M-3AM2M MA664-AF2E5-6ZAD9-GU15K-1AR1N 3,新建一个VMware的虚拟机 ultra

MySQL Server 5.0–安装及配置/MySQLInstanceConfig.exe用法详解

MySQL Server 5.0–安装及配置/MySQLInstanceConfig.exe用法详解 http://blog.csdn.net/feihong247/article/details/7791105 配置MySQL步骤: 1.       运行MySQL Server安装目录下bin/MySQLInstanceConfig.exe.出现如下所示的向导界面 . 点击"Next"进入下一步. 2.       如果MySQLInstanceConfig在MySQL Serve

烂泥:zabbix3.0安装与配置

这个月又快过完了,最近也比较忙,没时间写文章,今天挤点时间把zabbix3.0安装与配置的文章写下来. 其实zabbix3.0的安装很简单,但是由于个人比较懒,所以一直不喜欢使用源码方式进行安装,而且管理的服务器多了,源码安装也感觉不方便,所以现在大部分安装软件我都会首先选择yum或者apt-get方式进行. 本篇文章,我也不多介绍zabbix3.0安装的详细步骤了,只列出centos.ubuntu下zabbix3.0的相关安装命令以及zabbix的基本配置. zabbix3.0对OS的要求:m

CentOS 6.0安装和配置ssh服务

/* 传统的网络服务程序,如:ftp.pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据.而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击.所谓“中间人”的攻击方式, 就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器.服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题.通过使用SS

macOS下MySQL 8.0 安装与配置教程

原文:macOS下MySQL 8.0 安装与配置教程 一.前言 1.本教程主要内容 适用Homebrew安装MySQL MySQL 8.0 基础适用于配置 MySQL shell管理常用语法示例(用户.权限等) MySQL字符编码配置 MySQL远程访问配置 2.本教程环境信息与适用范围 环境信息 软件/环境 版本/说明 macOS macOS High Sierra MySQL MySQL 8.0.12 适用范围 软件 版本 macOS macOS MySQL 8.0.x 二.MySQL安装

hadoop 2.6.0 安装过程

最近才开始接触hadoop,最先要做的当然是安装hadoop 了,在安装hadoop之前需要作以下的一些准备 一个linux 环境,我使用vmware的虚拟机环境安装了centos 这个请自己百度一下吧,确实是太大了 jdk 1.6 以上的linux安装包 hadoop 2.6.0的安装包 注意,我使用的64位的linux,所以用的Java是64位的安装包 http://pan.baidu.com/s/1kT3PYLL hadoop 集群支持三种模式 1.单机模式 2.伪分布是模式 3.完全分布