Scribe+HDFS日誌收集系統安裝方法

1、概述

Scribe是facebook開源的日誌收集系統,可用於搜索引擎中進行大規模日誌分析處理。其通常與Hadoop結合使用,scribe用於向HDFS中push日誌,而Hadoop通過MapReduce作業進行定期處理,具體可參見日文日誌:

http://d.hatena.ne.jp/tagomoris/touch/20110202/1296621133

其安裝非常複雜,主要是因爲其依賴的包,需要設置的環境變量非常多,另外,它與Hadoop兼容不好,安裝急需要技巧。目前對於Scirbe的安裝方法,網上儘管有人介紹,但往往過於粗略,用處不大。本文比較全面的介紹了Scribe的安裝方法,方法已經得到驗證。

2、安裝前的準備

(1)Thrift依賴軟件

具體參見文章:http://wiki.apache.org/thrift/ThriftRequirements, 關於Thrift的介紹,參見我的另一篇日誌:http://dongxicheng.org/search-engine/thrift-framework-intro/

(2)Thrift

最新版本即可。

(3)Scribe

版本2.1和2.2存在問題,直接下載github的當前版本纔可用(見參考資料4)。

(4)Hadoop

Apache的所有版本(0.20.2(包括)之前)不可用,因爲它們的libhdfs與Scribe均不兼容。

Cloudera的幾乎所有版本不可用,只有CDH3 beta2(0.20.2+320)可用。需要強調的是:Cloudera的0.20.2+737和 0.20.2+320之間不可以相互通信(在此指HDFS不可相互通信),Apache 0.20.2版本和Cloudera 0.20.2之間也不可相互通信。具體錯誤參見參考資料1。

需要注意的是,我所用的機器是64位的,操作系統是Ubuntu。

3、安裝流程

(1)安裝Thrift依賴軟件

必須得安裝的是:g++, boost,autoconf,libevent,Apache ant, JDK, PHP,python

其它腳本語言根據需要安裝

(2)安裝Thirft

大體流程是:

tar -zxvf thrift-0.2.0.tar.gz

cd thrift-0.2.0

./bootstrap.sh

./configure

sudo make

sudo make install

遇到具體問題,可到google上查找,這方面資料很多。

安裝完Thirft後,記得運行一下它提供的example,看是否安裝成功。方法:在thrift源代碼目錄有一個叫tutorial的目錄,進行其中後運行thrift命令生成相應的服務代碼:

$ thrift -r –gen cpp tutorial.thrift // -r對其中include的文件也生成服務代碼 -gen是生成服務代碼的語言

運行完之後會在當前目錄看到一個gen-cpp目錄,其中就是thrfit命令生成的代碼。這時你cd到tutorial/cpp目錄,運行make,生成相應的CppServer與CppClient程式。

此時你可以分別運行CppServer和CppClient,讓它們通信。

(3)安裝Hadoop

如果你發現Hadoop中自帶的已經編譯好的libhdfs不可用(libhdfs在$HADOOOP_HOME/c++中),可自己編譯生成libhdfs,方法是,在$HADOOP_HOME下,輸入: ant compile-c++-libhdfs -Dislibhdfs=true ,同時設置Hadoop的CLASSPATH。

(4)安裝Scribe

./boottrap.sh (主要目的是生成configure, 如果出現類似於configure: error: Could not link against  !的錯誤,不要管,進行下一步好了!)

———————————

./configure –with-boost=/usr/local/boost –prefix=/usr/local/scribe –with-hadooppath=/home/dong/hadoop-0.20.2/ –enable-hdfs CPPFLAGS=”-I/opt/jdk1.6.0_21/include/ -I/opt/jdk1.6.0_21/include/linux -I/home/dong/hadoop-0.20.2/src/c++/libhdfs” LDFLAGS=”-L/opt/jdk1.6.0_21/jre/lib/amd64 -L/opt/jdk1.6.0_21/jre/lib/amd64/server -L/home/dong/hadoop-0.20.2/build/c++/Linux-amd64-64/lib -ljvm -lhdfs”

————————————————

make

———————————————–

sudo make install

安裝成功驗證方法參見參考文獻(5)。

4、可能出現的錯誤及解決方法

(1)運行boottrap.sh時,產生以下錯誤:

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

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

configure: error: Could not link against  !

當安裝的boost目錄不在默認的/usr目錄下時,用戶需要配置boost安裝目錄,如:

./configure –with-boost=/usr/local/boost –prefix=/usr/local/scribe

(2)運行examples時,產生以下錯誤:

Traceback (most recent call last):

File “examples/scribe_cat”, line 24, in <module>

from scribe import scribe

ImportError: No module named scribe

解決方法:python找不到scribe模塊,需要把scribe package包含進來,如:

export PYTHONPATH=”/usr/lib/python2.6/site-packages/”

(3)Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/ hadoop/conf/Configuration

解決方法,將Hadoop的classpath加到環境變量中,如:

export CLASSPATH=$HADOOP_HOME/hadoop-core-0.20.2+320.jar

5、參考資料

(1)介紹scribe與libhdfs的兼容性問題(日文):

http://d.hatena.ne.jp/tagomoris/touch/20110107/1294368321

(2)介紹scribe的安裝方法(日文):

http://d.hatena.ne.jp/tagomoris/touch/20110106/1294311969

(3)介紹scribe的安裝方法(英文):http://www.myhpcblog.blogspot.com/

(4)scribe下載官方主頁:https://github.com/facebook/scribe

(5)Scribe應用介紹:

http://blog.octo.com/en/scribe-a-way-to-aggregate-data-and-why-not-to-directly-fill-the-hdfs/

(6)Scribe安裝方法:http://blog.octo.com/en/scribe-installation/

(7)Hadoop的各個CDH版本下載地址:http://archive.cloudera.com/cdh/3/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章