Hadoop日志分析工具:White Elephant

数据库 Hadoop
White Elephant 是一个Hadoop日志收集器和展示器,它提供了用户角度的Hadoop集群可视化。White Elephant 是全球最大的职业社交网站Linkedin开发的一套分析Hadoop作业日志的系统,完全开源。

代码在GitHub上的链接https://github.com/linkedin/white-elephant

快速入门

你可以在GitHub上的 White Elephant项目check out代码,或者下载***的snapshot版本。

可以使用一些测试数据尝试这个服务:

 

  1. cd server 
  2. ant 
  3. ./startup.sh 

 

然后访问 http://localhost:3000。它可能需要几分钟的时间加载测试数据。 

服务端

服务端是一个JRuby的web应用,在生产环境中它可以部署到tomcat中,然后可以直接从Hadoop中读取收集到的数据。数据存储在 HyperSQL提供的 in-memory 类型的数据库中,图表由 Rickshaw提供。

开始使用

开始使用这个服务之前,首先需要设置环境:

 

  1. cd server 
  2. 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文件:

 

  1. 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每天的目录下,目录格式如下:

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

例如,2013年1月23日的目录格式为:

  1. /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:

  1. ./run.sh white-elephant-full-usage.job 

运行增量job:

  1. ./run.sh white-elephant-incremental-usage.job 

增量作业只处理增量数据,全量作业处理所有数据。

原文链接:http://www.cnblogs.com/shenh062326/p/3544868.html

责任编辑:彭凡 来源: 博客园
相关推荐

2013-07-19 09:47:57

White ElephHadoopLinkedIn

2016-04-18 10:45:22

Dr. ElephanHadoop性能监控

2017-09-14 10:45:47

PostgreSQL日志分析pgBadger

2013-11-01 10:43:35

日志分析Awstats实战Apache

2013-09-11 09:36:02

VMwareLog Insight

2019-04-22 15:40:33

2013-12-17 09:52:13

pythonhadoopmapreduce

2010-09-14 10:46:59

2020-08-04 10:07:47

Web日志安全分析工具漏洞

2013-10-31 16:17:45

日志分析Awstats实战Nginx

2013-10-31 11:08:15

2020-05-26 16:25:33

Hadoop下载安装

2019-03-20 13:44:30

Web 开发代码

2021-10-25 14:40:43

Web工具Linux

2022-02-18 15:19:52

日志收集工具开源

2018-06-05 12:06:20

Hadoop开源工具

2013-04-26 10:10:52

2015-06-29 13:13:58

数据中心数据中心管理日志分析

2014-01-07 13:54:40

Hadoop日志

2017-02-14 08:36:56

点赞
收藏

51CTO技术栈公众号