flume
flume的原理与使用
永不落后于人
永远相信美好的事情即将发生
展开
-
Flume自定义拦截器
需求定义两个拦截器,一个用于过滤不合法数据,一个用于区分日志类型。ETL拦截器主要用于,过滤时间戳不合法和Json数据不完整的日志。日志类型区分拦截器主要用于,将启动日志和事件日志区分开来,方便发往Kafka的不同Topic。导入依赖 <dependencies> <dependency> <groupId>org.apache.flume</groupId> <artifac原创 2021-04-07 09:27:05 · 1537 阅读 · 0 评论 -
Flume面试题
你是如何实现Flume数据传输的监控的?使用第三方框架Ganglia实时监控Flume。Flume的Source,Sink,Channel的作用?你们Source是什么类型?作用(1)Source组件是专门用来收集数据的,可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy(2)Channel组件对采集到的数据进行缓存,可以存放在Memory原创 2021-02-25 15:41:24 · 113 阅读 · 0 评论 -
Flume聚合的原理与实现
原理在每个服务器部署flume采集日志,由这些flume传输数据到统一收集日志的flume节点,最后由此flume将数据写入指定位置。案例hadoop01上的Flume-1监控文件/opt/module/group.log,hadoop02上的Flume-2监控某一个端口的数据流,Flume-1与Flume-2将数据发送给hadoop03上的Flume-3,Flume-3将最终数据打印到控制台。实现# agent1# 定义sources、channels、sinksa1.sources原创 2021-02-24 15:54:13 · 251 阅读 · 0 评论 -
Flume负载均衡与故障转移原理及实现
原理负载均衡:将多个sink逻辑上分为一个sink组,sink组配合不同的SinkProcessor将数据相对均匀的分发到指定目录或者其他agent实例。故障转移:有主备agent,主agent负责数据的采集、传输、落地,备用agent一直处于监听状态,一旦主agent宕机,备用agent启动,进行主agent的工作,直到主agent恢复。案例如图所示,flume1采集数据,根据SinkProcessor的类型分发数据到不同的Sink,如果SinkProcessor的类型指定为failover,原创 2021-02-24 14:35:28 · 945 阅读 · 0 评论 -
Flume复制和多路复用原理与实现
原理复制:将相同的数据发送到不同Channel中,不同Channel中的数据分发到不同的Sink,不同的Sink再将数据发送到指定位置。多路复用:利用拦截器将不同的数据发送到不同的Channel中,不同Channel中的数据分发到不同的Sink,不同的Sink再将数据发送到指定位置。案例复制实现# agent1配置文件放在hadoop01# 定义sources、channels、sinksa1.sources = r1a1.channels = c1 c2a1.sinks = k1 k原创 2021-02-24 11:46:00 · 1078 阅读 · 0 评论 -
Flume使用之拦截器的使用
拦截器的作用为Event中的数据加上特定的headers标签内容,分发不同内容的数据到不同的Channel上。实现# 定义sources、channels、sinksa1.sources = r1a1.channels = c1a1.sinks = k1# 配置sourcea1.sources.r1.type = TAILDIR# 配置文件组a1.sources.r1.filegroups = f1 f2# 配置文件组中的文件a1.sources.r1.filegroups.f1原创 2021-02-23 18:01:50 · 434 阅读 · 0 评论 -
Flume事务工作机制
Flume中的事务有两处,分别是Source向Channel推送数据时和Sink在Channel中拉取数据时。向Channel推送数据,通过doPut将Source中的数据放在临时缓冲区putList中。提交时,检查Channel内存队列中是否有空间能够写入数据。如果能就写入,如果不能就rollback,并且向Source返回数据偏移位置,下次传输可以在此位置继续。在Channel拉取数据时,doTake先将数据存入临时缓冲区takeList中,如果提交过程中发生了异常,将takeList缓冲区中的..原创 2021-02-23 17:49:48 · 278 阅读 · 1 评论 -
Flume使用之Taildir Source监听多个追加文件
Taildir Source原理:source使用exec时,如果flume采集数据过程中发生了异常,导致agent进程结束。启动agent时,flume会从监听文件的开始位置读取文件,会造成数据的重复。为了避免这一问题,我们可以使用Taildir Source。Taildir Source在采集数据时,会记录每个监听文件的索引位置。索引位置会记录在taildir_position.json文件中。启动agent,flume会从监听文件索引位置开始采集数据。如果监听文件内容被覆盖,索引会重新记录。实现原创 2021-02-23 15:31:13 · 861 阅读 · 0 评论 -
Flume使用之监听文件夹
Flume监听文件夹的Source要指定为Spooling Directory Source。原理:当监听文件夹有文件更新时,flume会将新文件输出到指定目录。源文件会被删除或者标记.COMPLETED后缀(后缀也可自定义),代表此文件已被输出完毕,不会再进行读取。如果文件夹内出现相同名字的文件,flume会抛出异常,此agent线程结束运行。配置:# 定义sources、channels、sinksa1.sources = r1a1.channels = c1a1.sinks = k1原创 2021-02-23 14:17:04 · 1841 阅读 · 0 评论 -
Flume使用之监听单个文件内容
# 定义agent名字 a1# 定义sources、channels、sinks 都可以有多个,空格隔开a1.sources = r1a1.channels = c1a1.sinks = k1# 设置sourcea1.sources.r1.type = exec# source要执行的命令 监控的文件a1.sources.r1.command = tail -F /opt/module/flume/demo/test1.log# 设置channela1.channels.c1.ty原创 2021-02-23 13:16:30 · 472 阅读 · 0 评论 -
Flume使用之监听指定端口并打印到控制台
本案例端口监听使用的是netcat,如果使用虚拟机模拟实现,可以先执行yum -y install nc。自定义flume的配置文件,注意文件名要以.conf结尾。# 定义agent名字 a1# 定义sources、channels、sinks 都可以有多个,空格隔开a1.sources = r1a1.channels = c1a1.sinks = k1# 定义source类型a1.sources.r1.type = netcat# 绑定source地址a1.sources.r1.原创 2021-02-23 09:40:42 · 1155 阅读 · 0 评论