Flume笔记二之source,channel,sink

flume AvroSource和AvroSink使用 AvroSource Avro Source是flume主要的RPC Source,能接收其他节点的Avro Sink或者用Flume SDK发来的数据, 常与Avro Sink结合作为缓冲使用。 关于Avro,这篇文章有作介绍,链接:Avro使用详解 AvroSource配置参数 配置参数 默认值 描述 type - source类型 bind - ip地址,0.0.0.0绑... 阅读详情

Flume笔记二之source,channel,sink

原创  2016年11月20日 20:10:20
  • 690
Source

rpc远程过程调用协议,客户机与服务机的调用模式需要对数据进行序列化。

         1:客户机将参数序列化并以二进制形式通过网络传输到服务器。

         2:服务器接收到后进行反序列化再调用方法获取返回值。

         3:服务器将返回值序列化后再通过网络传输给客户机。

         4:客户机接收到结果后再进行反序列化获取结果。

Avro source:

         Avro就是一种序列化形式,avrosource监听一个端口只接收avro序列化后的数据,其他类型的不接收。

         type:avrosource的类型,必须是avro。

         bind:要监听的(本机的)主机名或者ip。此监听不是过滤发送方。一台电脑不是说只有一个IP。有多网卡的电脑,对应多个IP。

         port:绑定的本地的端口。

 

Thrif source:

         和avro一样是一种数据序列化形式,Thrifsource只采集thrift数据序列化后的数据

 

Exec source:

         采集linux命令的返回结果传输给channel

         type:source的类型:必须是exec。

        command:要执行命令。

        tail  –f  若文件被删除即使重新创建同名文件也不会监听

        tail  -F  只要文件同名就可以继续监听

         以上可以用在日志文件切割时的监听

 

 

JMS Source:

        Java消息服务数据源,Java消息服务是一个与具体平台无关的API,这是支持jms规范的数据源采集;

 

Spooling Directory Source:通过文件夹里的新增的文件作为数据源的采集;

 

Kafka Source:从kafka服务中采集数据。

 

NetCat Source:绑定的端口(tcp、udp),将流经端口的每一个文本行数据作为Event输入

        type:source的类型,必须是netcat。

       bind:要监听的(本机的)主机名或者ip。此监听不是过滤发送方。一台电脑不是说只有一个IP。有多网卡的电脑,对应多个IP。

       port:绑定的本地的端口。

 

HTTP Source:监听HTTP POST和 GET产生的数据的采集

 

Chanel

         是一个数据存储池,中间通道,从source中接收数据再向sink目的地传输,如果sink写入失败会自动重写因此不会造成数据丢失。

         Memory:用内存存储,但服务器宕机会丢失数据。

                 Typechannel的类型:必须为memory

                 capacity:channel中的最大event数目

                 transactionCapacity:channel中允许事务的最大event数目

 

         File:使用文件存储数据不会丢失数据但会耗费io。

                 Typechannel的类型:必须为 file

                 checkpointDir :检查点的数据存储目录

                 dataDirs :数据的存储目录

                 transactionCapacity:channel中允许事务的最大event数目

 

         SpillableMemory Channel:内存文件综合使用,先存入内存达到阀值后flush到文件中。

                Typechannel的类型:必须为SPILLABLEMEMORY

                memoryCapacity:内存的容量event数

                overflowCapacity:数据存到文件的event阀值数

                checkpointDir:检查点的数据存储目录

                dataDirs:数据的存储目录

 

         Jdbc:使用jdbc数据源来存储数据。

         Kafka:使用kafka服务来存储数据。

 

Sink

         各种类型的目的地,接收channel写入的数据并以指定的形式表现出来。Sink有很多种类型。

                 type:sink的类型 必须是hdfs。

                 hdfs.path:hdfs的上传路径。

                 hdfs.filePrefix:hdfs文件的前缀。默认是:FlumeData

                 hdfs.rollInterval:间隔多久产生新文件,默认是:30(秒) 0表示不以时间间隔为准。

                 hdfs.rollSize:文件到达多大再产生一个新文件,默认是:1024(bytes)0表示不以文件大小为准。

                 hdfs.rollCount:event达到多大再产生一个新文件,默认是:10(个)0表示不以event数目为准。

                 hdfs.batchSize:每次往hdfs里提交多少个event,默认为100

                 hdfs.fileType:hdfs文件的格式主要包括:SequenceFile,DataStream ,CompressedStream,如果使用了CompressedStream就要设置压缩方式。

                 hdfs.codeC:压缩方式:gzip,bzip2, lzo, lzop, snappy

                 注:%{host}可以使用header的key。以及%Y%m%d来表示时间,但关于时间的表示需要在header里有timestamp这个key。

 

        Logger Sink将数据作为日志处理(根据flume中的设置的日志方式来显示)

                 要在控制台显示在运行agent的时候加入:-Dflume.root.logger=INFO,console。

                 type:sink的类型:必须是logger。

                 maxBytesToLog:打印body的最长的字节数 默认为16

 

 

        Avro Sink:数据被转换成Avro Event,然后发送到指定的服务端口上。

                 type:sink的类型:必须是 avro。

                 hostname:指定发送数据的主机名或者ip

                 port:指定发送数据的端口

实例
1:监听一个文件的增加变化,采集数据并在控制台打印。

        在这个例子中我使用exec source,memory chanel,logger sink。可以看我的agent结构图


以下是我创建的exec_source.conf

a1.sources=r1

a1.channels=c1

a1.sinks=k1

 

a1.sources.r1.type=exec 

a1.sources.r1.command=tail -F/usr/local/success.log

 

  a1.channels.c1.type=memory 

a1.channels.c1.capacity=1000

a1.channels.c1.transactioncapacity=100

 

a1.sinks.k1.type=logger

 

a1.sources.r1.channels=c1

a1.sinks.k1.channel=c1

 

执行命令:

bin/flume-ngagent --conf conf/ --conf-file conf/exec_source.conf --name a1-Dflume.root.logger=INFO,console &

 

然后更改/usr/local/success.log文件中的内容后可以看到flume采集到了文件的变化并在控制台上打印出来。文件初始内容hello和how are you,剩下的i am fine和ok为新增加内容。



2:监控一个文件变化并将其发送到另一个服务器上然后打印

这个例子可以建立在上一个例子之上,但是需要对flume的结构做一些修改,我使用avro序列化数据再发送到指定的服务器上。详情看结构图。


实际上flume可以进行多个节点关联,本例中我只使用131向139发送数据

131,139上都必须启动agent

服务器131配置

以下是我创建的exec_source_avro_sink.conf

a1.sources=r1

a1.channels=c1

a1.sinks=k1

 

a1.sources.r1.type=exec 

a1.sources.r1.command=tail -F/usr/local/success.log

 

a1.channels.c1.type=memory 

a1.channels.c1.capacity=1000

a1.channels.c1.transactioncapacity=100

 

a1.sinks.k1.type=avro

a1.sinks.k1.hostname=192.168.79.139

a1.sinks.k1.port=42424

 

a1.sources.r1.channels=c1

a1.sinks.k1.channel=c1

 

执行命令启动agent

bin/flume-ng agent --conf conf/ --conf-fileconf/exec_source_avro_sink.conf --name a1 -Dflume.root.logger=INFO,console&

 

139服务器配置

执行命令拷贝flume到139

scp -r apache-flume-1.7.0-bin/root@192.168.79.139:/usr/local/

修改exec_source_avro_sink.conf

a1.sources=r1

a1.channels=c1

a1.sinks=k1

 

a1.sources.r1.type=avro 

a1.sources.r1.bind=0.0.0.0

a1.sources.r1.port=42424

 

  a1.channels.c1.type=memory 

a1.channels.c1.capacity=1000

a1.channels.c1.transactioncapacity=100

 

a1.sinks.k1.type=logger


a1.sources.r1.channels=c1

a1.sinks.k1.channel=c1

 

执行命令启动agent

bin/flume-ng agent --conf conf/ --conf-fileconf/exec_source_avro_sink.conf --name a1 -Dflume.root.logger=INFO,console&

 

结果可以在139控制台上看到131中修改success.log的变化信息


3:avro-client实例

执行bin/flume-ng会提示有命令如下

help                     display this help text

agent                     run aFlume agent

avro-client               run anavro Flume client

version                   show Flume version info

 

avro-clinet是avro客户端,可以把本地文件以avro序列化方式序列化后发送到指定的服务器端口。本例就是将131的一个文件一次性的发送到139中并打印。

Agent结构图如下

131启动的是一个avro-client,它会建立连接,发送数据,断开连接,它只是一个客户端。

启动一个avro客户端

bin/flume-ngavro-client --conf conf/ --host 192.168.79.139 --port 42424 --filename/usr/local/success.log --headerFile /usr/local/kv.log

 

--headerFile是用来区分是哪个服务器发送的数据,kv.log中的内容会被发送到139,可以作为标识来使用。

 

139的avro_client.conf如下

a1.sources=r1

a1.channels=c1

a1.sinks=k1

 

a1.sources.r1.type=avro 

a1.sources.r1.bind=0.0.0.0

a1.sources.r1.port=42424

 

 

a1.channels.c1.type=memory 

a1.channels.c1.capacity=1000

a1.channels.c1.transactioncapacity=100

 

a1.sinks.k1.type=logger

 

a1.sources.r1.channels=c1

a1.sinks.k1.channel=c1

 

启动agent

bin/flume-ngagent --conf conf/ --conf-file conf/avro_client.conf --name a1-Dflume.root.logger=INFO,console &

 

139控制台显示如下


可以看到headers的内容headers:{hostname=192.168.79.131}


注意:

1:Flume服务没有stop命令需要通过kill来杀掉进行,可以使用jps  -m来确认是那个agent的number

[root@shb01 conf]# jps -m

3610 Jps -m

3512 Application --conf-fileconf/exec_source.conf --name a1

 

2:修改flume的配置文件后如avro_client.conf,flume会自动重启

 

3:logger sink默认只显示16个字节

 

4:flume是以event为单位进行数据传输的,其中headers是一个map容器map<string,string>

Event: { headers:{hostname=192.168.79.131}body: 31 61                                           1a }

 

5:flume支持多节点关联但是sink和source的类型要一致,比如avro-client发送数据那么接收方的source也必须是avro否则会警告。


Flume的Exec Source + Memory Channel + HDFS Sink流程 在Apache Flume中,数据收集流程由三个核心组件构成:Source(源)、Channel(通道)和Sink(汇)。您询问的“Exec + Memory + HDFS”流程指的是使用Exec Source作为数据输入源、Memory Channel作为中间缓冲区、HDFS Sink作为数据输出目标。这种组合常用于实时日志收集场景,优点是简单高效,但需注意Memory Channel的可靠性风险(如代理崩溃可能导致数据丢失)。下面我将逐步解释整个流程,并提供配置示例。tail -f tomcat.lo 阅读详情

相关推荐

告别第三方工具!用Windows自带蓝牙玩转BLE设备调试(保姆级图文教程)

本文详细介绍了如何利用Windows自带的蓝牙功能进行BLE设备调试,无需第三方工具。从硬件准备、系统配置到实战操作,提供保姆级图文教程,帮助开发者高效完成设备发现、数据交互等全流程调试工作。特别适合物联网开发者和智能硬件爱好者。

o5p6q的博客 734

flume avro java_flume之Avro Source和Avro Sink

一、Avro Souce介绍Flume主要的RPC Source是Avro SourceAvro Source被设计为高扩展的RPC服务器端,能从其他的Flume Agent的Avro Sink或者使用Flume的SDK发送数据的客户端应用,接受数据到一个Flume Agent中。Avro Source的可扩展性结合Channel担当了缓冲器的角色,使得Flume Agent能够处理重要的负载峰值...

weixin_34388311的博客 958

从零构建Carsim线控转向仿真:模型搭建、算法集成与整车联动实战

本文详细介绍了从零开始基于Carsim和Simulink搭建线控转向仿真模型的完整实战流程。内容涵盖RWA前轮执行器动力学建模与PID控制、卡尔曼滤波器估算齿条力、HWA方向盘手感模拟算法设计,以及最终实现HWA与RWA闭环联动并进行整车仿真调试。通过分步拆解,帮助读者深入理解线控转向系统的核心原理与工程实现。

weixin_29158413的博客 251

flume笔记(三)之Source、sink小知识

Exec Spooldir Taildir 的区别: Exec source :适用于监控一个实时追加的文件,但不能保证数据不丢失; Spooldir Source :能够保证数据不丢失,且能够实现断点续传,但延迟较高,不能实时监控;(适用于测试) 不要在监控目录中创建并持续修改文件 上传完成的文件会以.COMPLETED 结尾 被监控文件夹每 500 毫秒扫描一次文件变动 Taildir Source: 既能够实现断点续传,又可以保证数据不丢失,还能够进行实时监控。(适用于开发) .

weixin_44604159的博客 528

二相混合式步进电机闭环矢量控制simulink仿真(含仿真文件)

在位置跟踪伺服系统中二相混合式步进电机闭环矢量控制simulink仿真

qq_39023633的博客 2万+

刷题单向链表

实现一个数据结构,维护一张表(最初只有一个元素 11)。接下来 qq 行,每行表示一次操作,操作具体间题目描述。a[i] 里面放的是下一个元素,为0代表链表结束。如单链表1->4 -> 2->3->0用数组表示是。对于每个操作 2,输出一个数字,用换行隔开。第一行一个整数 qq 表示操作次数。

power的专栏 1714

flume基本操作——source、sink

监听Avro端口来接受外部avro客户端的事件流,和netcat不同的是,avro-source接收到的是。经过avro序列化之后的数据,然后反序列化数据继续传输,所以,如果avro-source的话,源。spool的source,当被监控的目录下有文件更新,就会将文件数据发给chanel。在/opt/apps/flume/data目录下启动spoolsource。2、在flume目录下创建data目录进入 /opt/apps/flume。在data目录下创建spoolsource.conf。

qq_51447891的博客 789

Android 13 SPRD 源码默认打开多用户实际无效果问题修复

【代码】Android 13 SPRD 源码默认打开多用户实际无效果问题修复。

m0_60898338的博客 449

Flume 核心架构深度解析:Source、Channel、Sink 的协同艺术

在上一篇文章中,我们了解了 Flume 是什么以及它能做什么。今天,让我们打开它的"引擎盖",深入探究 Flume 的内部构造。Flume 之所以能够高效、可靠地处理海量数据,得益于其精妙的三层组件架构。如果把 Flume Agent 比作一个现代化的物流中心,那么Source就是收货区,负责接收来自四面八方的货物;Channel是仓库,临时存储等待配送的货物;而Sink则是发货区,将货物准确送达目的地。这三个组件各司其职,又紧密协作,共同构建了一条稳健的数据流水线。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 2218

2026年经纬恒润嵌入式笔试试卷带答案

2026年经纬恒润嵌入式笔试试卷涵盖车规MCU选型(如TriCore)、Cortex-M启动流程、指针数组区别、AUTOSAR OS任务调度(静态优先级抢占)、CAN总线特性(终端电阻必要性)、PID控制原理、SOME/IP协议应用等核心知识点。试题聚焦汽车电子系统设计,强调功能安全与实时性要求,涵盖中断处理、Bootloader升级机制、内存布局及可靠性设计(如看门狗、ECC校验)。多选题考察通信协议分层应用,填空题强化基础概念(如MSP初始值、SOME/IP、积分项作用)。整体体现车载嵌入式开发对底层原

Open 76

手把手教你学simulink(31.17)--双向DCDC电源场景示例:基于simulink 的双向DCDC应用:车载充电器的pi控制

通过引入PI控制器,系统可以更精确地控制电压和电流,确保充电和放电过程的稳定性和高效性。

MHD0815的博客 206

Flume 核心组件深度解析:Source、Channel、Sink 的职责与协同

在上一篇文章中,我们了解了 Flume 的整体架构。今天,让我们聚焦于构成 Flume Agent 的三大核心组件——SourceChannel和Sink。它们是 Flume 这座"数据水槽"的基石,理解每个组件的职责以及它们如何协同工作,是掌握 Flume 的关键。Source就是收货区,负责接收来自四面八方的货物Channel是仓库,临时存储等待配送的货物Sink则是发货区,将货物准确送达目的地这三个组件各司其职,又紧密协作,共同构建了一条稳健的数据流水线。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 2473

高通平台 Android T 蓝牙技术全解析:A2DP 与 AVRCP 核心代码路径与交互流程

A2DP 接收端 - 连接流程(AVDTP 打开)

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 290

Flume笔记 —— 几种常见的source,channel,sink配置文件以及相关用法

目录概念与官方文档监听文件目录数据变更,输出到控制台拦截器source监听文件目录,sink输出到hdfs将hbase日志信息写入hdfssource监听netcat端口,sink写入控制台 概念与官方文档 flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。 Flume系统中核心的角色是agent,agent本身是一个Java进程,一般运行在日志收集节点。 一个agent内部有三个组件: Source:采集源,用于跟数据源对接,以获取数据; Channel:agent内部的数据传输通

一纸春秋的博客 8608

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

flume中几种常见的source、channel、sink

flume中几种source、channel、sink的区别 一、source 1、avro source 侦听Avro端口并从外部Avro客户端流接收事件。 当与另一个(上一跳)Flume代理上的内置Avro Sink配对时,它可以创建分层集合拓扑。  channels –   type – The component type na

喜上眉梢 2万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

flume 1.Agent (Source Sink Channel)

文章目录前言1. 基础架构1.1 Agent1.2 Source1.3 Sink1.4 Channel1.5 Event2.2.12.22.33.3.13.23.34.4.14.24.3 前言   Flume是一个基于流式架构的高可用、高可靠、分布式的海量日志采集、聚合和传输的系统。 1. 基础架构 1.1 Agent A Flume agent is a (JVM) process that hosts the components through which events flow from an

不是一枚开发 5万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Flume-常见source、channel、sink

常见Flume-source、channel、sink详解Flume SourcesAvro SourceExec SourceSpooling Directory SourceKafka Source Flume Sources Avro Source Listens on Avro port and receives events from external Avro client strea...

_衷愉的博客 2456

Flume中Source、Channel、Sink配置

使用Flume接收日志

sharkdoodoo 1014

Flume的source、channel,sink简单介绍及使用

Source # source-spooldir 目錄一經監聽就不能再做修改,也不能再重命名 a1.sources=r1 a1.channels=c1 a1.sinks=s1 a1.sources.r1.type=spooldir a1.sources.r1.spoolDir=/root/data/test a1.channels.c1.type=memory a1.channel...

徐磊的博客 3052

Flume之监控

Flume作为一个日志收集工具,在数据采集方面,展现出了非常强大的能力。

ZK_小小世界的专栏 1万+

Flume常用Source与Sink类型及参数

Flume常用Source与Sink类型及参数 一、Source netcat tcp source【监听端口数据】常用属性: type: netcat bind: 监听哪个主机 port: 监听哪个端口 exec source【监听单个追加文件】常用属性: type: exec command: tail -F 文件路径 batchSize: 定义每批次采集多少数据, 必须<=事务容量大小 exec source的缺点:exec的tail

weixin_42796403的博客 2974

Flume常见Source、Channel、Sink配置

整合一下Flume常见的Source、Channel、Sink的配置 --------------------------常见的Source的配置-------------------- Avro Source配置: 参数 默认值 描述 channels - 与之相连的Channel,可以配置多个。用空格隔开。在单个代理流程中,是通过channel连接sources和sinks。一...

Why Do You Run 2059

Flume常用source、channel、sink

flume source、channel、sink

l_zerol的博客 1322

Flume架构深度拆解:Source、Channel、Sink三大组件的职责边界与数据流模型

本文深入解析Flume架构中Source、Channel、Sink三大组件的核心职责与协作机制,通过实战示例展示完整数据流模型,帮助读者掌握Flume在高性能数据采集场景中的应用技巧。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3688
上一篇: 几个连接HiveServer的客户端界面工具
下一篇: Flume笔记三之Inteceptor,selector,processor
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值