大数据课程D6——hadoop的Channel

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州

▲ 本章节目的

⚪ 了解Channel的作用和配置;

⚪ 掌握Channel的使用方法;

⚪ 掌握Channel的File Channel;

⚪ 掌握Channel的JDBC Channel;

⚪ 掌握Channel的Spillable Memory Channel;

一、Memory Channel

1. 概述

  1. Memory Channel将数据临时存储到内存的指定队列中。

  2. 如果不指定,则队列大小默认是100,即在队列中最多允许同时存储100条数据。如果队列被占满,那么后来的数据就会被阻塞。实际过程中,一般会将这个值调剂为10W~30W,如果数据量比较大,也可以考虑调剂为50W。

  3. Channel可以批量接收Source的数据,也可以将数据批量发送给Sink,那么默认情况下,每一批数据是100条。实际过程中,一般会将这个值调节为1000~3000,如果Channel的容量为50W,那么此时一般将批量调剂为5000。

  4. Memory Channel是将数据存储在内存中,所以不可靠,但是读写速度快,因此适应于要求速度但不要求可靠性的场景。

2. 配置属性

|---------------------|----------|
| 属性 | 解释 |
| type | memory |
| capacity | 指定的队列的容量 |
| transactionCapacity | 数据的批的量 |

3. 案例

  1. 编写格式文件,添加如下配置:

a1.sources = s1

a1.channels = c1

a1.sinks = k1

a1.sources.s1.type = netcat

a1.sources.s1.bind = hadoop01

a1.sources.s1.port = 8090

配置Memory Channel

类型必须是memory

a1.channels.c1.type = memory

指定Channel的容量

a1.channels.c1.capacity = 100000

指定Channel的批的量

a1.channels.c1.transactionCapacity = 1000

a1.sinks.k1.type = logger

a1.sources.s1.channels = c1

a1.sinks.k1.channel = c1

  1. 启动Flume:

../bin/flume-ng agent -n a1 -c ../conf -f memorychannel.conf -

Dflume.root.logger=INFO,console

二、File Channel

1. 概述

  1. File Channel将数据临时存储到本地的磁盘上。

  2. File Channel不会丢失数据,但是读写速度慢,适应于要求可靠性但是不要求速度的场景。

  3. 如果不指定,那么默认情况下,File Channel会将数据临时存储到~/.flume/file-channel/data。

  4. 为了File Channel占用过多的磁盘,那么默认情况下,允许在磁盘上最多存储100W条数据。

2. 配置属性

|----------|---------------|
| 属性 | 解释 |
| type | 必须是file |
| dataDirs | 指定在磁盘上临时存储的位置 |

3. 案例

  1. 编写格式文件,添加如下配置:

a1.sources = s1

a1.channels = c1

a1.sinks = k1

a1.sources.s1.type = netcat

a1.sources.s1.bind = hadoop01

a1.sources.s1.port = 8090

配置File Channel

类型必须是file

a1.channels.c1.type = file

指定数据在磁盘上的存储位置

a1.channels.c1.dataDirs = /home/flumedata

a1.sinks.k1.type = logger

a1.sources.s1.channels = c1

a1.sinks.k1.channel = c1

  1. 启动Flume:

../bin/flume-ng agent -n a1 -c ../conf -f filechannel.conf -

Dflume.root.logger=INFO,console

三、其他Channel

1. JDBC Channel

  1. JDBC Channel会将数据临时存储到数据库中,理论上JDBC Channel的读写速度要略高于File Channel,但是低于Memory Channel。

  2. 到目前为止,这个JDBC Channel只支持Derby数据库。基于Derby的特性(微型 - 存储的数据少,单连接 - 只允许单用户操作),所以实际过程中很少使用这个数据库,因此实际生产过程中,几乎弃用JDBC Channel。

2. Spillable Memory Channel

  1. Spillable Memory Channel会先试图将数据临时存储到内存中。如果内存队列一旦被塞满,此时这个Channel不会阻塞,而是转而将数据临时存储到磁盘上。

  2. 到目前为止,这个Channel处于实验阶段,不推荐在生产环境中使用。

相关推荐
hrrrrxeeeee几秒前
不同基础怎么报考 CAIE 认证|Level I 与 Level II 报考指南
大数据·人工智能·产品经理
Wang's Blog31 分钟前
PostgreSQL笔记28: PostgreSQL ACID 特性与实现机制深度解析
大数据·笔记·postgresql
KAIWEILIUCC1 小时前
Ray:高性能、易扩展的Python分布式计算框架
分布式·llm
湖南源点调研咨询1 小时前
湖南(源点)市场调研 服务标准化建立指南与切入方式(中篇)
大数据·产品运营·用户运营·用户体验
AI_Auto2 小时前
中小企业数字化转型指南 | 拆解中小企业数字化四大转型特征
大数据·人工智能·制造
资深低代码开发平台专家3 小时前
2026企业级AI编程平台厂推荐:行业趋势、评估维度与主流品牌对比解析
大数据·人工智能·ai编程
小白说大模型3 小时前
Spring AI 框架中集成 MCP 的完整指南:从服务端到客户端的全流程实践
大数据·数据库·人工智能·安全·spring·chatgpt·开源
一路向北finish4 小时前
《CentOS 7 搭建 Hadoop 3.3.6 分布式集群:NFS 共享方案完整实操》
linux·运维·hadoop·分布式·centos
HiDev_5 小时前
【非标自动化】2、认识元器件(液压泵和液压阀)
大数据·人工智能·自动化
ZhiMuZhiLing5 小时前
数据驱动的B2B客户画像:行业、规模、时间、地域维度解析
大数据·创业创新·流量运营