热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

03Flume日志采集/构建大数据平台

数据采集是大数据应用的基础,数据源通常包括日志数据(如埋点日志,服务器日志),业务数据库,外部数据(如通过爬虫主动采集的公开数据)等。本文的主要内容:Flume简介常见的拓扑结构传

数据采集是大数据应用的基础,数据源通常包括日志数据(如埋点日志,服务器日志),业务数据库,外部数据(如通过爬虫主动采集的公开数据)等。

本文的主要内容:



  • Flume简介



  • 常见的拓扑结构



  • 传输到HDFS/Kafka





**01 Flume简介

**

Apach Flume(https://flume.apache.org/)是分布式、高可靠、高可用的海量日志采集、聚合、传输系统。Flume能将多种类型的数据源转移到中心化的数据存储,Flume可以用作实时日志的数据采集引擎。

Agent

Agent是Flume最小的运行单元,一个Agent就是一个JVM进程。它包含三个核心组件,分别是Source、 Channel、 Sink。通过这些组件, Event可以从一个地方流向另一个地方,如下图所示:

图片

图片来源于Flume官方

Event

Flume中数据传输的基本单元,由消息头和消息体组成。

Source

Source是数据的收集端,负责将数据封装到Event里,然后推入绑定的Channel中。支持avro,netcat,thrift,exec,spooldir,TAILDIR,syslog等数据源。

Channel

Channel是连接Source和Sink的组件,可以将它看做数据缓冲区(队列)。常用的Channel是MemoryChannel和FileChannel。

Sink

Sink不断地轮询Channel中的事件且批量地移除它们,但在移除之前Sink会确保这些事件成功被写入到存储或索引系统、或者被发送到另一个Flume Agent,支持HDFS,Kafka等



**02 常见的拓扑结构

**

图片



  • 每个Agent可以有多个Source、Channel、Sink

.sources =

.sinks =

.channels =



  • 利用Channel将Source、Sink进行连接

.sources.<Source1>.channels = <Channel1> <Channel2>

.sinks..channel =

.sinks..channel =

图片

1 串型模式(图片来源于Flume官方)

将多个Agent顺序(avro)串连起来,一般不建议桥接过多的Agent,会影响速度和系统的稳定性。

图片

2 聚合模式(图片来源于Flume官方)

最常见的拓扑结构,WEB应用通常分布在上百个服务器,甚至上千个、上万个服务器。每台服务器部署一个Agent,将日志统一传送到另一个Agent,再由此Agent上传到HDFS或者消息队列中。

图片

3 复制模式(图片来源于Flume官方)

分为replicating和multiplexing,replicating(默认模式)Event将被发往与Source关联的所有Channel中;multiplexing模式下,可以根据头部信息进行路由控制。



**03 传输到HDFS/Kafka

**

采集nginx日志文件(access.log)并上传HDFS和Kafka,Flume Agent组件结构如下图:

图片

nginx-hdfs-kafka.conf

# Agent a1的source,channel,sink组件定义

a1.sources = r1

a1.channels = c1 c2

_a1.sinks = s1 s2

_

_# nginx 日志文件(access.log)数据源

_

a1.sources.r1.type = TAILDIR

_a1.sources.r1.filegroups.f1 = /path/to/nginx/access.log

_

a1.sources.r1.headers.f1.headerKey1 = value1

a1.sources.r1.fileHeader = true

# s1, hdfs

a1.sinks.s1.type = hdfs

a1.sinks.s1.hdfs.path = hdfs://ip:port/nginx/%Y-%m-%d/%H-%M

# s2, kafka

a1.sinks.s2.type = org.apache.flume.sink.kafka.KafkaSink

a1.sinks.s2.kafka.topic = nginx-log

a1.sinks.s2.kafka.bootstrap.servers = ip:port

# 通过channel 关联source和sink

_a1.sources.r1.channels = c1 c2

_

a1.sinks.s1.channel = c1

a1.sinks.s2.channel = c2

Flume还支持拦截器(Source和Channel之间,对事件进行修改或者过滤),自定义Source,Sink,高可用配置等。更加详细的配置,可参考Flume官方文档:

https://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html



推荐阅读
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 本文深入探讨了 Redis 的两种持久化方式——RDB 快照和 AOF 日志。详细介绍了它们的工作原理、配置方法以及各自的优缺点,帮助读者根据具体需求选择合适的持久化方案。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 科研单位信息系统中的DevOps实践与优化
    本文探讨了某科研单位通过引入云原生平台实现DevOps开发和运维一体化,显著提升了项目交付效率和产品质量。详细介绍了如何在实际项目中应用DevOps理念,解决了传统开发模式下的诸多痛点。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文介绍了如何在 DB2 环境中创建和删除数据库编目。创建编目是连接新数据库的必要步骤,涉及获取数据库连接信息、使用命令行工具进行配置,并验证连接的有效性。删除编目则用于移除不再需要的数据库连接。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • andr ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 本文介绍如何使用Perl编写一个简单的爬虫,从丁香园网站获取意大利的新冠病毒感染情况。通过LWP::UserAgent模块模拟浏览器访问并解析网页内容,最终提取所需数据。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
author-avatar
竹叶清2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有