概述
基于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
. /configure
enable -shared make sudo
|
安装成功
1
2
|
vi
.so.conf.d /local .conf #输入内容 sudo
|
部署 ant 和 jdk6 jdk5 和 forrest
安装apache-ant-1.7.1
解压
1
2
|
export
/home/admin/yewang/apache-ant-1 .7.1 export
/home/admin/yewang/apache-ant-1 .7.1 /bin |
安装jdk 6 解压到 /home/admin/yewang/jdk1.6.0_13
1
2
|
export
/home/admin/yewang/jdk1 .6.0_13 export
/home/admin/yewang/jdk1 .6.0_13 |
安装jdk 5
1
2
3
4
5
6
7
8
9
10
|
wget //cds-esd
|