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

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

Hadoop日志分析工具——White Elephant的更多相关文章

  1. 【转】gc日志分析工具

    性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析. Gc日志参数 通过在tomcat启动脚本中添加相关参数生成gc ...

  2. GC之七--gc日志分析工具

    性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析. Gc日志参数 通过在tomcat启动脚本中添加相关参数生成gc ...

  3. 日志分析工具ELK配置详解

    日志分析工具ELK配置详解 一.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分 ...

  4. GoAccess日志分析工具使用文档

    ----Sevck 2016/3/4 17:24:13 #1软件说明: GoAccess是一款开源.实时,运行在命令行终端下的web日志分析工具.该工具提供快速.多样的HTTP状态统计,可以令管理员不 ...

  5. 可视化日志分析工具Gltail的安装与使用

    可视化日志分析工具Gltail的安装与使用      GlTail.rb 是一款带有浓郁的 Geek 风格的可视化日志分析工具,它采用 Ruby 技术构建,并利用 OpenGL 图形技术进行渲染,呈现 ...

  6. 强大的日志分析工具 -- NSLogger

    转:http://www.cnblogs.com/yingkong1987/p/3329945.html 强大的日志分析工具 -- NSLogger 源码:https://github.com/fpi ...

  7. Log Parser 微软强大的日志分析工具

    Log Parser(微软网站下载)是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件.XML 文件.CSV(逗号分隔符)文件,以及操作系统的事件日志.注册表.文件系统.A ...

  8. Mysql 配置慢查询日志(SlowQueryLog)以及使用日志分析工具

    [ 查看系统关于慢查询的设置 ] mysql> show variables like '%slow%'; +---------------------------+-------------- ...

  9. 日志分析工具-ApexSQL介绍

    原文:日志分析工具-ApexSQL介绍 使用场景:业务数据异常变化,通过代码分析不出来的时候,迫不得已需要通过日志来分析 下载地址:http://www.apexsql.com/Download.as ...

随机推荐

  1. Java数据库表自动转化为PO对象

    本程序简单实现了数据库内省,生成PO对象. 数据库内省有如下两种实现方式: 通过mysql元表 通过desc table,show tables等命令 import java.io.IOExcepti ...

  2. Python 死循环和嵌套循环

    何为死循环:在编程中,一个无法靠自身的控制终止的循环被称为死循环. 死循环的使用:死循环并非一无是处,C语言中死循环while true或 while 1 是单片机编程的普遍用法,死循环一直运行等待中 ...

  3. JavaScript 设计模式之单例模式

    一.单例模式概念解读 1.单例模式概念文字解读 单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象.在Ja ...

  4. 商业规则引擎IBM WebSphere ILog JRules概述,开发基础教程

    Ilog Jrules开发基础教程有7篇,地址规则引擎Ilog Jrules开发基础教程[连载1]-- 概述篇 概述篇 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来 ...

  5. SSAS多维数据集以及维度的建立

    首先打开vs建立一个Analysis Services项目,然后点击数据源文件右键[新建数据源],根据数据源向导建立自己的数据源,如图1: 点击[确定],选择刚才的数据连接,点击[下一步]进入模拟信息 ...

  6. 《TCP/IP具体解释卷2:实现》笔记--选路请求和选路消息

    内核的各种协议并不直接使用前面提供的函数来訪问选路树,而是调用几个函数:rtalloc和rtallocl是完毕路由表查询的两个 函数:rtrequest函数用于加入和删除路由表项:另外大多数接口在接口 ...

  7. Java JNI的具体介绍

    JNI就是Java Native Interface的简称,也就是java本地接口.它提供了若干的API实现了和Java和其它语言的通信(主要是C&C++).也许不少人认为Java已经足够强大 ...

  8. java基础常见问题和eclipse常用快捷键

    一.java常用库 java.lang中 StringBuffer,StringBuilder,System,Runtime,Math java.util Date,Calendar,Random j ...

  9. Android 常见面试题

    这些面试是我之前总结的 .觉得还不错,就贴出来与大家分享一下.当中有不少问题.也是我以前被面试官问过的问题,另一些基础问题总结(既然是基础知识 ,必定是成为一名的 Android 开发者 所必须掌握的 ...

  10. PHP 如何获取二维数组中某个key的集合(高性能查找)

    分享下PHP 获取二维数组中某个key的集合的方法. 具体是这样的,如下一个二维数组,是从库中读取出来的. 代码: $user = array( 0 => array( 'id' => 1 ...