Flume 知识点总结
1 Flume 组成,Put 事务,Take 事务
1) flume 组成,Put 事务,Take 事务
Taildir Source:断点续传、多目录。Flume1.6 以前需要自己自定义 Source 记录每次读取文件位置,实现断点续传。
File Channel:数据存储在磁盘,宕机数据可以保存。但是传输速率慢。适合对数据传输可靠性要求高的场景,比如,金融行业。
Memory Channel:数据存储在内存中,宕机数据丢失。传输速率快。适合对数据传输可靠性要求不高的场景,比如,普通的日志数据。
Kafka Channel:减少了 Flume 的 Sink 阶段,提高了传输效率。
Source 到 Channel 是 Put 事务
Channel 到 Sink 是 Take 事务
2 Flume 拦截器
1) 拦截器注意事项
项目中自定义了:ETL 拦截器和区分类型拦截器。
采用两个拦截器的优缺点:优点,模块化开发和可移植性;缺点,性能会低一些
2) 自定义拦截器步骤
a. 实现 Interceptor
b. 重写四个方法
n initialize 初始化
n public Event intercept(Event event) 处理单个 Event
n public List<Event> intercept(List<Event> events) 处理多个 Event,在这个方法中调用 Event intercept(Event event)
n close 方法
c. 静态内部类,实现 Interceptor.Builder
3 Flume Channel 选择器
4 Flume 监控器
Ganglia 监控
加州伯克利大学千禧计划的其中一个开源项目.是一个集群汇总监控用的的软件,和 Cacti 不同,cacti 是详细监控集群中每台服务器的运行状态,而 Ganglia 是将集群中的服务器数据进行汇总然后监控。有时通过 cacti 或者 zabbix(监控软件)看不出来的集群总体负载问题,却能够在 Ganglia 中体现。被监控的主机(即 client)安装 ganglia-gmond 并启动该进程。服务器端需要安装 gmetad 和 web 程序。大致大构图如下:
参考链接:https://www.cnblogs.com/yinzhengjie/p/9798739.html
5 Flume 采集数据会丢失吗?(防止数据丢失的机制)
不会,Channel 存储可以存储在 File 中,数据传输自身有事务。
6 Flume 内存
开发中在 flume-env.sh 中设置 JVM heap 为 4G 或更高,部署在单独的服务器上(4 核 8 线程 16G 内存)
-Xmx(设定程序运行期间最大可占用的内存大小)与-Xms(设定程序启动时占用内存大小)最好设置一致,减少内存抖动带来的性能影响,如果设置不一致容易导致频繁 fullgc。
7 FileChannel 优化
通过配置 dataDirs 指向多个路径,每个路径对应不同的硬盘,增大 Flume 吞吐量。
官方说明如下:
Comma separated list of directories for storing log files. Using multiple directories on separate disks can improve file channel peformance
checkpointDir 和 backupCheckpointDir 也尽量配置在不同硬盘对应的目录中,保证 checkpoint 坏掉后,可以快速使用 backupCheckpointDir 恢复数据
版权声明: 本文为 InfoQ 作者【大数据技术指南】的原创文章。
原文链接:【http://xie.infoq.cn/article/a7bc8afaf88759039d68330da】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论