热门标签 | 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



推荐阅读
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • MySQL Debug 模式的实现与应用
    本文详细介绍了如何启用和使用 MySQL 的调试模式,包括编译选项、环境变量配置以及调试信息的解析。通过实际案例展示了如何利用调试模式解决客户端无法连接服务器的问题。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文详细阐述了云主机流量的概念,探讨其对网站性能和安全的关键影响,并提供了优化配置的实用建议。 ... [详细]
  • 本文深入探讨了 Exchange Server 2010 中客户端访问的代理和重定向机制,特别是在跨站点环境中如何配置这些功能以确保用户能够顺利访问邮箱服务。通过详细解析不同场景下的应用,帮助管理员更好地理解和实施相关设置。 ... [详细]
  • 在项目中使用 Redis 时,了解其不同架构模式(如单节点、主从复制、哨兵模式和集群)对于确保系统的高可用性和扩展性至关重要。本文将详细探讨这些模式的特点和应用场景。 ... [详细]
  • 本文介绍了如何通过在数据库表中增加一个字段来记录文章的访问次数,并提供了一个示例方法用于更新该字段值。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 本文详细介绍了如何正确配置Java环境变量PATH,以确保JDK安装完成后能够正常运行。文章不仅涵盖了基本的环境变量设置步骤,还提供了针对不同操作系统下的具体操作指南。 ... [详细]
  • 本文将详细介绍通过CAS(Central Authentication Service)实现单点登录的原理和步骤。CAS由耶鲁大学开发,旨在为多应用系统提供统一的身份认证服务。文中不仅涵盖了CAS的基本架构,还提供了具体的配置实例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • PC时代的传奇人物
    回顾过去几十年,个人电脑(PC)的发展历程犹如一部英雄史诗。每一位杰出人物都在这一领域留下了不可磨灭的印记,他们的贡献不仅推动了技术的进步,也深刻影响了现代社会的发展。 ... [详细]
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社区 版权所有