现在的位置: 首页 > 综合 > 正文

protocol buffer 与lzo在hadoop上的应用

2013年02月01日 ⁄ 综合 ⁄ 共 1671字 ⁄ 字号 评论关闭

概述

基于hadoop的集群分布式数据处理目前是淘宝搜索中心最重要的数据处理平台,在集群物理条件确定的情况下,有几个方面影响了数据处理的速度。

1、数据大小 (影响磁盘IO和网络IO)

2、数据格式 (影响数据的解析及构造速度)

3、并行度

使用 protocolBuffer + lzo技术,能帮我们做到数据小解析快并行度高这三点, 能帮我们大幅度提高处理的速度。下面详细介绍一下如何编译部署及开发相关代码。

hadoop介绍

请参考 分布式计算开源框架Hadoop介绍 和 官方网站 http://hadoop.apache.org

protocolBuffer介绍

官方网站http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/overview.html

Google定义的一套数据协议,用于数据的结构化和序列化。 Google绝大部分模块数据交互基于此数据协议。

1、平台无关、语言无关。

2、二进制、数据自描述。

3、提供了完整详细的操作API。

4、高性能 比xml要快20-100倍

5、尺寸小 比xml要小3-10倍 –高可扩展性

6、数据自描述、前后兼容

适用于

1、不同的平台、系统、语言、模块之间高效的数据交互

2、用于构建大型的复杂系统,降低数据层面的耦合度和复杂度

这里要特别着重说的是protocolBuffer是一种数据协议,就像tcp/ip协议一样,只要是遵守此协议的任何系统之间都能高效的进行数据交互。

第二个特别要说的是 数据自描述。 也就是说拿到任何一个protocolBuffer的数据文件,我们不需要任何其他的辅助信息,就能顺利的解析出其中的数据信息。

这2点是最本质的。

google同时提供了一套代码生成工具,能根据用户自定义的.proto文件,生成c++/java/python的 代码,用于调用protocolBuffer的内核API . 给我们使用提供了很大的便利

.proto文件 详细请参考 官方网站 http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/overview.html

lzo介绍

LZO是一种高压缩比和解压速度极快的编码, 特点是

解压缩速度非常快。

LZO是无损压缩,压缩后的数据能准确还原

lzo是基于block分块的,允许数据被分解成chunk,能够被并行的解压

下面说一下如何,部署编译 hadoop protocolBuffer 和 lzo , 我下面提到的hadoop是基于 0.19.3版本的,需要很多额外的修改源码的工作。 如果你使用的是 hadoop-0.20+ , 就省了这些麻烦的事情了, 可以不用修改代码 直接编译。

系统环境

Linux 2.6.9-78 64位系统

安装编译

安装 lzo

下载 lzo-2.03 http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz

解压

1
2
3
4
cd

lzo-2.03/
./configure

enable-shared
make
sudo

make

install

安装成功

1
2
vi 

/etc/ld
.so.conf.d/local.conf 
#输入内容
/usr/local/lib
sudo

/sbin/ldconfig

部署 ant 和 jdk6 jdk5 和 forrest

安装apache-ant-1.7.1

解压

1
2
export

ANT_HOME=
/home/admin/yewang/apache-ant-1.7.1
export 

PATH=$PATH:
/home/admin/yewang/apache-ant-1.7.1/bin

安装jdk 6 解压到 /home/admin/yewang/jdk1.6.0_13

1
2
export

JAVA_HOME=
/home/admin/yewang/jdk1.6.0_13
export

JDK_HOME=
/home/admin/yewang/jdk1.6.0_13

安装jdk 5

1
2
3
4
5
6
7
8
9
10
wget
http:
//cds-esd

抱歉!评论已关闭.