Hadoop之Flume
Posted _TIM_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop之Flume相关的知识,希望对你有一定的参考价值。
flume简介
Flume
是Cloudera
提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的软件。Flume
的核心是把数据从数据源source
收集过来,再将收集到的数据送到指定的目的地sink
。为了保证输送的过程一定成功,在送到目的地sink
之前,会先缓存数据channel
,待数据真正到达目的地sink
后,flume
再删除自己缓存的数据
flume的采集频率是怎么设置的?
设置flume
的采集频率,有两种控制策略,第一种: 文件127.9M的时候采集一次 第二种: 两个小时滚动一次
flume的监测
flume
比较脆弱,一旦抛异常,就会停止工作,只能够手动重启,那么什么情况下flume
死掉了?如果目的地数据没有增多,或者源数据没有变少,flume
都有可能死掉了,可以写一个脚本定时执行检测,检测源数据有没有减少和目的地数据有没有增多,杀掉flume
,重新启动,也可以用failover
的机制
flume
监控文件的内容变化,将文件里面新增的数据全部收集到hdfs上面去
flume的failover机制
可以实现将我们的文件采集之后发送到下游,下游可以通过flume
的配置,实现高可用。failover
用于解决一个点挂掉导致整体不可用。但是有备用的可以顶上,用于解决容错的方案最常见的就是HA
(高可用):同一时间 只能有一个去干活
Failover Sink Processor
维护一个优先级Sink
组件列表,只要有一个Sink
组件可用,Event
就被传递到下一个组件。故障转移机制的作用是将失败的Sink
降级到一个池,在这些池中它们被分配一个冷却时间,随着故障的连续,在重试之前冷却时间增加。一旦Sink
成功发送一个事件,它将恢复到活动池。Sink
具有与之相关的优先级,数量越大,优先级越高。例如,具有优先级为100的sink
在优先级为80 的Sink
之前被激活。如果在发送事件时汇聚失败,则接下来将尝试下一个具有最高优先级的Sink
发送事件。如果没有指定优先级,则根据在配置中指定Sink
的顺序来确定优先级。
flume 负载均衡 load balance
简单来说就是一个agent
从服务器上获取数据源下沉到多个sink
,多个sink
再由多个其他的agent1
、agent2
、agent3
等来处理 然后sink
都到hdfs
flume拦截器
在source
将event
放入到channel
之前,调用拦截器对event
进行拦截和处理。Flume
有各种自带的拦截器,比如:TimestampInterceptor
、StaticInterceptor
、HostInterceptor
、RegexExtractorInterceptor
等,通过使用不同的拦截器,实现不同的功能。但是以上的这些拦截器,不能改变原有日志数据的内容或者对日志信息添加一定的处理逻辑。
自定义拦截器
点赞、评论、浏览等不同类型的日志需要发送到不同的分析系统。此时会用到Flume
拓扑结构中的Multiplexing
结构,Multiplexing
的原理是,根据event
中Header
的某个key
的值,将不同的event
发送到不同的Channel
。定义一个Interceptor
,根据event
中body
的类型,为不同类型的event
的Header
中的key
赋予不同的值。
通过自定义Flume
拦截器,过滤掉不需要的字段,并对指定字段加密处理,将源数据进行预处理。减少了数据的传输量,降低了存储的开销。
以上是关于Hadoop之Flume的主要内容,如果未能解决你的问题,请参考以下文章
Flume系列之:记录一次上游数据库产生大量数据导致flume agent数据堆积和服务器IO打满,严重影响下游任务的快速应对处理方法
打怪升级之小白的大数据之旅(七十一)<Hadoop生态:初识Flume>