大数据应用日志采集之Scribe演示实例完全解析

引子:

  Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用。它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理。它为日志的“分布式收集,统一处理”提供了一个可扩展的,高容错的方案。当中央存储系统的网络或者机器出现故障时,scribe会将日志转存到本地或者另一个位置,当中央存储系统恢复后,scribe会将转存的日志重新传输给中央存储系统。其通常与Hadoop结合使用,scribe用于向HDFS中push日志,而Hadoop通过MapReduce作业进行定期处理。

  Scribe从各种数据源上收集数据,放到一个共享队列上,然后push到后端的中央存储系统上。当中央存储系统出现故障时,scribe可以暂时把日志写到本地文件中,待中央存储系统恢复性能后,scribe把本地日志续传到中央存储系统上。需要注意的是,各个数据源须通过thrift(由于采用了thrift,客户端可以采用各种语言编写向scribe传输数据(每条数据记录包含一个category和一个message)。可以在scribe配置用于监听端口的thrift线程数(默认为3)。在后端,scribe可以将不同category的数据存放到不同目录中,以便于进行分别处理。后端的日志存储方 式可以是各种各样的store,包括file(文件),buffer(双层存储,一个主储存,一个副存储),network(另一个scribe服务 器),bucket(包含多个store,通过hash的将数据存到不同store中),null(忽略数据),thriftfile(写到一个 Thrift TFileTransport文件中)和multi(把数据同时存放到不同store中)。

  本文通过3个实例程序,分别演示scribe后端存储为file、network和buffer时的操作方法和流程,演示示例程序位于scribe/examples目录,目录结构如下所示:[hadoop@hadoop1 examples]$ ls
example1.conf         example2client.conf  hdfs_example.conf  scribe_cat
example2central.conf  hdfs_example2.conf   README             scribe_ctrl

一、Example1:file

  #step_01:创建消息文件存放目录
    mkdir /tmp/scribetest
  #step_02:启动Scribe
    src/scribed examples/example1.conf
  #step_03:发送消息到scribe
    echo "hello world" | ./scribe_cat test
  #step_04:  验证消息记录
    cat /tmp/scribetest/test/test_current
  #step_05:  检查scribe状态
    ./scribe_ctrl status
  #step_06:  查看scribe计数
    ./scribe_ctrl counters
  #step_07:  停止scribe运行
    ./scribe_ctrl stop

二、Example2:Network

  #step_01:创建工作目录
  mkdir /tmp/scribetest2
  #step_02:启动中心scribe程序,服务端口1463,记录方式为file
  src/scribed examples/example2central.conf
  #step_03:启动中心client程序,服务端口1464,存储模式为Network,写入消息到中心scribe
  src/scribed examples/example2client.conf
  #step_04:发送消息到client scribe
  echo "test message" | ./scribe_cat -h localhost:1464 test2
  echo "this message will be ignored" | ./scribe_cat -h localhost:1464 ignore_me
  echo "123:this message will be bucketed" | ./scribe_cat -h localhost:1464 bucket_me

  #step_05:验证消息被中心scribe接收和记录到文件
  cat /tmp/scribetest/test2/test2_current
  #step_06:验证消息分组,不同category的数据存放到不同目录中
  cat /tmp/scribetest/bucket*/bucket_me_current

  #step_07:状态检查消息计数检查,如果管理命令不加参数默认为1643
  ./scribe_ctrl status 1463
  ./scribe_ctrl status 1464
  ./scribe_ctrl counters 1463
  ./scribe_ctrl counters 1464  
  #step_08:关闭服务进程
  ./scribe_ctrl stop 1463
  ./scribe_ctrl stop 1464

三、Example3:buffer

  #step_01:启动中心scribe,服务端口1463
  src/scribed examples/example2central.conf
  #step_02:启动客户端scribe,服务端口1464
  src/scribed examples/example2client.conf
  #step_03:发送消息到客户端scribe
  echo "test message 1" | ./scribe_cat -h localhost:1464 test3
  #step_04:验证消息是否接受,在中心scribe消息存储目录查找
  cat /tmp/scribetest/test3/test3_current
  #step_05:停止中心scribe服务,我们期待看到结果是缓存
  ./scribe_ctrl stop 1463
  #step_06:验证中心scribe运行状态
  ./scribe_ctrl status 1463

  #step_07:发送消息到客户端-此时消息期待结果是缓存
  echo "test message 2" | ./scribe_cat -h localhost:1464 test3
  #step_08:超时客户端scribe会有报警信息
  ./scribe_ctrl status 1464
  #step_09:重启中心scribe
  src/scribed examples/example2central.conf
  #step_10:验证scribe状态
  ./scribe_ctrl status 1463
  ./scribe_ctrl status 1464

  #step_10:验证中心scribe是否接收到缓存的消息
  cat /tmp/scribetest/test3/test3_current
  #step_11:关闭服务进程
  ./scribe_ctrl stop 1463
  ./scribe_ctrl stop 1464

四、工作流程

  通过以上实例,我们可以看到scribe核心的工作原理和处理流程,具体流程如下图所示:

作者:张子良 
出处:http://www.cnblogs.com/hadoopdev 
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 
分类: 大数据

大数据应用日志采集之Scribe演示实例完全解析的更多相关文章

  1. 大数据应用日志采集之Scribe 安装配置指南

    大数据应用日志采集之Scribe 安装配置指南 大数据应用日志采集之Scribe 安装配置指南 1.概述 Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用.它 ...

  2. 大数据抓取采集框架(摘抄至http://blog.jobbole.com/46673/)

    摘抄至http://blog.jobbole.com/46673/ 随着BIG DATA大数据概念逐渐升温,如何搭建一个能够采集海量数据的架构体系摆在大家眼前.如何能够做到所见即所得的无阻拦式采集.如 ...

  3. 面试系列二:精选大数据面试真题JVM专项-附答案详细解析

    公众号(五分钟学大数据)已推出大数据面试系列文章-五分钟小面试,此系列文章将会深入研究各大厂笔面试真题,并根据笔面试题扩展相关的知识点,助力大家都能够成功入职大厂! 大数据笔面试系列文章分为两种类型: ...

  4. 大数据时代日志分析平台ELK的搭建

    A,首先说说ELK是啥,  ELK是ElasticSearch . Logstash 和 Kiabana 三个开源工具组成.Logstash是数据源,ElasticSearch是分析数据的,Kiaba ...

  5. 大数据学习——JAVA采集程序

    1 需求 从外部购买数据,数据提供方会实时将数据推送到6台FTP服务器上,我方部署6台接口采集机来对接采集数据,并上传到HDFS中 提供商在FTP上生成数据的规则是以小时为单位建立文件夹(2016-0 ...

  6. [大数据之Spark]——Transformations转换入门经典实例

    Spark相比于Mapreduce的一大优势就是提供了很多的方法,可以直接使用:另一个优势就是执行速度快,这要得益于DAG的调度,想要理解这个调度规则,还要理解函数之间的依赖关系. 本篇就着重描述下S ...

  7. [大数据之Spark]——Actions算子操作入门实例

    Actions reduce(func) Aggregate the elements of the dataset using a function func (which takes two ar ...

  8. 【原创】大数据基础之Flume(2)Sink代码解析

    flume sink核心类结构 1 核心接口Sink org.apache.flume.Sink /** * <p>Requests the sink to attempt to cons ...

  9. 入门大数据---通过Yarn搭建MapReduce和应用实例

    上一篇中我们了解了MapReduce和Yarn的基本概念,接下来带领大家搭建下Mapreduce-HA的框架. 结构图如下: 开始搭建: 一.配置环境 注:可以现在一台计算机上进行配置,然后分发给其它 ...

随机推荐

  1. Asp.net MVC + EF + Spring.Net 项目实践3

    Asp.net MVC + EF + Spring.Net 项目实践 这一篇要整合Model层和Repository层,提供一个统一的操作entity的接口层,代码下载地址(博客园上传不了10M以上的 ...

  2. SSAS系列——【08】多维数据(程序展现Cube)

    原文:SSAS系列--[08]多维数据(程序展现Cube) 1.引用DLL? 按照之前安装的MS SQLServer的步骤安装完成后,发现在新建的项目中“Add Reference”时居然找不到Mic ...

  3. 如何设置Installshield中 feature的选中状态

    原文:如何设置Installshield中 feature的选中状态 上一篇: 使用strtuts2的iterator标签循环输出二维数组之前一直有筒子问如何设置Installshield中 feat ...

  4. Javascript轮播 支持平滑和渐隐两种效果

    Javascript轮播 支持平滑和渐隐两种效果 先上两种轮播效果:渐隐和移动   效果一:渐隐 1 2 3 4 效果二:移动 1 2 3 4 接下来,我们来大致说下整个轮播的思路: 一.先来看简单的 ...

  5. selenium2入门 断言失败自动截图 (四)

    一般web应用程序出错过后,会抛出异常.这个时候能截个图下来,当然是极好的. selenium自带了截图功能. //获取截图file File scrFile= ((TakesScreenshot)d ...

  6. 设计模式之职责链模式(Chain of Responsibility)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于怎样创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  7. C#异步Socket示例

    C#异步Socket示例 概要 在C#领域或者说.net通信领域中有着众多的解决方案,WCF,HttpRequest,WebAPI,Remoting,socket等技术.这些技术都有着自己擅长的领域, ...

  8. Asterisk 未来之路3.0_0001

    原文:Asterisk 未来之路3.0_0001 第一章:电信技术革命 刚开始他们忽视你,然后他们嘲笑你,然后他们向你挑战,最后你赢了 ---Mahatma Ganhdi 在5年前,我最初规划写一本关 ...

  9. iPhone、iPad、iPadMini界面设计标准

    一个:iPhone 4.0' Display: iPhone 5.iPhone 5S.iPhone 5C. 解析度:1136 * 960 设计标准參照下图iPhone5 3.5' Display:   ...

  10. wsgi-restful-routes具体解释:

    感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正! 如有转载,请保留源作者博客信息. Better Me的博客:blog.csdn.net/tantexian 如需 ...