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。
一、下载、解压并编译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 -ltotal 12drwxr-xr-x 3 root root 4096 Mar 21 17:23 includedrwxr-xr-x 2 root root 4096 Mar 21 17:23 libdrwxr-xr-x 3 root root 4096 Mar 21 17:23 share |
将/usr/local/hadoop/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
[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.lalrwxrwxrwx 1 libgplcompression.so -> libgplcompression.so.0.0.0lrwxrwxrwx 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';OKTime taken: 3.423 seconds |
FAILED: Error in metadata: Class not found: \com.hadoop.mapred.DeprecatedLzoTextInputFormatFAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask |
请检查你的环境是否配置好。
然后在本地用lzo压缩一个文件,先看看users.txt的内容:
[wyp@master ~]$ cat users.txt1^Awyp2^Azs3^Als4^Aww5^Awyp26^Awyp37^Awyp48^Awyp59^Awyp610^Awyp711^Awyp812^Awyp513^Awyp914^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.lzoCopying file: file:/home/wyp/users.txt.lzoLoading data to table default.lzoTable default.lzo stats: [num_partitions: 0, num_files: 1, num_rows: 0, total_size: 154, raw_data_size: 0]OKTime taken: 0.49 secondshive> select * from lzo;OK1 wyp2 zs3 ls4 ww5 wyp26 wyp37 wyp48 wyp59 wyp610 wyp711 wyp812 wyp513 wyp914 wyp20Time taken: 0.244 seconds, Fetched: 14 row(s) |
好了,我们可以在Hadoop中使用lzo了!!(完)
附:linux下maven安装配置 :http://www.iteblog.com/archives/775
Hadoop 2.2.0安装和配置lzo的更多相关文章
- CDH6.3.0下Apache Atlas2.1.0安装与配置
CDH6.3.0下Apache Atlas2.1.0安装与配置 0. 说明 文中的${ATLAS_HOME}, ${HIVE_HOME} 环境变更需要根据实际环境进行替换. 1. 依赖 A. 软件依赖 ...
- 烂泥:zabbix3.0安装与配置
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 这个月又快过完了,最近也比较忙,没时间写文章,今天挤点时间把zabbix3.0安装与配置 ...
- CentOS-6.6下Tomcat-7.0安装与配置(Linux)
CentOS-6.6下Tomcat-7.0安装与配置(Linux) 一.认识tomcat Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目, ...
- spark 1.6.0 安装与配置(spark1.6.0、Ubuntu14.04、hadoop2.6.0、scala2.10.6、jdk1.7)
前几天刚着实研究spark,spark安装与配置是入门的关键,本人也是根据网上各位大神的教程,尝试配置,发现版本对应最为关键.现将自己的安装与配置过程介绍如下,如有兴趣的同学可以尝试安装.所谓工欲善其 ...
- [Hadoop入门] - 2 ubuntu安装与配置 hadoop安装与配置
ubuntu安装(这里我就不一一捉图了,只引用一个网址, 相信大家能力) ubuntu安装参考教程: http://jingyan.baidu.com/article/14bd256e0ca52eb ...
- CentOS7.0安装与配置Tomcat-7
解决权限不够 #chmod a+x filename 安装说明 安装环境:CentOS-7.0.1406安装方式:源码安装 软件:apache-tomcat-7.0.29.tar.gz 下载地址:ht ...
- Hadoop集群的安装与配置(centos 6.5)
一.Hadoop搭建准备(centOs6.5 且每个系统都要有同一个用户,如:hadoop) 1.IP的配置 包括Master和Slaves的IP配置,之间能够相互ping通: 例如: ...
- Redis4.0.0 安装及配置 (Linux — Centos7)
本文中的两个配置文件可在这里找到 操作系统:Linux Linux发行版:Centos7 安装 下载地址,点这里Redis4.0.0.tar.gz 或者使用命令: wget http://downlo ...
- macOS下MySQL 8.0 安装与配置教程
一.前言 1.本教程主要内容 适用Homebrew安装MySQL MySQL 8.0 基础适用于配置 MySQL shell管理常用语法示例(用户.权限等) MySQL字符编码配置 MySQL远程访问 ...
随机推荐
- Linux——awk命令解析
awk简介 awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK 的确拥有自己的语言: AWK 程 ...
- [JOISC2014]たのしい家庭菜園
[JOISC2014]たのしい家庭菜園 题目大意: 给定一个长度为\(n(n\le3\times10^5)\)的序列\(A(A_i\le10^9)\).只能交换相邻两个数,问最少需要几步可以将它变成一 ...
- js中使用将json数组 转换为json将一个包含对象的数组用以创建一个包含新重新格式化对象的新数组
1.使用reduce: let arr = [{ "code": "badge", "priceList": [{ "amount ...
- WC前的小计划
写在前面的.. 要去WC了好开心的呢.. 但是之前荒废了好多时间呢.. 好吧从明天开始加紧训练,目标是:WC前bzoj300t..(现在是260呢..) 开始吧 来看看完成情况: 40/40 [201 ...
- 编程菜鸟的日记-初学尝试编程-寻找2到n之间的素数并输出
//输入一个整数n,输出2到n之间的具体素数值 #include <iostream> #include <algorithm> #include <cmath> ...
- 判断浏览器的类型$_SERVER['HTTP_USER_AGENT']和语言$_SERVER['HTTP_ACCEPT_LANGUAGE']
判断浏览器类型: $_SERVER["HTTP_USER_AGENT"] 判断浏览器类型的具体程序如下: <?php if(strpos($_SERVER["HTT ...
- PAT-A1004. Counting Leaves (30)
根据家谱树从根结点开始输出每一层的叶子结点数量.使用BFS来解决.因为不会重复访问结点,所以不需要vis数组来标记是否访问过该结点. //#include "stdafx.h" # ...
- jQueryUI中Datepicker(日历)插件使用
atepicker插件的属性: 属性 数据类型 默认值 说明 altField string "" 使用备用的输出字段,即将选择的日期 以另一种格式,输出到另一个控件中, 值为选择 ...
- sklearn CART决策树分类
sklearn CART决策树分类 决策树是一种常用的机器学习方法,可以用于分类和回归.同时,决策树的训练结果非常容易理解,而且对于数据预处理的要求也不是很高. 理论部分 比较经典的决策树是ID3.C ...
- 线段树入门&lazy思想
线段树将区间分成若干个子区间,子区间又继续分,直到区间为一个点(区间左值等于右值) 对于父区间[a,b],其子区间为[a,(a+b)/2]和[(a+b)/2+1,b] 用于求区间的值,如区间最值.区间 ...