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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介:

引子:

  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核心的工作原理和处理流程,具体流程如下图所示:

 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
3月前
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
192 1
|
1月前
|
机器学习/深度学习 人工智能 运维
智能化运维:AI与大数据在IT运维中的应用探索####
本文旨在探讨人工智能(AI)与大数据分析技术如何革新传统IT运维模式,提升运维效率与服务质量。通过具体案例分析,揭示AI算法在故障预测、异常检测及自动化修复等方面的实际应用成效,同时阐述大数据如何助力实现精准运维管理,降低运营成本,提升用户体验。文章还将简要讨论实施智能化运维面临的挑战与未来发展趋势,为IT管理者提供决策参考。 ####
|
2月前
|
机器学习/深度学习 存储 大数据
云计算与大数据技术的融合应用
云计算与大数据技术的融合应用
|
3月前
|
存储 分布式计算 druid
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
81 1
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
|
3月前
|
存储 监控 安全
深入解析Sysmon日志:增强网络安全与威胁应对的关键一环
在不断演进的网络安全领域中,保持对威胁的及时了解至关重要。Sysmon日志在这方面发挥了至关重要的作用,通过提供有价值的见解,使组织能够加强其安全姿态。Windows在企业环境中是主导的操作系统,因此深入了解Windows事件日志、它们的独特特性和局限性,并通过Sysmon进行增强,变得至关重要。
ly~
|
3月前
|
供应链 搜索推荐 安全
大数据模型的应用
大数据模型在多个领域均有广泛应用。在金融领域,它可用于风险评估与预测、智能营销及反欺诈检测,助力金融机构做出更加精准的决策;在医疗领域,大数据模型能够协助疾病诊断与预测、优化医疗资源管理和加速药物研发;在交通领域,该技术有助于交通流量预测、智能交通管理和物流管理,从而提升整体交通效率;电商领域则借助大数据模型实现商品推荐、库存管理和价格优化,增强用户体验与企业效益;此外,在能源和制造业中,大数据模型的应用范围涵盖从需求预测到设备故障预测等多个方面,全面推动了行业的智能化转型与升级。
ly~
252 2
|
3月前
|
存储 分布式计算 NoSQL
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
77 0
|
3月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
83 0
|
3月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
105 0
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
87 2

推荐镜像

更多