起因
上篇博客中,我们提到了对flume的使用,但是,只是简单的使用,在高并发的情况下就会有问题,我们举两个例子:
1,在高并发下,Channel使用memory,如果使用默认配置,那么就会较快的情况下,塞满内存,造成大部分数据丢失,对的,你没有听错,memory类型的通道,是会丢失数据的,因为单纯的内存,虽然速度很快,但是当速度无法阻挡数据增长时,有些数据无法缓存,或者将内存型的缓存撑爆,我们就必须要考虑,如何优化这种结构。
2,在高并发下,flume的单点承受能力是有限的,如果没有对应的分流措施,我们依然会丧失数据,数据是宝贵的,我们的每份数据都应严肃对待。
优化
为了解决以上问题,我们提供一种参考方案:
优化结构图示:
步骤:
1,改善Channel
1.1 参数调优
将flume中memory的参数进行调整,主要优化两个参数:
a1.channels.c1.capacity = 1000000
a1.channels.c1.transactionCapacity = 10000
第一个为最大缓存的量,第二个为每次最大交易的量