Hadoop日志分析工具:White Elephant
代碼在GitHub上的鏈接https://github.com/linkedin/white-elephant。
快速入門
你可以在GitHub上的 White Elephant項目check out代碼,或者下載***的snapshot版本。
可以使用一些測試數(shù)據(jù)嘗試這個服務(wù):
- cd server
- ant
- ./startup.sh
然后訪問 http://localhost:3000。它可能需要幾分鐘的時間加載測試數(shù)據(jù)。
服務(wù)端
服務(wù)端是一個JRuby的web應(yīng)用,在生產(chǎn)環(huán)境中它可以部署到tomcat中,然后可以直接從Hadoop中讀取收集到的數(shù)據(jù)。數(shù)據(jù)存儲在 HyperSQL提供的 in-memory 類型的數(shù)據(jù)庫中,圖表由 Rickshaw提供。
開始使用
開始使用這個服務(wù)之前,首先需要設(shè)置環(huán)境:
- cd server
- ant
默認(rèn)會做以下的事情:
-
安裝JRuby 到 .rbenv下的本地目錄
-
安裝RubyRuby gems到上述目錄
-
下載JAR包
-
在 data/usage下創(chuàng)建測試數(shù)據(jù)
這時候你可以通過下面的命令啟動服務(wù):
./startup.sh
你可以訪問 http://localhost:3000,它可能需要幾分鐘的時間加載測試數(shù)據(jù)。
這里使用trinidad在開發(fā)環(huán)境中運行JRuby 網(wǎng)頁應(yīng)用。由于這是在開發(fā)模式,應(yīng)用假設(shè)本地數(shù)據(jù)(在config.yml中指定的路徑)可以使用。
配置
服務(wù)端的配置在config.yml中指定,你可以在sample_config.yml中查看示例。
當(dāng)通過./startup.sh 運行在開發(fā)模式中時,sample_config.yml會被使用,并且它和 local目錄下的配置一起生效。這里唯一的可配置參數(shù)是file_pattern,它指定了從本地加載數(shù)據(jù)的目錄。
當(dāng)打包成WAR并運行在生產(chǎn)模式下,使用hadoop下指定的配置,假設(shè)收集到的數(shù)據(jù)可用,下述配置必須指定:
file_pattern: 從Hadoop加載使用文件的全局的文件模式。
libs: 包含Hadoop JAR文件的目錄 (加到classpath)。
conf_dir: 包含Hadoop配置的目錄(加到 classpath)。
principal: 用戶名用于訪問安全的Hadop。
keytab: keytab 文件的路徑,用于訪問安全的Hadoop 。
White Elephant并不基于某個特定版本的Hadoop,所以JARs并不會打包到WAR包中。因此配置中必須指定到Hadoop JARs的路徑。
部署
編譯一個可以部署到tomcat的WAR文件:
- ant war -Dconfig.path=<path-to-config>
你指定的配置文件config.yml將一起打包到WAR文件中。
Hadoop日志上傳
hadoop/scripts/statsupload.pl腳本可以用于上傳Hadoop日志文件到HDFS,主要就可以被處理了。
Hadoop 作業(yè)
一共兩個Hadoop作業(yè),都被一個作業(yè)執(zhí)行器管理,并追蹤需要的工作。
***個作業(yè)是Hadoop日志解析器,它從存儲在Hadoop中的文件讀日志,解析出相應(yīng)的信息,并以Avro的格式寫出去。
第二個作業(yè)讀取Avro格式的日志數(shù)據(jù),并以小時為單位聚合,數(shù)據(jù)以Avro格式寫出去,它本質(zhì)上建立一共數(shù)據(jù)立方體,可以很容易的被wen應(yīng)用加載到DB和查詢。
配置
示例配置存儲在 hadoop/config/jobs:
base.properties: 包括大多配置。
white-elephant-full-usage.job: 處理所有日志時被使用的作業(yè)文件。
white-elephant-incremental-usage.job: 處理增量日志時需要的作業(yè)文件。
base.properties文件包括White Elephant指定的配置,也包括Hadoop配置。所有Hadoop配置參數(shù)以hadoop-conf開頭。兩個job的配置項相同,當(dāng)然其值需要根據(jù)作業(yè)配置。
Hadoop 日志
在base.properties中存在一個參數(shù)log.root。這是解析程序查找Hadoop日志的根目錄。解析作業(yè)假設(shè)日志存儲在Hadoop每天的目錄下,目錄格式如下:
- <logs.root>/<cluster-name>/daily/<yyyy>/<MMdd>
例如,2013年1月23日的目錄格式為:
- /data/hadoop/logs/prod/daily/2013/0123
打包
創(chuàng)建一個包含所有文件的zip包可以通過下述命令生成:
ant zip -Djob.config.dir=<path-to-job-config-dir>
job.config.dir應(yīng)該包含.properties和.job文件。
如果你使用 Azkaban作為你的作業(yè)調(diào)度器,則zip文件可以工作到base.propreties中指定的配置的時間。
運行
解壓zip文件后可以運行run.sh腳本,這需要配置兩個環(huán)境變量:
-
HADOOP_CONF_DIR: Hadoop configuration directory
-
HADOOP_LIB_DIR: Hadoop JARs directory
運行全量job:
- ./run.sh white-elephant-full-usage.job
運行增量job:
- ./run.sh white-elephant-incremental-usage.job
增量作業(yè)只處理增量數(shù)據(jù),全量作業(yè)處理所有數(shù)據(jù)。
原文鏈接:http://www.cnblogs.com/shenh062326/p/3544868.html