Hadoop日志分析工具——White Elephant


White Elephant 是一個Hadoop日志收集器和展示器,它提供了用戶角度的Hadoop集群可視化。White Elephant 是全球最大的職業社交網站Linkedin開發的一套分析Hadoop作業日志的系統,完全開源。代碼在GitHub上的鏈接https://github.com/linkedin/white-elephant

不過White Elephant當前只支持hadoop1.0系列的jobhistory解析,暫時不支持hadoop2.0系列的版本。

快速入門

你可以在GitHub上的 White Elephant項目check out代碼,或者下載最新的snapshot版本。

可以使用一些測試數據嘗試這個服務:

cd server

ant

./startup.sh

然后訪問 http://localhost:3000。它可能需要幾分鍾的時間加載測試數據。 

服務端

服務端是一個JRuby的web應用,在生產環境中它可以部署到tomcat中,然后可以直接從Hadoop中讀取收集到的數據。數據存儲在 HyperSQL提供的 in-memory 類型的數據庫中,圖表由 Rickshaw提供。

開始使用

開始使用這個服務之前,首先需要設置環境:

cd server

ant

默認會做以下的事情:

  • 安裝JRuby 到 .rbenv下的本地目錄
  • 安裝RubyRuby gems到上述目錄
  • 下載JAR包
  • 在 data/usage下創建測試數據

這時候你可以通過下面的命令啟動服務:

./startup.sh

你可以訪問 http://localhost:3000,它可能需要幾分鍾的時間加載測試數據。 

這里使用trinidad在開發環境中運行JRuby 網頁應用。由於這是在開發模式,應用假設本地數據(在config.yml中指定的路徑)可以使用。

配置

     服務端的配置在config.yml中指定,你可以在sample_config.yml中查看示例。

     當通過./startup.sh 運行在開發模式中時,sample_config.yml會被使用,並且它和 local目錄下的配置一起生效。這里唯一的可配置參數是file_pattern,它指定了從本地加載數據的目錄。

     當打包成WAR並運行在生產模式下,使用hadoop下指定的配置,假設收集到的數據可用,下述配置必須指定:

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 作業

一共兩個Hadoop作業,都被一個作業執行器管理,並追蹤需要的工作。

第一個作業是Hadoop日志解析器,它從存儲在Hadoop中的文件讀日志,解析出相應的信息,並以Avro的格式寫出去。

第二個作業讀取Avro格式的日志數據,並以小時為單位聚合,數據以Avro格式寫出去,它本質上建立一共數據立方體,可以很容易的被wen應用加載到DB和查詢。

配置

示例配置存儲在 hadoop/config/jobs:

base.properties: 包括大多配置。

white-elephant-full-usage.job: 處理所有日志時被使用的作業文件。

white-elephant-incremental-usage.job: 處理增量日志時需要的作業文件。

base.properties文件包括White Elephant指定的配置,也包括Hadoop配置。所有Hadoop配置參數以hadoop-conf開頭。兩個job的配置項相同,當然其值需要根據作業配置。

Hadoop 日志

在base.properties中存在一個參數log.root。這是解析程序查找Hadoop日志的根目錄。解析作業假設日志存儲在Hadoop每天的目錄下,目錄格式如下:

    <logs.root>/<cluster-name>/daily/<yyyy>/<MMdd> 

例如,2013年1月23日的目錄格式為:

    /data/hadoop/logs/prod/daily/2013/0123 

打包

創建一個包含所有文件的zip包可以通過下述命令生成:

    ant zip -Djob.config.dir=<path-to-job-config-dir> 

job.config.dir應該包含.properties和.job文件。

如果你使用 Azkaban作為你的作業調度器,則zip文件可以工作到base.propreties中指定的配置的時間。

運行

解壓zip文件后可以運行run.sh腳本,這需要配置兩個環境變量:

  • 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 

增量作業只處理增量數據,全量作業處理所有數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM