【分布式计算】分布式日志导入工具-Flume

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 背景Flume是Apache赞助的一个分布式日志管理系统,主要功能就是把集群中每个worker产生的日志log,collect到特定的地点。为什么要写这篇文章呢,因为现在搜索出来的文献大多是老版本的flume,在flume1.X版本后,也就是flume-ng版本跟之前出现了很大的改动,市面上的很多文档都已经过时了,大家看的时候一定要注意这点,稍后我会提供几个比较新的,

背景

Flume是Apache赞助的一个分布式日志管理系统,主要功能就是把集群中每个worker产生的日志log,collect到特定的地点。

为什么要写这篇文章呢,因为现在搜索出来的文献大多是老版本的flume,在flume1.X版本后,也就是flume-ng版本跟之前出现了很大的改动,市面上的很多文档都已经过时了,大家看的时候一定要注意这点,稍后我会提供几个比较新的,有参考价值的文章。

flume的优势有一下几个方面:
* JAVA实现,跨平台性能好
* 有一定的容错机制,和防止数据保障的机制
* 提供了很多的agent
* 方便开发,有developer选项

功能

这里写图片描述
单机版是如上形式的,有三个部件组成,分别是source,channel,sink。在使用的时候,只要安装flume,然后配置好对应的conf文件,就可以了。
source:主要是配置日志文件的来源(提供多种agent,支持多种数据源)
channel:类似于一个队列,暂存收到的日志数据
sink:将日志文件输出(有很多方式,可以投影到屏幕上,也可以读到数据库或者指定的文件中)

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = avro          #avro是flume的一种type,读取本地log文件
a1.sources.r1.bind = localhost    #这个和下面的port对应于avro-client的端口
a1.sources.r1.port = 44444


# Describe the sink 
a1.sinks.k1.type = com.waqu.sink.OdpsSink #对应代码里的包名
a1.sinks.k1.sink.batchSize = 20             #需要大于10
a1.sinks.k1.sink.table = *******            #自己建的hub表以及key-id信息
a1.sinks.k1.sink.project =******* 
a1.sinks.k1.sink.odps.access_id =********** 
a1.sinks.k1.sink.odps.access_key =********** 
a1.sinks.k1.sink.odps.end_point =***********
a1.sinks.k1.sink.sink.tunnel.end_point =*******

# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.checkpointDir=1000
a1.channels.c1.dataDirs = 100


# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

下面就针对这三点,详细介绍下

Flume workflow

agent支持多种输入的source,几个比较常用的type。
*HTTP,可以监听http端口,拿log
*netcat,可以监听类似于telnet的端口数据
*Spooling ,监听某个文件目录下新增的文件
*Avro Source,发送指定文件,这个不支持实时监控,也就是说比方说我们监控a.log文件,当a.log改变了,我们无法拿到改变的日志
*Exec Source,这个可以实时监控某个文件

重点说下Exec Source,这个功能非常酷,它允许在agent上执行shell命令,这样我们就能用tail命令来监控某个文件新增的内容。

tail -f log.txt

Develop

*首先是利用官方的sdk包,开发打包jar文件
*把jar放到flume的lib文件目录下
*配置conf文件
*启动agent:flume-ng agent --conf conf --conf-file ./conf/my.conf -name a1 -Dflume.root.logger=INFO,console
*启动数据源:flume-ng avro-client -H localhost -p 44444 -F /home/garvin/log.txt -Dflume.root.logger=INFO,console

推荐几篇有用的东西:
一个代码实现的例子:https://github.com/waqulianjie/odps_sink
开发者document:http://flume.apache.org/FlumeUserGuide.html
一个比较完整的介绍:http://www.aboutyun.com/thread-8917-1-1.html

本文来自博客 “李博Garvin“
转载请标明出处:http://blog.csdn.net/buptgshengod]

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
存储 数据采集 数据处理
【Flume拓扑揭秘】掌握Flume的四大常用结构,构建强大的日志收集系统!
【8月更文挑战第24天】Apache Flume是一个强大的工具,专为大规模日志数据的收集、聚合及传输设计。其核心架构包括源(Source)、通道(Channel)与接收器(Sink)。Flume支持多样化的拓扑结构以适应不同需求,包括单层、扇入(Fan-in)、扇出(Fan-out)及复杂多层拓扑。单层拓扑简单直观,适用于单一数据流场景;扇入结构集中处理多源头数据;扇出结构则实现数据多目的地分发;复杂多层拓扑提供高度灵活性,适合多层次数据处理。通过灵活配置,Flume能够高效构建各种规模的数据收集系统。
94 0
|
16天前
|
存储 运维 数据可视化
如何为微服务实现分布式日志记录
如何为微服务实现分布式日志记录
29 1
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
50 2
|
2月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
54 1
|
3月前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
283 1
|
4月前
|
存储 分布式计算 大数据
【Flume的大数据之旅】探索Flume如何成为大数据分析的得力助手,从日志收集到实时处理一网打尽!
【8月更文挑战第24天】Apache Flume是一款高效可靠的数据收集系统,专为Hadoop环境设计。它能在数据产生端与分析/存储端间搭建桥梁,适用于日志收集、数据集成、实时处理及数据备份等多种场景。通过监控不同来源的日志文件并将数据标准化后传输至Hadoop等平台,Flume支持了性能监控、数据分析等多种需求。此外,它还能与Apache Storm或Flink等实时处理框架集成,实现数据的即时分析。下面展示了一个简单的Flume配置示例,说明如何将日志数据导入HDFS进行存储。总之,Flume凭借其灵活性和强大的集成能力,在大数据处理流程中占据了重要地位。
106 3
|
4月前
|
消息中间件 JSON 自然语言处理
Python多进程日志以及分布式日志的实现方式
python日志模块logging支持多线程,但是在多进程下写入日志文件容易出现下面的问题: PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。 也就是日志文件被占用的情况,原因是多个进程的文件handler对日志文件进行操作产生的。
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
271 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
6天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
301 3

热门文章

最新文章