CN107609158A - 一种基于Flume的高可靠数据采集及存储方法 - Google Patents
一种基于Flume的高可靠数据采集及存储方法 Download PDFInfo
- Publication number
- CN107609158A CN107609158A CN201710881173.2A CN201710881173A CN107609158A CN 107609158 A CN107609158 A CN 107609158A CN 201710881173 A CN201710881173 A CN 201710881173A CN 107609158 A CN107609158 A CN 107609158A
- Authority
- CN
- China
- Prior art keywords
- data
- hdfssink
- hdfs
- classes
- flume
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Abstract
本发明涉及一种基于Flume的高可靠数据采集及存储方法,涉及数据处理技术领域。本发明基于Flume和文件系统HDFS设计了一种改进的数据采集及存储方法,能够最大可能在大量数据高速存储的时候保证数据不丢失,同时减少数据写入文件系统造成的拥堵,提升数据写入的性能。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种基于Flume的高可靠数据采集及存储方法。
背景技术
日志采集是大数据的基石。随着互联网行业的快速发展,网络规模的不断扩大,各种企事业单位的业务系统、网络安全等系统每天都会产生大量的日志数据。收集业务日志数据、网络安全日志数据,供离线和在线的分析系统使用,正是日志收集系统的要做的事情。高可用性,高可靠性和可扩展性是日志收集系统应具有的基本特征。
目前常用的开源日志收集系统有Flume,Scribe等。Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,目前已经是Apache的一个子项目。Flume支持在系统中定制各类数据发送方,用于收集数据;同时Flume可以对数据进行简单处理,并写到各种数据接收方。
目前最常用的采集存储是采用开源组件Flume+HDFS的组合形式,把数据写到HDFS文件系统,将对进行大数据的挖掘分析具有重大意义。
如图1所示,常规的Flume包括source层、channel层和sink层,由source层从数据源采集数据,并发送至channel层,channel层对数据进行简单的缓存,sink层从channel层中获取数据,并发送至接收方;数据源一般为需要采集数据的生产机器,接收方可以是相应的存储文件系统、数据库或者远程服务器,采集的数据一般为生产机器的日志或安全设备日志。
但是在Flume的实际使用过程中,会遇到如下问题:
1、使用固定大小的MemoryChannel(Flume内置的常用内存管道)在日志高峰时常报队列大小不够的异常;使用FileChannel(Flume内置的常用文件管道)又导致IO繁忙的问题。
2、Flume向文件系统Hdfs写日志,在高峰时间速度较慢;
3、因系统异常或网络阻塞或系统开关机会造成数据的丢失;
4、系统缺乏有效的监控手段,无法进行快速应急响应处置。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何最大可能在大量数据高速存储的时候保证数据不丢失,同时减少数据写入文件系统造成的拥堵,提升数据写入的性能。
(二)技术方案
为了解决上述技术问题,本发明提供了一种基于Flume的高可靠数据采集及存储方法,包括以下步骤:
步骤1:Flume的Source层接收数据源发送的原始数据;
步骤2:Source层把接收的无用原始数据发送给丢弃无用数据的类NullChannel做丢弃处理;Source层把接收的有用原始数据发送给新建类PerfectChannel,若Channel层未出现数据积压且系统未出现异常,则Source层把接收到的数据发送到内存管道MemoryChannel;若Channel层出现数据积压或系统出现异常,则Source层把接收到的数据发送到文件管道FileChanel;
步骤,3:新建HdfsSink类,HdfsSink类从MemoryChannel或FileChanel中读取数据写入文件系统Hdfs,并在HdfsSink类中加入开关装置,当HdfsSink的开关装置是打开状态时,则HdfsSink类不再往Hdfs中写入数据,并且HdfsSink类只从FileChanel中读取数据;当HdfsSink的开关装置未打开时,HdfsSink类将数据写入到Hdfs中。
优选地,步骤3中,当HdfsSink的开关装置未打开时,HdfsSink类将数据写入Hdfs之前,为HdfsSink增加自动创建索引的功能。
优选地,为HdfsSink增加自动创建索引功能的方法为:根据Hadoop提供对压缩格式lzo创建索引的功能,使得压缩文件是可切分的,从而使得Hadoop Job可并行处理数据文件。
优选地,在步骤1至步骤3的整个过程中,使用Zabbix monitor服务对数据发送数量,拥堵情况及写Hdfs速度进行监控,同时对写Hdfs状态及日志大小进行异常监控。
(三)有益效果
本发明基于Flume和文件系统HDFS设计了一种改进的数据采集及存储方法,能够最大可能在大量数据高速存储的时候保证数据不丢失,同时减少数据写入文件系统造成的拥堵,提升数据写入的性能。
附图说明
图1为常规的Flume采集模块内部连接图;
图2为本发明的高可靠数据采集及存储方法流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
如图2所示,本发明提供的一种基于Flume的高可靠数据采集及存储方法包括以下步骤:
步骤1:Flume的Source层接收数据源发送的原始数据;
步骤2:Source层把无用的原始数据发送给NullChannel(无用数据进行丢弃的类)做丢弃处理;本发明中未使用Flume自身的NullSink组件对无用数据进行丢弃处理,而是为了提升采集性能,通过新建NullChannel类,把原先需要先将接收数据存放到Channel(管道)层中,再将数据取出扔掉这一步骤移到了Channel层里面进行处理。
Source层把接收的有用原始数据发送给PerfectChannel(新建类),本发明中未直接使用MemoryChannel(内存管道),以及FileChanel(文件管道),而是结合二者优缺点,新建了PerfectChannel类,当系统正常,同时管道内日志量不大,Sink层可以处理过来数据时,自动切换使用高吞吐量的MemoryChannel;当系统出现异常,如:代理死机,存储组停止、缓慢、死机,当Flume的Sink层速度跟不上的时候,同时又需要Channel层能够缓存下应用端发过来的日志时,自动切换使用FileChanel(文件管道)。
步骤3:为了往Hdfs(文件系统)写入数据,新建HdfsSink类,用于从Channel层中读取数据写入Hdfs,本发明在HdfsSink类中加入了开关装置,当开关装置是打开状态,则HdfsSink不再往Hdfs上写数据,并且数据只写向FileChannel,以此防止在Hdfs正常停机维护过程中造成的数据丢失;当HdfsSink的开关装置未打开时,其数据将被写入到Hdfs中,在此过程中,经实际使用发现,在数据高峰时期,容易造成Hdfs写入缓慢,因此本发明在写入Hdfs之前,为HdfsSink增加自动创建索引的功能,为HdfsSink增加自动创建索引的功能的方式为:根据Hadoop提供对lzo(压缩格式的一种)创建索引,使得压缩文件是可切分的,这样Hadoop Job可以并行处理数据文件,从而在高峰时期,提高了HdfsSink往Hdfs写入数据的速度。
结合以上整个过程,对于一个高可靠的数据采集传输方法来说,监控是必不可少的部分,在整个过程中,使用了Zabbix monitor服务对数据发送数量,拥堵情况及写Hdfs速度进行了监控,同时对写Hdfs状态及日志大小进行异常监控。
可以看出,本发明基于Flume和文件系统HDFS设计了一种改进的数据采集及存储方法,能够最大可能在大量数据高速存储的时候保证数据不丢失,同时减少数据写入文件系统造成的拥堵,提升数据写入的性能。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (5)
1.一种基于Flume的高可靠数据采集及存储方法,其特征在于,包括以下步骤:
步骤1:Flume的Source层接收数据源发送的原始数据;
步骤2:Source层把接收的无用原始数据发送给丢弃无用数据的类NullChannel做丢弃处理;Source层把接收的有用原始数据发送给新建类PerfectChannel,若Channel层未出现数据积压且系统未出现异常,则Source层把接收到的数据发送到内存管道MemoryChannel;若Channel层出现数据积压或系统出现异常,则Source层把接收到的数据发送到文件管道FileChanel;
步骤3:新建HdfsSink类,HdfsSink类从MemoryChannel或FileChanel中读取数据写入文件系统Hdfs,并在HdfsSink类中加入开关装置,当HdfsSink的开关装置是打开状态时,则HdfsSink类不再往Hdfs中写入数据,并且HdfsSink类只从FileChanel中读取数据;当HdfsSink的开关装置未打开时,HdfsSink类将数据写入到Hdfs中。
2.如权利要求1所述的方法,其特征在于,步骤3中,当HdfsSink的开关装置未打开时,HdfsSink类将数据写入Hdfs之前,为HdfsSink增加自动创建索引的功能。
3.如权利要求2所述的方法,其特征在于,为HdfsSink增加自动创建索引功能的方法为:根据Hadoop提供对压缩格式lzo创建索引的功能,使得压缩文件是可切分的,从而使得Hadoop Job可并行处理数据文件。
4.如权利要求1所述的方法,其特征在于,在步骤1至步骤3的整个过程中,使用Zabbixmonitor服务对数据发送数量,拥堵情况及写Hdfs速度进行监控,同时对写Hdfs状态及日志大小进行异常监控。
5.如权利要求1至4中任一项所述的方法,其特征在于,所述系统异常的情况包括代理死机,存储组停止和存储组死机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710881173.2A CN107609158A (zh) | 2017-09-26 | 2017-09-26 | 一种基于Flume的高可靠数据采集及存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710881173.2A CN107609158A (zh) | 2017-09-26 | 2017-09-26 | 一种基于Flume的高可靠数据采集及存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107609158A true CN107609158A (zh) | 2018-01-19 |
Family
ID=61058689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710881173.2A Pending CN107609158A (zh) | 2017-09-26 | 2017-09-26 | 一种基于Flume的高可靠数据采集及存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107609158A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108399231A (zh) * | 2018-02-13 | 2018-08-14 | 中体彩科技发展有限公司 | 一种数据采集方法及Flume数据采集客户端 |
CN110989935A (zh) * | 2019-12-06 | 2020-04-10 | 中盈优创资讯科技有限公司 | Flume系统的数据处理、传输方法及装置 |
CN111930304A (zh) * | 2020-07-10 | 2020-11-13 | 苏州浪潮智能科技有限公司 | 一种数据采集速度控制方法、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104579777A (zh) * | 2015-01-06 | 2015-04-29 | 浪潮软件股份有限公司 | 日志管理系统和实现方法 |
CN106709069A (zh) * | 2017-01-25 | 2017-05-24 | 焦点科技股份有限公司 | 高可靠性的大数据日志采集与传输方法 |
CN106777046A (zh) * | 2016-12-09 | 2017-05-31 | 武汉卓尔云市集团有限公司 | 一种基于nginx日志的数据分析方法 |
CN106874381A (zh) * | 2017-01-09 | 2017-06-20 | 重庆邮电大学 | 一种基于Hadoop的无线电环境地图数据处理系统 |
-
2017
- 2017-09-26 CN CN201710881173.2A patent/CN107609158A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104579777A (zh) * | 2015-01-06 | 2015-04-29 | 浪潮软件股份有限公司 | 日志管理系统和实现方法 |
CN106777046A (zh) * | 2016-12-09 | 2017-05-31 | 武汉卓尔云市集团有限公司 | 一种基于nginx日志的数据分析方法 |
CN106874381A (zh) * | 2017-01-09 | 2017-06-20 | 重庆邮电大学 | 一种基于Hadoop的无线电环境地图数据处理系统 |
CN106709069A (zh) * | 2017-01-25 | 2017-05-24 | 焦点科技股份有限公司 | 高可靠性的大数据日志采集与传输方法 |
Non-Patent Citations (2)
Title |
---|
DJU ALEX: "深入剖析美团基于Flume的网站日志收集系统", 《HTTPS://WWW.JB51.NET/YUNYING/446338.HTML》 * |
韩丽颖: "基于Hadoop技术的轨道交通MSS系统数据存储应用研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108399231A (zh) * | 2018-02-13 | 2018-08-14 | 中体彩科技发展有限公司 | 一种数据采集方法及Flume数据采集客户端 |
CN110989935A (zh) * | 2019-12-06 | 2020-04-10 | 中盈优创资讯科技有限公司 | Flume系统的数据处理、传输方法及装置 |
CN111930304A (zh) * | 2020-07-10 | 2020-11-13 | 苏州浪潮智能科技有限公司 | 一种数据采集速度控制方法、设备及存储介质 |
CN111930304B (zh) * | 2020-07-10 | 2022-08-12 | 苏州浪潮智能科技有限公司 | 一种数据采集速度控制方法、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105824744B (zh) | 一种基于b2b平台的实时日志采集分析方法 | |
WO2020233212A1 (zh) | 一种日志记录的处理方法、服务器及存储介质 | |
CN107341258B (zh) | 一种日志数据采集方法及系统 | |
WO2017071134A1 (zh) | 分布式跟踪系统 | |
CN111258979B (zh) | 一种云防护日志系统及其工作方法 | |
CN108197233A (zh) | 一种数据管理方法、中间件及数据管理系统 | |
CN106487596A (zh) | 分布式服务跟踪实现方法 | |
CN107609158A (zh) | 一种基于Flume的高可靠数据采集及存储方法 | |
CN103440244A (zh) | 一种大数据存储优化方法 | |
US20190227862A1 (en) | Policy based dynamic data collection for problem analysis | |
CN103064731A (zh) | 一种提高消息队列系统性能的装置及其方法 | |
CN103617287A (zh) | 一种分布式环境下的日志管理方法和装置 | |
CN104850407A (zh) | 一种桌面录屏系统及其录屏方法 | |
CN111813573B (zh) | 管理平台与机器人软件的通信方法及其相关设备 | |
CN106330963A (zh) | 一种跨网络多节点日志采集的方法 | |
CN106991177B (zh) | 一种分布式环境下实时日志的无损采集方法及其系统 | |
CN106250287A (zh) | 一种日志信息处理装置 | |
CN107357804A (zh) | 互联网金融海量日志的分析系统及方法 | |
CN108334556A (zh) | 一种分析互联网金融海量日志的方法及系统 | |
CN102571845A (zh) | 一种分布式存储系统的数据存储方法及装置 | |
CN105159820A (zh) | 一种系统日志数据传输方法及装置 | |
CN110989935A (zh) | Flume系统的数据处理、传输方法及装置 | |
CN101976210A (zh) | 基于消息中间件的井场数据远程传输方法 | |
CN102938829A (zh) | 一种实时音视频流的预录实现方法 | |
CN108614820A (zh) | 实现流式源数据解析的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180119 |
|
WD01 | Invention patent application deemed withdrawn after publication |