好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

分布式日志系统Scribe编译安装 - Linux操作系统:

分布式日志系统Scribe编译安装

 

最近准备整合多个系统的日志,因而想到构建一套分布式日志存储系统,首先考虑的是Scribe,不过编译安装耗费了很多时间(Scribe相关文档确实少了点,相比Flume)

 

环境:Ubuntu13.04 32bit

 

组件:

scribe    2.x(最新版)

fb303    thrift自带

 

至于其他所依赖的相关包(如libevent、automake、flex、bison等)可根据configure的结果进行安装或更新。

 

1、安装boost

 

官网 下载 boost,版本要求高于1.36(作者用的是1.54.0),按照文档中给出的方法编译:

    $./bootstrap.sh --help

    $./b2 install

 

至此,boost库编译完成,编译时无需指定其他选项,在--prefix参数指定的目录下生成include和lib文件夹存放头文件和库文件。

 

2、安装thrift

 

下载thrift包,安装是经典的三大步:

    $tar zxvf thrift-0.9.0.tar.gz

    $cd thrift-0.9.0/

    $sudo ./configure CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H" 

    $sudo make

    $sudo make install

 

configure时CPPFLAGS参数不可少,否则make时会产生诸如[uint_32未定义]之类错误。另外,configure时如找不到boost库,则需使用--with-boost参数指定boost库位置。thrift安装后可以进行简单的测试以确认是否安装成功。

 

 

fb303包含在thrift安装包里,直接make安装:

    $cd contrib/fb303 

    $sudo ./bootstrap.sh --with-boost=/opt/boost_1.54/lib/ 

    $sudo make 

    $sudo make install 

 

此处--with-boost即是指定boost库位置

 

4、安装scribe

 

依赖 组件 安装完毕,即可开始编译scribe:

    $./bootstrap.sh

    $sudo ./configure --with-boost=/opt/boost_1.54/lib/ --prefix=/opt/scribe

    $sudo make

    $sudo make install

 

编译时可能会产生相关错误:

1)configure若遇到如下错误

    checking whether the Boost::System library is available… yes

    checking whether the Boost::Filesystem library is available… yes

    configure: error: Could not link against  !

则需在configure时加上参数

    --with-boost-system=lboost_system 

    --with-boost-filesystem=lboost_filesystem

笔者的configure如下:

 

    sudo ./configure --prefix=/opt/scribe --with-boost=/usr/local/lib --with-boost-system=boost_system --with-boost-filesystem=boost_filesystem CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H -DBOOST_FILESYSTEM_VERSION=3"

 

2)make时若遇到:

    undefined reference to 'boost::system::generic_category()'

    undefined reference to 'boost::system::system_category()'

在确认boost::system库存在且路径正确后,检查GCC链接代码(根据make输出),笔者的如下:

g++  -Wall -O3 -L/usr/local/lib/ -lboost_system -lboost_filesystem  -o scribed store.o store_queue.o conf.o file.o conn_pool.o scribe_server.o network_dynamic_config.o dynamic_bucket_updater.o  env_default.o  -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -lfb303 -lthrift -lthriftnb -levent -lpthread  libscribe.a libdynamicbucketupdater.a

此时需将-lboost_system -lboost_filesystem两个选项放在最后,并在src目录下手动执行链接即可完成编译。

查看更多关于分布式日志系统Scribe编译安装 - Linux操作系统:的详细内容...

  阅读:44次