四川网站建设 四川冠辰科技,做网站先学什么,网站被k的表现,企业网站续费Flume的三大核心组件#xff1a; Source#xff1a;数据源 Channel#xff1a;临时存储数据的管道 Sink#xff1a;目的地 Source#xff1a;数据源#xff1a;通过source组件可以指定让Flume读取哪里的数据#xff0c;然后将数据传递给后面的 channel
Flume内置支持读…Flume的三大核心组件 Source数据源 Channel临时存储数据的管道 Sink目的地 Source数据源通过source组件可以指定让Flume读取哪里的数据然后将数据传递给后面的 channel
Flume内置支持读取很多种数据源基于文件、基于目录、基于TCP\UDP端口、基于HTTP、Kafka的等等、并且他也是支持自定义的
常用的数据源
1 Exec Source实现文件监控可以实时监控文件中的新增内容类似于linux中的tail -f 效果。 在这需要注意 tail -F 和 tail -f 的区别 tail -F 等同于–followname --retry根据文件名进行追踪并保持重试即该文件被删除或改后如果再次创建相同的文件名会继续追踪 1tail -f 等同于–followdescriptor根据文件描述符进行追踪当文件改名或被删除追踪停止 在实际工作中我们的日志数据一般都会通过log4j记录log4j产生的日志文件名称是固定的每天定时给文件重命名 假设默认log4j会向access.log文件中写日志每当凌晨0点的时候log4j都会对文件进行重命名在access后面添加昨天的日期然后再创建新的access.log记录当天的新增日志数据。 这个时候如果想要一直监控access.log文件中的新增日志数据的话就需要使用tail -F 2NetCat TCP/UDP Source 采集指定端口(tcp、udp)的数据可以读取流经端口的每一行数据 3Spooling Directory Source采集文件夹里新增的文件 4Kafka Source从Kafka消息队列中采集数据
其中execsource 和 kafkasource在实际工作中是最常见的可以满足大部分的数据采集需求。 Channel接受Source发出的数据可以把channel理解为一个临时存储数据的管道 Channel的类型有很多内存、文件内存文件、JDBC等
1Memory Channel使用内存作为数据的存储 优点是效率高因为就不涉及磁盘IO 缺点有两个 1可能会丢数据如果Flume的agent挂了那么channel中的数据就丢失了。 2内存是有限的会存在内存不够用的情况 2File Channel使用文件来作为数据的存储 优点是数据不会丢失 缺点是效率相对内存来说会有点慢但是这个慢并没有我们想象中的那么慢 所以这个也是比较常用的一种channel。 3Spillable Memory Channel使用内存和文件作为数据存储即先把数据存到内存中如果内存中数据达到阈值再flush到文件中 优点解决了内存不够用的问题。 缺点还是存在数据丢失的风险
Sink从Channel中读取数据并存储到指定目的地 Sink的表现形式有很多打印到控制台、HDFS、Kafka等
注意Channel中的数据直到进入目的地才会被删除当Sink写入目的地失败后可以自动重写 不会造成数据丢失这块是有一个事务保证的。
常用的sink组件有 1Logger Sink将数据作为日志处理可以选择打印到控制台或者写到文件中这个主要在测试的时候使用 2HDFS Sink将数据传输到HDFS中这个是比较常见的主要针对离线计算的场景 3Kafka Sink将数据发送到kafka消息队列中这个也是比较常见的主要针对实时计算场景数据不落盘实时传输最后使用实时计算框架直接处理。