本发明涉及大数据处理,尤其涉及一种基于flume的数据采集方法、设备、介质及计算机程序产品。
背景技术:
1、flume是cloudera提供的一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统,flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,flume提供对数据进行简单处理,并写到各种数据接受方的能力。以往在使用flume采集数据时,针对一些流量变化明显、谷峰差异大、规律性不强的场景,如果通过提前预估的方式,根据最大流量,启动多个agent,会极大的浪费资源;而如果根据流量的变化,动态调整agent个数,一般会需要一个集群管理系统,或者人工介入,浪费人力、物力,导致成本增加。
技术实现思路
1、本发明所要解决的技术问题在于,提供一种基于flume的数据采集方法、设备、介质及计算机程序产品,通过单agent部署的方式,实时感知流量大小,动态调整channel数量以及sink方式,合理利用各端的存储、计算资源,有效解决了流量变化场景中数据采集的不足,极大的提高了资源利用率,降低了维护成本。
2、为了实现上述目的,本发明实施例提供了一种基于flume的数据采集方法,包括:
3、根据source组件从数据源获取的实时数据流量,调整channel组件中channel的数量以及sink组件的sink方式,根据所述sink方式将实时数据写入对应的数据接收方。
4、作为上述方案的改进,所述方法还包括:
5、配置fifo队列,将每次批量处理的数据量写入所述fifo队列,并根据所述fifo队列确定channel的数量。
6、作为上述方案的改进,所述根据所述fifo队列确定channel的数量,包括:
7、计算所述fifo队列的第一数据量平均值以及第二数据量平均值;其中,所述第一数据量平均值为近n次数据量的平均值,所述第二数据量平均值为近m次数据量的平均值,n和m均为正整数,且n<m;
8、根据所述第一数据量平均值、所述第二数据量平均值以及channel的最大处理量,确定channel的数量。
9、作为上述方案的改进,所述根据所述第一数据量平均值、所述第二数据量平均值以及channel的最大处理量,确定channel的数量,包括:
10、若所述第一数据量平均值大于channel的最大处理量,且所述第二数据量平均值小于channel的最大处理量,则无需增加channel的数量;
11、若所述第一数据量平均值大于channel的最大处理量,且所述第二数据量平均值大于channel的最大处理量,则新增一个channel。
12、作为上述方案的改进,所述channel组件包括可用channel池和闲置channel池;
13、当所述source组件需要的channel的数量大于所述可用channel池中channel的数量,则判断所述闲置channel池中是否有channel;
14、若有,则将所述闲置channel池中的channel添加至所述可用channel池;若无或者数量仍不满足,则新增channel并添加至所述可用channel池;
15、当所述source组件需要的channel的数量小于所述可用channel池中channel的数量,则将所述可用channel池中超出数量的channel添加至所述闲置channel池。
16、作为上述方案的改进,所述sink方式包括hdfs方式和本地文件方式;当所述实时数据流量大于预设阈值时,采用所述本地文件方式,流量回落后可切换回所述hdfs方式;其中,所述本地文件方式在停止时会将本次新增的文件上传至对应的hdfs目录,并删除本地文件。
17、作为上述方案的改进,所述方法还包括:
18、对所述hdfs目录或所述本地文件进行时间区间标记,并基于标记的时间区间将文件自动关联至hive表中对应的分区。
19、本发明实施例还提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的基于flume的数据采集方法。
20、本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任一项所述的基于flume的数据采集方法。
21、本发明实施例还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序或计算机指令,所述计算机程序或所述计算机指令被处理器执行时实现上述任一项所述的基于flume的数据采集方法。
22、相对于现有技术,本发明实施例提供的一种基于flume的数据采集方法、设备、介质及计算机程序产品的有益效果在于:根据source组件从数据源获取的实时数据流量,调整channel组件中channel的数量以及sink组件的sink方式,根据所述sink方式将实时数据写入对应的数据接收方。本发明实施例通过单agent部署的方式,实时感知流量大小,动态调整channel数量以及sink方式,解决了传统人工介入新增agent的问题,使用本地+hdfs相结合的方案,合理利用各端的存储、计算资源,有效解决了流量变化场景中数据采集的不足,极大的提高了资源利用率,降低了维护成本。在sink内部新增动态感知能力,根据时间区间切换,实时自动关联消费后的数据到hive分区。
1.一种基于flume的数据采集方法,其特征在于,包括:
2.如权利要求1所述的基于flume的数据采集方法,其特征在于,所述方法还包括:
3.如权利要求2所述的基于flume的数据采集方法,其特征在于,所述根据所述fifo队列确定channel的数量,包括:
4.如权利要求3所述的基于flume的数据采集方法,其特征在于,所述根据所述第一数据量平均值、所述第二数据量平均值以及channel的最大处理量,确定channel的数量,包括:
5.如权利要求4所述的基于flume的数据采集方法,其特征在于,所述channel组件包括可用channel池和闲置channel池;
6.如权利要求1所述的基于flume的数据采集方法,其特征在于,所述sink方式包括hdfs方式和本地文件方式;当所述实时数据流量大于预设阈值时,采用所述本地文件方式,流量回落后可切换回所述hdfs方式;其中,所述本地文件方式在停止时会将本次新增的文件上传至对应的hdfs目录,并删除本地文件。
7.如权利要求6所述的基于flume的数据采集方法,其特征在于,所述方法还包括:
8.一种终端设备,其特征在于,包括处理器和存储器,所述存储器中存储有计算机程序,且所述计算机程序被配置为由所述处理器执行,所述处理器执行所述计算机程序时实现如权利要求1至7中任意一项所述的基于flume的数据采集方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,其中,所述计算机可读存储介质所在设备执行所述计算机程序时,实现如权利要求1至7中任意一项所述的基于flume的数据采集方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序或计算机指令,所述计算机程序或所述计算机指令被处理器执行时实现如权利要求1至7中任意一项所述的基于flume的数据采集方法。
