1. 程式人生 > >Ubuntu12.04 LTS下Facebook scribe安裝過程

Ubuntu12.04 LTS下Facebook scribe安裝過程

Ubuntu12.04 LTSFacebook scribe安裝過程

  說明:scribeFacebook2008年開源的分散式日誌收集系統。現在Facebook已經不再對scribe進行維護。Scribe網上資料較少,安裝過程也比較複雜,網上很少詳細的安裝報告,而且資料大都歷史較為久遠。如果真的想要安裝scribe,請務必要耐心,結合查詢到的資料,並進行分析。

  起初,我打算使用Ubuntu 16.04 LTS來安裝scribe,但是怎麼都安裝不好在make或者make install的地方總是出錯,並且難以追蹤錯誤原因,可能是沒有向後相容的緣故。除此之外還要考慮Ubuntuthrift

之間的版本關係。最終,在經過一段時間的試錯之後,確定了安裝scribe的環境:Ubuntu 12.04 LTS + thrift-0.9.0 + scribe(版本:2.2)。以下是較為詳細的安裝過程:

1、在開始之前,首先要安裝相關的依賴包,這點非常重要。

  安裝依賴包,命令:

sudo apt-get install libevent-dev libglib2.0-dev automake libboost-dev libssl-dev

 ruby-dev python-dev collectd-dev bison flex autoconf ant git-core

  注意:可能還會需要其他的安裝包,請根據後續的編譯提示進行安裝,或者網上查詢資料,進行補充。安裝包的需要數量根據系統的執行環境有所差異,因為可能有些安裝包你之前安裝過,那麼現在就不必再重新安裝了。

  接下來在終端輸入以下命令(將thrift-0.9.0.tar.gz解壓至home目錄):

$tar -zxf thrift-0.9.0.tar.gz

$cd thrift-0.9.0

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

$ make

$ sudo make install

$ cd contrib/fb303

$ ./bootstrap.sh

$ make

$ sudo make install

3、安裝scribe

(1)安裝依賴包:

   命令:

 sudo apt-get install gawk libboost-system-dev libboost-filesystem-dev libtool

  (2)執行以下命令(仍然選擇home目錄存放scribe):

$ git clone git://github.com/facebook/scribe.git

$ cd scribe

$ ./bootstrap.sh

$./configure CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H -DBOOST_FILESYSTEM_VERSION=2"

$ make

  (3嘗試連線到scribedmake可能出錯,報錯如下:

file.cpp:(.text.startup+0x23): undefined reference to `boost::system::generic_category()'

file.cpp:(.text.startup+0x2f): undefined reference to `boost::system::generic_category()'

file.cpp:(.text.startup+0x3b): undefined reference to `boost::system::system_category()'

解決方法是將錯誤資訊前面的g++行進行修改,g++行的原始資訊如下:

g++  -Wall -O3 -L/usr/lib  -lboost_system-mt -lboost_filesystem-mt -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-mt -lboost_filesystem-mt” 移動到行的末尾), 進入src目錄,手動執行g++命令:

$ cd src

$ g++  -Wall -O3 -L/usr/lib  -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-mt -lboost_filesystem-mt

“-DBOOST_FILESYSTEM_VERSION=2”只有在你的libboost版本為1.46或者更高的時候才需要。

  (4)執行命令:

$sudo make intall

/home目錄/scribe/src目錄下生成可執行檔案:scribed.

4、scribe包在examples目錄下有一些例子可以直接根據README檔案執行,但是在執行之前還需要進行一項工作,執行以下命令:

cp -a /usr/lib/python2.7/site-packages/* /usr/lib/python2.7/dist-packages/

具體的路徑,根據自己的環境進行相應的替換。另一種方法就是在跑例子之前,配置環境變數PYTHONPATH,但是我設定之後發現執行./scribe_ctrl stop會出錯,提示:ImportError: No module named fb303_scripts

5、關於參考文獻。

文末所列參考文獻基本可以比較完美的解決scribe安裝的問題。這也是我花了很多時間進行篩選最後選定的覺得較好的參考文獻,希望能對大家有所幫助。

參考文獻