(10)消费kafka数据对应flume配置

1.项目经验之 Flume 组件选型

1 FileChannel MemoryChannel 区别
MemoryChannel 传输数据速度更快,但因为数据保存在 JVM 的堆内存中, Agent 进程
挂掉会导致数据丢失,适用于对数据质量要求不高的需求。
FileChannel 传输速度相对于 Memory 慢,但数据安全保障高, Agent 进程挂掉也可以从
失败中恢复数据。
选型:
金融类公司、对钱要求非常准确的公司通常会选择 FileChannel
传输的是普通日志信息(京东内部一天丢 100 -200 万条,这是非常正常的),通常选
MemoryChannel
2 FileChannel 优化
通过配置 dataDirs 指向多个路径 ,每个路径对应不同的硬盘,增大 Flume 吞吐量。
官方说明如下:
Comma separated list of directories for storing log files. Using
multiple directories on separate disks can improve file channel
peformance
checkpoint 坏掉后,可以快速使用 backupCheckpointDir 恢复数据
3 Sink HDFS Sink
1 HDFS 存入大量小文件,有什么影响?
元数据层面: 每个小文件都有一份元数据,其中包括文件路径,文件名,所有者,所属
组,权限,创建时间等,这些信息都保存在 Namenode 内存中。所以小文件过多,会占用
Namenode 服务器大量内存,影响 Namenode 性能和使用寿命
计算层面: 默认情况下 MR 会对每个小文件启用一个 Map 任务计算,非常影响计算性
能。同时也影响磁盘寻址时间。
2 HDFS 小文件处理
官方默认的这三个参数配置写入 HDFS 后会产生小文件, hdfs.rollInterval hdfs.rollSize
hdfs.rollCount
基于以上 hdfs.rollInterval=3600 hdfs.rollSize=134217728 hdfs.rollCount =0 几个参数综
合作用,效果如下:
1 )文件在达到 128M 时会滚动生成新文件
2 )文件创建超 3600 秒时会滚动生成新文件
2. Flume 拦截器
由于 flume 默认会用 linux 系统时间,作为输出到 HDFS 路径的时间。如果数据是 23:59
分产生的。 Flume 消费 kafka 里面的数据时,有可能已经是第二天了,那么这部门数据会被
发往第二天的 HDFS 路径。我们希望的是根据日志里面的实际时间,发往 HDFS 的路径,所
以下面拦截器作用是获取日志中的实际时间。
1 )在 com.atguigu.flume.interceptor 包下创建 TimeStampInterceptor
2 )重新打包
3 )需要先将打好的包放入到 hadoop102 /opt/module/flume/lib 文件夹下面。
[atguigu@hadoop102 lib]$ ls | grep interceptor
flume-interceptor-1.0-SNAPSHOT-jar-with-dependencies.jar
4 )分发 Flume hadoop103 hadoop104
[atguigu@hadoop102 module]$ xsync flume/
3.日志消费flume配置
1 Flume 配置分析
2 Flume 的具体配置如下:
1 )在 hadoop104 /opt/module/flume/conf 目录下创建 kafka-flume-hdfs.conf 文件
[atguigu@hadoop104 conf]$ vim kafka-flume-hdfs.conf
在文件配置如下内容
4.日志消费flume启动停止脚本
1 )在 /home/atguigu/bin 目录下创建脚本 f2.sh
[atguigu@hadoop102 bin]$ vim f2.sh
在脚本中填写如下内容
2 )增加脚本执行权限
[atguigu@hadoop102 bin]$ chmod u+x f2.sh
3 f2 集群启动脚本
[atguigu@hadoop102 module]$ f2.sh start
4 f2 集群停止脚本
[atguigu@hadoop102 module]$ f2.sh stop
5. 项目经验之 Flume 内存优化
1 )问题描述:如果启动消费 Flume 抛出如下异常
ERROR hdfs.HDFSEventSink: process failed
java.lang. OutOfMemoryError : GC overhead limit exceeded
2 )解决方案步骤:
1 )在 hadoop102 服务器的 /opt/module/flume/conf/flume-env.sh 文件中增加如下配置
export JAVA_OPTS="-Xms100m
-Xmx2000m
-
Dcom.sun.management.jmxremote"
2 )同步配置到 hadoop103 hadoop104 服务器
[atguigu@hadoop102 conf]$ xsync flume-env.sh
3 Flume 内存参数设置及优化
JVM heap 一般设置为 4G 或更高
-Xmx -Xms 最好设置一致,减少内存抖动带来的性能影响,如果设置不一致容易导致
频繁 fullgc
-Xms 表示 JVM Heap( 堆内存 ) 最小尺寸,初始分配; -Xmx 表示 JVM Heap( 堆内存 )
大允许的尺寸,按需分配。如果不设置一致,容易在初始化时,由于内存不够,频繁触发 fullgc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据开发工程师-宋权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值