大数据应用日志采集之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核心的工作原理和处理流程,具体流程如下图所示:

 

时间: 2024-08-04 04:41:55

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

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

1.概述 Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用.它能从各种日志源收集日志,存储到一个中央存储系统上,便于进行集中统计分析处理.它为日志的"分布式收集,统一处理"提供了一个可扩展的,高容错的方案.scribe代码很简单,但是安装配置却很复杂,本文记录了作者实际的一次安装的过程,感觉真是不一般的琐碎,另外Scribe开源社区的版本已经是几年前的版本了,最新的维护信息一致没有看到,HDFS和Thrift的版本使用的都是比较旧的版本,考虑另

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

Actions reduce(func) Aggregate the elements of the dataset using a function func (which takes two arguments and returns one). The function should be commutative and associative so that it can be computed correctly in parallel. 这个方法会传入两个参数,计算这两个参数返回一个

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

Spark相比于Mapreduce的一大优势就是提供了很多的方法,可以直接使用:另一个优势就是执行速度快,这要得益于DAG的调度,想要理解这个调度规则,还要理解函数之间的依赖关系. 本篇就着重描述下Spark提供的Transformations方法. 依赖关系 宽依赖和窄依赖 窄依赖(narrow dependencies) 窄依赖是指父RDD仅仅被一个子RDD所使用,子RDD的每个分区依赖于常数个父分区(O(1),与数据规模无关). 输入输出一对一的算子,且结果RDD的分区结构不变.主要是ma

大数据在银行的七个应用实例

Hadoop is present in nearly every vertical today that isleveraging big data in order to analyze information and gain competitiveadvantages. Many financial organizations firms are already using Hadoopsolutions successfully and the ones who are not hav

php+ajax导入大数据时产生的问题处理_php实例

遇到的问题就从先到后的一一说吧. 问题1 按照我最初的想法,先上传文件再读取文件.这里问题就来了,当文件较大的时候上传较慢,导致客户看到的操作一直处于等待状态,不人性化. 处理办法:我是这样做的,大神有更好的办法,求介绍.我先把文件上传上去,然后把文件存到一个特定的文件夹就叫 import吧   ,然后返回一个这个文件名字.这样就确保了文件是上传成功的.并且我可以在他返回名字的这一步用js  给客户一个提示.然后就是ajax去请求php读取文件,插入数据库.可是问题来了. 问题2 当我用ajax

大数据运用在机场容量管理的实例

摘要:答案就在先进的建模技巧和对大量运营数据的分析能力的结合成果中,也就是我们所说的战略性机场容量管理(ACM)工具. 越南航空宣布将从盖特威克机场搬迁至希思罗机场运营,以便在3月份开通一条新的直飞航线.此举之所以能够实现,是因为希思罗机场新增了两个进港时隙. 众所周知,希思罗机场的新时隙非常稀缺,交易价格可以高达几百万英镑.既然希思罗机场已经是世界上最繁忙的双跑道机场,每天的机场容量几近饱和,怎么还能挤出新的时隙呢? 答案就在先进的建模技巧和对大量运营数据的分析能力的结合成果中,也就是我们所说

大数据的那些事儿

资源列表:   关系数据库管理系统(RDBMS)   框架   分布式编程   分布式文件系统   文件数据模型   Key -Map 数据模型   键-值数据模型   图形数据模型   NewSQL数据库   列式数据库   时间序列数据库   类SQL处理   数据摄取   服务编程   调度   机器学习   基准测试   安全性   系统部署   应用程序   搜索引擎与框架   MySQL的分支和演化   PostgreSQL的分支和演化   Memcached的分支和演化   嵌入式

大数据存储系统面临的挑战

随着互联网的不断扩张和云计算技术的进一步推广,海量的数据在个人.企业.研究机构等源源不断地产生.这些数据为日常生活提供了便利,信息网站可以推送用户定制的新闻,购物网站可以预先提供用户想买的物品,人们可以随时随地分享.但是如何有效.快速.可靠地存取这些日益增长的海量数据成了关键的问题.传统的存储解决方案能提供数据的可靠性和绝对的安全性,但是面对海量的数据及其各种不同的需求,传统的解决方案日益面临越来越多的问难,比如数据量的指数级增长对不断扩容的存储空间提出要求,实时分析海量的数据对存储计算能力提出

阿里巴巴大数据计算平台MaxCompute(原名ODPS)全套攻略(持续更新20171122)

  概况介绍 大数据计算服务(MaxCompute,原名ODPS,产品地址:https://www.aliyun.com/product/odps)是一种快速.完全托管的TB/PB级数据仓库解决方案.MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全.本文收录了大量的MaxCompute产品介绍.技术介绍,帮助您快速了解MaxCompute/ODPS. MaxCompute 2.0:阿里巴巴的大数