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

简介: 引子:   Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用。它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理。

引子:

  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
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
存储 关系型数据库 MySQL
用户案例合集 | 物联网平台的时序数据处理难点与优化实践
本文汇总了四个典型的物联网平台的实践经验,把它们曾面临的数据难题以及解决思路分享给大家。
95 0
|
7月前
|
存储 数据处理 数据库
TDengine 用户案例合集 | 智能环保项目的时序数据处理难点与优化实践
本篇文章汇总了三个典型的智能环保项目的数据架构升级实践,给有需要的企业参考。
167 1
|
4月前
|
消息中间件 大数据 Apache
【云计算与大数据技术】流计算讲解及集群日志文件实时分析实战(附源码)
【云计算与大数据技术】流计算讲解及集群日志文件实时分析实战(附源码)
47 1
|
存储 分布式计算 Hadoop
OushuDB 小课堂丨实时分析:示例和优势
OushuDB 小课堂丨实时分析:示例和优势
43 0
|
数据采集 存储 消息中间件
谈谈大数据采集和常见问题
谈谈大数据采集和常见问题
384 0
|
分布式计算 运维 监控
MaxCompute日常工作及实践扩展|阿里云产品内容精选(三十二)
本文内容取自开发者社区阿里巴巴大数据计算技术圈,为大家提供相关技术思考。
|
SQL 小程序 搜索推荐
大数据Flink最佳实践|阿里云产品内容精选(二十五)
本文内容取自开发者社区大数据版块。
|
监控 SQL Java
案例速览 | 如何为3~12岁孩子提供全方面监控能力?
通过阿里自研的 ARMS 应用实时监控工具,既满足无侵入的接入方式和低损耗的资源占用比例,还提供了全方位的应用监控能力和白屏化的配置使用能力,而且 ARMS 结合众多客户场景和专家经验,提供智能诊断功能。
1005 1
案例速览 | 如何为3~12岁孩子提供全方面监控能力?
Hadoop大数据平台环境搭建注意事项,波若分布式数据采集工具功能剖析,数道云
Hadoop大数据作为时代发展的产物,影响着互联网企业发展、以及企业关于品牌形象推广、政府有关民意采集、以及有关数据信息收集分类……………… Hadoop技术的发展,带来了海量数据高效处理的能力,也给互联网政企、高校的发展带来了突破性的发展。
951 0
|
存储 分布式计算 大数据
数据进入Maxcompute的N种方式,大数据实战Demo系统数据上云实践
2018 “MaxCompute开发者交流”钉钉群直播分享,由阿里云数据技术专家彬甫带来以“数据进入MaxCompute的N种方式”为题的演讲。本文讲述了在阿里云内部开发了一个实战Demo系统,它能够实现自动全链路的大数据处理流程,其中包括离线的和实时数据的,接下来将为大家揭晓实战Demo系统是怎样实现自动全链路的大数据处理流程的。
5478 0