Flume实战

2023-05-16

前言

在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态体系中都有便捷的开源框架,如图所示:
总体的开源辅助工具框架

Flume的一些简介

  • Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。
  • Flume可以采集文件,socket数据包等各种形式源数据,又可以将采集到的数据输出到 * HDFS、hbase、hive、kafka等众多外部存储系统中
  • 一般的采集需求,通过对flume的简单配置即可实现
  • Flume针对特殊场景也具备良好的自定义扩展能力,因此,flume可以适用于大部分的日常数据采集场景

flume如何搜集日志?

我们把flume比作情报人员
(1)搜集信息
(2)获取记忆信息
(3)传递报告间谍信息
flume是怎么完成上面三件事情的,三个组件:
source: 搜集信息
channel:传递信息
sink:存储信息

Flume架构

Flume基础架构,如下图:

单个agent节点的构造
这是一个flume-ng 最简单的图。flume-ng 是由一个个agent组成的。一个agent就像一个细胞一样。

Flume的多agent架构,如下图:

多个节点的构造
上面是两个agent链接在一起的,再看看更多的……

Flume的合并(合作)架构,如下图:

合并的flume的节点

你是不是觉得这种设计是不是吊炸天了,可以随意组合,跟搭积木一样。跟Storm的设计思想是差不多的,何止吊炸天啊,简直就是吊炸天 、、、

Flume的多路复用架构,如下图:

这里写图片描述

agent的构造

每个agent里都有三部分构成:source、channel和sink。
就相当于source接收数据,通过channel传输数据,sink把数据写到下一端。这就完了,就这么简单。其中source有很多种可以选择,channel有很多种可以选择,sink也同样有多种可以选择,并且都支持自定义。饿靠!太灵活了。想怎么玩就怎么玩,这你妹的!
同时,如上上图所示,agent还支持选择器,就是一个source支持多个channel和多个sink,这样就完成了数据的分发,就是这么牛逼的感觉。
这里写图片描述

基本思路我们了解了,下面就开始我们的安装吧

1、Flume的安装非常简单,只需要解压即可,当然,前提是已有hadoop环境
上传安装包到数据源所在节点上
然后解压 tar -zxvf apache-flume-1.6.0-bin.tar.gz

2、然后进入flume的目录,修改conf下的flume-env.sh,在里面配置JAVA_HOME

export JAVA_HOME=/usr/local/jdk1.7.0

修改 flume-site.xml 配置文件(貌似没有该步骤,貌似也可以修改,研究后再来弄吧!)

3、验证 flume是否安装成功

要是你的有问题,请检查flume的版本和hadoop的版本是不是对应。本教程不适合Flume-NG旧版本

[hadoop@master conf]$ ../bin/flume-ng version
Flume 1.5.0Flume 1.6.0
Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git
Revision: 2561a23240a71ba20bf288c7c2cda88f443c2080
Compiled by hshreedharan on Mon May 11 11:15:44 PDT 2015
From source with checksum b29e416802ce9ece3269d34233baf43f

出现这样的信息表示安装成功了

4、根据数据采集的需求配置采集方案,描述在配置文件中(文件名可任意自定义)
5、指定采集方案配置文件,在相应的节点上启动flume agent

下面就是我们最喜爱的Demo源码时间了

1、在/usr/local/hadoop/logs/目录下创建test.log文件夹。用shell的循环一直不停的向log文件中输入数据,模仿一个真实的日志来源,实时不断的使用flume上传文件。

while true; 
do  echo 1111111111111111111 >> /usr/local/hadoop/logs/test.log; 
sleep 0.5; 
done
然后在Flume的文件夹下创建tail-hdfs.conf采集配置信息文件。

Demo的思路就是将用shell写的循环的打入的脚本信息以我想要的规则导入HDFS:

规则:
1、打入我指定的Hdfs中/flume/lzq/%y-%m-%d/%H%M/的目录
23秒换一个目录
3、传入数据达到50重新创建目录
410分钟更换一个大目录
5、一个小目录中只能保存20个文件
6、只创建5个大目录
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

#exec 指的是命令
# Describe/configure the source
a1.sources.r1.type = exec
#F根据文件名追中, f根据文件的nodeid追中
a1.sources.r1.command = tail -F /usr/local/hadoop/logs/test.log
a1.sources.r1.channels = c1

# Describe the sink
#下沉目标
a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
#指定目录, flum帮做目的替换
a1.sinks.k1.hdfs.path = /flume/lzq/%y-%m-%d/%H%M/
#文件的命名, 前缀
a1.sinks.k1.hdfs.filePrefix = lzq-

#10 分钟就改目录
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.roundUnit = minute

#文件滚动之前的等待时间(秒)
a1.sinks.k1.hdfs.rollInterval = 3

#文件滚动的大小限制(bytes)
a1.sinks.k1.hdfs.rollSize = 50

#写入多少个event数据后滚动文件(事件个数)
a1.sinks.k1.hdfs.rollCount = 20

#5个事件就往里面写入
a1.sinks.k1.hdfs.batchSize = 5

之后我们就可以执行需要的Flume采集配置信息

bin/flume-ng agent -c conf -f conf/tail-hdfs.conf -n a1

之后就去查看HDFS的/flume/lzq有没有相应的文件

不停的刷新,一直有诶(建议用HDFS网页刷,命令行的速度承受不了我的心)
小文件图片
出去撒个尿,回来。小目录的20个文件满了,出去看,大目录也床架了诶。。。

大文件
这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flume实战 的相关文章

  • flume报错java.net.ConnectException: 拒绝连接;

    flume报错记录 java net ConnectException 拒绝连接 For more details see http wiki apache org hadoop ConnectionRefused 文章目录 具体信息解决方
  • Flume EmbeddedAgent

    flume flume 二次开发 对EmbeddedAgent的简易改造 动态控制agent 实现启动 关闭等功能 模块结构如下所示 flume parent github地址 1 用途 1 1 本地调试 对flume不是特别熟悉的开发者
  • 几十条业务线日志系统如何收集处理?

    在互联网迅猛发展的今天 各大厂发挥十八般武艺的收集用户的各种信息 甚至包括点击的位置 我们也经常发现自己刚搜完一个东西 再打开网页时每个小广告都会出现与之相关联的商品或信息 在感叹智能的同时不惊想 什么时候泄露的行踪 许多公司的业务平台每天
  • Flume系统搭建和使用的一些经验总结-搭建篇

    对于很多公司来说 日志的收集和集中管理是一个必然要经历的阶段 我们公司在经历了一拖再拖之后 终于不得不开始搭建日志收集系统了 对于日志收集系统 我们的首选就是Flume 为何这么坚决呢 难道没有其他工具能做个这个事情么 当然有 不过 考虑到
  • 大数据技术面试-Flume、kafka

    大数据技术面试 Flume kafka 1 Flume组成有哪些 2 Flume拦截器有哪些知识点 3 Flume采集数据会丢失吗 4 FileChannel如何优化 5 如何控制Kafka丢不丢数据 6 Kafka分区分配策略默认哪两种
  • 基于Flume日志收集系统架构和设计(一)

    问题导读 1 Flume NG与Scribe对比 Flume NG的优势在什么地方 2 架构设计考虑需要考虑什么问题 3 Agent死机该如何解决 4 Collector死机是否会有影响 5 Flume NG可靠性 reliability
  • JConsole&VisualVM监控总结

    简介 JConsole 以下写作jconsole VisualVM 以下写作jvisualvm 都是比较好的JVM调优工具 且都为JDK自带 可在命令行直接启动 监控示例 Server端 需要监控的主机 配置 设置临时JAVA参数 expo
  • Flink Table API 与 Flink SQL 实现Kafka To Kafka 版本1.12

    Table API版本 0 前提 1 创建流和表执行环境 2 连接Source并创建Table 3 筛选Table对象中的数据 4 连接Sink并创建临时表 5 将Table对象写入临时表 测试 杠精打住 SQL 版本 最近有铁汁问我 一闪
  • hadoop学习——flume的简单介绍

    flume介绍 概述 Flume最早是Cloudera提供的日志收集系统 后贡献给Apache 所以目前是Apache下的项目 Flume支持在日志系统中定制各类数据发送方 用于收集数据 Flume是一个高可用的 高可靠的 鲁棒性 robu
  • 自定义flume拦截器-实现了多种功能

    1 自定义拦截器实现说明 1 实现interceptor接口 并实现其方法 接口完全限定名为 org apache flume interceptor Interceptor 2 自定义拦截器内部添加静态内部类 实现Builder接口 并实
  • 大数据组件-Flume集群环境的启动与验证

    大数据学习记录篇 持续更新中 个人主页 beixi 本文章收录于专栏 点击传送 大数据学习 持续更新中 感谢各位前辈朋友们支持学习 上一篇文章写到了Flume集群环境的安装 这篇文章接着上篇文章延伸Flume集群环境的启动与验证 如果Flu
  • Flume之:二、企业开发案例

    Flume之 二 企业开发案例 文章目录 Flume之 二 企业开发案例 三 企业开发案例 1 监控端口数据官方案例 2 实时读取本地文件到HDFS案例 3 实时读取目录文件到HDFS案例 4 flume监控Kafka gt Spark知识
  • 如何在flume中同时使用regex_extractor选择器和多路复用拦截器?

    我正在测试 Flume 将数据加载到 hHase 中 并考虑使用 Flume 的选择器和拦截器进行并行数据加载 因为源和接收器之间的速度差距 所以 我想要用 Flume 做的是 使用拦截器 regexp extract 类型创建事件标头 使
  • Flume HDFS Sink 在 HDFS 上生成大量小文件

    我有一个使用 Flume 向 HDFS 发送 log4j 消息的玩具设置 我无法配置 hdfs 接收器以避免出现许多小文件 我以为我可以配置 hdfs 接收器在每次文件大小达到 10mb 时创建一个新文件 但它仍然创建大约 1 5KB 的文
  • 2023_Spark_实验二十九:Flume配置KafkaSink

    实验目的 掌握Flume采集数据发送到Kafka的方法 实验方法 通过配置Flume的KafkaSink采集数据到Kafka中 实验步骤 一 明确日志采集方式 一般Flume采集日志source有两种方式 1 Exec类型的Source 可
  • 在接收器发生故障后,如何强制 Flume-NG 处理积压的事件?

    我正在尝试设置 Flume NG 从一组服务器 主要运行 Tomcat 实例和 Apache Httpd 收集各种日志 并将它们转储到 5 节点 Hadoop 集群上的 HDFS 中 设置如下所示 每个应用程序服务器将相关日志跟踪到一个执行
  • 由于 JAR 冲突,无法运行 Flume

    我已经手动安装了 Flume 和 Hadoop 我的意思是 不是 CDH 并且我正在尝试运行 twitterexample https github com cloudera cdh twitter example来自Cloudera In
  • 使用具有正斜杠的密钥连接到 s3 接收器时出现无效主机名错误

    我有一个forward slash在 aws 密钥中 当我尝试连接到 s3 接收器时 Caused by java lang IllegalArgumentException Invalid hostname in URI s3 xxxx
  • 是否可以将 Flume 标头写入 HDFS 接收器并删除主体?

    text with headers 序列化器 HDFS 接收器序列化器 允许保存 Flume 事件标头而不是丢弃它们 输出格式由标头 后跟空格和正文有效负载组成 我们想删除正文并仅保留标题 对于 HBase 接收器 RegexHbaseEv
  • 为 Flume-ng 编写自定义 HTTPSource 处理程序

    是否有任何资源可以帮助我为 Flume ng 的 HTTPSource 编写自定义处理程序 我阅读了文档 其中有一个 Json 示例处理程序 但我想知道是否有人需要编写一个处理程序来从 XML 消息正文创建 Flume 事件 HttpSou

随机推荐