
离线批处理的咽喉——Flume基础配置简析 原创
春节不停更,此文正在参加「星光计划-春节更帖活动」
大家好,我是怀瑾握瑜,一只大数据萌新,家有两只吞金兽,嘉与嘉,上能code下能teach的全能奶爸
如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~
前言
Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。
Flume的机制决定Flume更多是用离线数据落盘的场景中,作为数据落地的第一步,说是咽喉毫不为过。而Flume的配置,也决定你收集到的数据的格式、类型、大小等等。你要根据你的业务情况或者技术选型,去决定这些。
详解
1. 核心概念
● Client:Client生产数据,运行在一个独立的线程
● Event: 一个数据单元,消息头和消息体组成。(Events可以是日志记录、 avro 对象等。)
● Flow: Event从源点到达目的点的迁移的抽象。
● Agent: 一个独立的Flume进程,包含组件Source、 Channel、 Sink。(Agent使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含
多个sources和sinks。)
● Source: 数据收集组件。(source从Client收集数据,传递给Channel)
● Channel: 中转Event的一个临时存储,保存由Source组件传递过来的Event。(Channel连接 sources 和 sinks ,这个有点像一个队列。)
● Sink: 从Channel中读取并移除Event, 将Event传递到FlowPipeline中的下一个Agent(如果有的话)(Sink从Channel收集数据,运行在一个独立线程。)
2. 配置快速使用讲解
我们这里以最常用的使用Flume接Kafka数据为例进行讲解
2.1 组件命名
Agent为f1,它的sources是s01,它的channels是c01,它的sinks是k01,如果配置为多个时用空格分隔,比如:f1.sinks=k01 k02 k03
2.2 Source配置
注意:直接从Kafka接数据时Source可以不配置
2.2.1 netcat的source:bind指定IP,port指定port
2.2.2 读文件exec:commd中写命令,如果用tail的话记得用大写的F
2.2.3 读取文件夹source:spooldir source ,tmp记得一定要忽略
2.3 Channel配置
该配置指定channel接受kafka的数据,配置上servers、topic、group_id
2.4 Sink配置
该配置为接收到的数据落Hdfs,并且配置相关参数,比较特殊的是可以指定序列化器,对于落盘的数据可以进行进一步处理,比如协议转换等。
该配置为接受数据落到hbase中,也可以指定序列化器进行转换。
2.4 channel 和source,sink的绑定
结束语
如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~
