flume ChannelSelector -- channel 选择器
首先是flume中三个组件的单词的意思,flume:水道;笕槽;引水槽,source:水源,channel:水渠,sink:水槽。见文知意,就是水从源头流出来,经过水渠或者管道,最终流到终点,也就是水槽了。之前总是flume的叫着,也不知道是啥意思,今天查了一下,再看其他几个组件的意思,这个工具的功能不言而喻了,就是针对像水一样的数据流处理的。
flume channel selectors允许给一个source可以配置多个channel的能力。这种模式有两种方式,一种是用来复制(Replication),这也是默认配置,另一种是用来分流(Multiplexing)。
Flume中channel选择器(selector.type配置)必须实现ChannelSelector接口,实现了该接口的类主要作用是告诉Source中接收到的Event应该发送到哪些Channel,在Flume中主要由两个实现方式:
1,复用,实现类:MultiplexingChannelSelector (Multiplexing n. 多路技术 多路复用)
2,复制,实现类:ReplicatingChannelSelector (Replicate n. 复制品)
如果没有手动配置,source的默认channel选择器类型是replicating(复制),当然这个选择器只针对source配置了多个channel的时候。
一个souce可以向多个channel同时写数据,所以也就产生了以何种方式向多个channel写的问题(比如自带的复制选择器,会把数据完整地发送到每一个channel,而多路分发选择器就可以通过配置来按照一定的规则进行分发,听起来很像负载均衡),channel选择器也就应运而生。
复制选择器 (默认)
a1.sources = r1
a1.channels = c1 c2 c3a1.sources.r1.selector.type = replicating
a1.sources.r1.channels = c1 c2 c3
#这意味着c3是可选的,向c3写入失败会被忽略。但是向c1,c2写入失败会出错
a1.sources.r1.selector.optional = c3
上面这个例子中没有声明sink,c3配置成了可选的。向c3发送数据如果失败了会被忽略。c1和c2没有配置成可选的,向c1和c2写数据失败会导致事务失败回滚。
多路复用选择器
a1.sources = r1
a1.channels = c1 c2 c3 c4a1.sources.r1.selector.type = multiplexing
#以每个event的header中的state这个属性的值作为选择channel的依据
a1.sources.r1.selector.header = state
#如果state=CZ,则选择c1这个channel
a1.sources.r1.selector.mapping.CZ = c1
#如果state=US,则选择c2 和 c3 这两个channel
a1.sources.r1.selector.mapping.US = c2 c3
#默认使用c4这个channel
a1.sources.r1.selector.default = c4
选择器会对每个event的header里面的state属性值进行匹配,如果state=CZ就把event发给c1,如果state=US就把event发给c2和c3,其余的发给默认的c4。
自定义选择器
自定义选择器就是你可以自己写一个org.apache.flume.ChannelSelector接口的实现类。老规矩,你自己写的实现类以及依赖的jar包在启动时候都必须放入Flume的classpath。
a1.sources = r1
a1.channels = c1a1.sources.r1.selector.type = com.lxk.flume.custom.BalanceChannelSelector
要自定义自己的channel 选择器,比如上面的负载均衡的channel选择器,因为上面系统提供的2个原生的选择器要么全复制,要么选择性的改变数据流向,现在想增加channel数量,缓解压力,数据就需要均衡的发布到声明的n个channel里面去。要自定义,就得了解这个选择器的实现。channel 是在 agent 上暂存 event 的缓冲池。 event由source添加,由sink消费后删除。
flume ChannelSelector -- channel 选择器相关推荐
- Flume的Channel
一.Memory Channel 事件将被存储在内存中(指定大小的队列里) 非常适合那些需要高吞吐量且允许数据丢失的场景下 属性说明: 二.JDBC Channel 事件会被持久化(存储)到可靠的数据 ...
- 大数据Hadoop、Hive、Kafka、Hbase、Spark等框架面经
大数据组件 学习路线: 阶段1:学习绿色箭头的知识点: 阶段2:学习红色箭头的知识点: 阶段3:学习蓝色箭头的知识点: 1 Hadoop 1.1 Hadoop1.x与Hadoop2.x的区别 1.2 ...
- 大数据——Flume组件Source、Channel和Sink具体使用
Flume组件Source.Channel和Sink使用说明 Flume Sources Avro Source 配置范例 Thrift Source 配置范例 Exec Source 配置范例 JM ...
- Flume四:多路复用(ChannelSelector之Multiplexing)+自定义拦截器
案例: 自定义拦截器 pom.xml <dependency><groupId>org.apache.flume</groupId><artifactId&g ...
- Flume 1.9.0用户指南
概述 系统要求 架构 数据流模型 复杂的流程 可靠性 可恢复性 设置 设置 agent 配置单个组件 将各个部分连接在一起 启动 agent 一个简单的例子 在配置文件中使用环境变量 记录原始数据 基 ...
- 大数据技术之 Flume
为什么选用Flume Python爬虫数据 Java后台日志数据 服务器本地磁盘 文件夹 HDFS Flume Flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS. 网络端 ...
- 大数据学习——Flume入门
文章目录 一.Flume概述 1.1.Flume定义 1.2.Flume基础架构 二.Flume快速入门 2.1.安装Flume部署 2.2.入门案例 2.2.1.监控端口数据(官方案例) 2.2.2 ...
- Flume原理和使用
Flume原理和使用 1.定义 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统. Flume基于流式架构,灵活简单. 2.基础架构 2.1 Agent ...
- Flume知识点全面总结教程
目录 1.前言 1.1什么是flume? 1.2Flume特性 2.Flume核心概念 2.1agent 2.2Event:flume内部数据传输的封装形式 2.3Transaction:事务控制机 ...
最新文章
- vue导航栏跳转路由
- 机器视觉:图像与视频朝向检测
- 增强型的for循环linkedlist_LinkedList的复习
- 【2019CSP-J 普及组题解】数字游戏(number),公交换乘(transfer),纪念品(souvenir),加工领奖(work) CSP普及游记
- Vue表格中,对数据进行转换、处理
- 外设驱动库开发笔记23:AT24Cxx外部存储器驱动
- oracle inside(4)
- 好用的markdown编辑工具Ulysses 25 for Mac
- 论文阅读笔记(十四)——基于大比例圈养大熊猫图像的大熊猫识别研究
- 配置zabbix当内存剩余不足10%的时候触发报警
- SQL数据库修复/数据库置疑修复
- IP地址自动切换脚本
- 资源 | 11个免费矢量免抠素材网站
- python/Matplotlib绘制复变函数图像
- 日本“性爱机器人”上线1小时被抢空
- Web 面试之 HTTP和浏览器
- java性能调优指南,就是这么简单
- 大家能不能在百忙之中 想想鸟姐的话
- ESP32远程OTA指令升级bin固件
- 四十七、使用bootstrap中的选项卡制作产品特色页面