Supersonic的安装

介绍Google Supersonic——一款高性能的列存储查询引擎,适用于数据仓库项目。本文涵盖其核心特性、安装流程及依赖组件如Boost、glog、gflags等的编译指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.supersonic 简介
Google Supersonic 是谷歌最近开源的一套面向列存储数据库的查询引擎库,可作为数据仓库项目的back-end,使用C++编写。supersonic 本质上是一种基于列存储的搜索查询引擎,常用于数据仓库等大数据项目中,在多采用cache 敏感的算法、SIMD 指令和向量机制的基础上提供一系列的数据转换原语,可以充分利用现代化超流水线处理器的计算能力和计算资源,并可在单一进程中实现快速查询的操作。除了硬件上可以很好地适应流水线指令和SIMD CPU 外,supersonic 的速度提升还得益于其高效的内存分配和自定义的一些数据结构。它依靠故障处理技术,在高测试覆盖率条件下保证可靠性。并且supersonic 提供的操作原语与传统数据库一致,表达式与数据类型操作与数据结构表示也相同,故有较好的鲁棒性。
2.supersonic 安装与编译
2.1 安装包获取
supersonic 下载:
linux 命令:git clone https://code.google.com/p/supersonic/ ,
或者直接在:
http://code.google.com/p/supersonic/
下载安装包supersonic-0.9.3.tar.gz
2.2 环境
仅有Supersonic 的源码包还是不够的,它还依赖了很多别的工具,其中包括glog、gflags、protobuf、re2 以及Boost 中的CPU Timers。
2.2.1 Boost 环境搭建

由于supersonic 仅用到了Boost 的Timer,故可以只在以下网址下载Boost Timer:


http://www.boost.org/doc/libs/1_50_0/libs/timer/doc/cpu_timers.html


或者安全起见,可以选择搭建Boost 环境,过程如下:


linux 平台下要编译安装除gcc 和gcc-c++之外,还需要两个开发库:bzip2-devel 和python-devel,因此在安装前应该先保证这两个库已经安装:


#yum install gcc gcc-c++ bzip2 bzip2-devel bzip2-libs python-devel -y或者直接apt-get 上述文件。

然后下载源码包boost_1_50_0.tar.gz ,地址为:http://www.boost.org/users/download/ 。
下载完成后,进行解压:
tar xvzf boost_1_50_0.tar.gz
进入boost_1_50_0 目录:
cd boost_1_50_0
然后是编译安装,boost 源码包中有配置脚本,直接用就可以:
sh ./bootstrap.sh
显示结果为:
Building Boost.Build engine with toolset gcc... tools/build/v2/engine/bin.linuxx86_64/b2
Detecting Python version... 2.6
Detecting Python root... /usr
Unicode/ICU support for Boost.Regex?... not found.
Generating Boost.Build configuration in project-config.jam...
Bootstrapping is done. To build, run:
./b2
To adjust configuration, edit 'project-config.jam'.
Further information:
- Command line help:
./b2 --help
- Getting started guide:
http://www.boost.org/more/getting_started/unix-variants.html
- Boost.Build documentation:
http://www.boost.org/boost-build2/doc/html/index.html
接下来就是编译,重点关注是否编译成功。输入指令:
./b2
然后就是漫长的等待,如果最后出现:
The Boost C++ Libraries were successfully built!
The following directory should be added to compiler include paths:
/home/gang/BAK/boost_1_50_0
The following directory should be added to linker library paths:
/home/gang/BAK/boost_1_50_0/stage/lib
表示编译成功,如果没有成功,就需要回查看哪里出现error,再安装相应的库,
最后就是安装,输入指令:
./b2 install --prefix=/usr/local
2.2.2 glog、gflags、protobuf 与re2 的下载
可以去以下网址下载:
GLog :http://code.google.com/p/google-glog/
GFlags:http://code.google.com/p/gflags/?redir=1
Google Protobuf:http://code.google.com/p/protobuf/
Re2:http://code.google.com/p/re2/
或者采用wget 的命令执行下载。接下来将Supersonic、glog、gflags、protobuf、re2 的
源码包拷贝到同一路径下,依次执行如下步骤:
(1)解压并编译glog:
tar zxf glog-0.3.2.tar.gz
mv glog-0.3.2 glog
cd glog
./configure

make -j 16

make install

(2)解压并编译gflags:
tar zxf gflags-2.0.tar.gz
mv gflags-2.0 gflags
cd gflags
./configure

make -j 16

make install

(3)解压并编译protobuf:
tar zxf protobuf-2.4.1.tar.gz
mv protobuf-2.4.1 protobuf
cd protobuf
./configure

make -j 16

make install

(4)解压并编译re2:
tar zxf re2-20130115.tgz
mv re2-20130115 re2
cd re2

make -j 16

make install

2.3 安装supersonic
首先解压Supersonic 并进入到源码目录中:
tar zvf supersonic-0.9.3.tar.gz
mv supersonic-0.9.3.tar.gz supersonic
cd supersonic
接下来配置环境变量。首先配置glog 环境变量:
export GLOG_CFLAGS='-I../glog/src'
export GLOG_LIBS='-L../glog -lglog'
export CPPFLAGS=$CPPFLAGS' -I../glog/src'
配置gflags 环境变量:
export GFLAGS_CFLAGS='-I../gflags/src'
export GFLAGS_LIBS='-L../gflags -lgflags'
export CPPFLAGS=$CPPFLAGS' -I../gflags/src'
配置protobuf 环境变量:
export PROTO_CFLAGS='-I../protobuf/src'
export PROTO_LIBS='-L../protobuf/src -lprotobuf'
export CPPFLAGS=$CPPFLAGS' -I../protobuf/src'
export PROTOC=$(readlink -f ../protobuf/src/protoc)
配置re2 环境变量:
SO_PATH=$(readlink -f ../re2/obj/so)
export LDFLAGS=$LDFLAGS' -L../re2/obj/so -Wl,-rpath -Wl,'$SO_PATH
export CPPFLAGS=$CPPFLAGS' -I../re2'
编译Supersonic:
./configure
make -j 16

make check

make install

在编译完Supersonic 后如果看到“X tests passed”这条消息,
那么就说明Supersonic 就已经成功编译完。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值