CN109992573A - 一种实现hdfs文件占用率自动监控的方法及系统 - Google Patents

一种实现hdfs文件占用率自动监控的方法及系统 Download PDF

Info

Publication number
CN109992573A
CN109992573A CN201910255763.3A CN201910255763A CN109992573A CN 109992573 A CN109992573 A CN 109992573A CN 201910255763 A CN201910255763 A CN 201910255763A CN 109992573 A CN109992573 A CN 109992573A
Authority
CN
China
Prior art keywords
file
hdfs
data
path
size
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.)
Granted
Application number
CN201910255763.3A
Other languages
English (en)
Other versions
CN109992573B (zh
Inventor
李娟�
史飞悦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Focus Technology Co Ltd
Original Assignee
Focus Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Focus Technology Co Ltd filed Critical Focus Technology Co Ltd
Priority to CN201910255763.3A priority Critical patent/CN109992573B/zh
Publication of CN109992573A publication Critical patent/CN109992573A/zh
Application granted granted Critical
Publication of CN109992573B publication Critical patent/CN109992573B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种实现HDFS文件占用率自动监控的方法,其特征在于,首先配置HDFS路径、namenodes,调用java API接口获取HDFS文件目录和文件大小、原始日志及数据仓库目录下的层级路径列表及文件大小;编写ETL,计算各类文件大小;采用报表软件展示每日HDFS总目录;配置调度,获取HDFS存储情况,更新相关元数据表,标示相应文件。本发明针对HDFS文件占用率监控问题进行了算法和系统的设计,将底层目录地址及文件大小存储到数据库,然后通过存储过程计算每层目录的路径及大小,最后通过报表展现出来,该方法和系统能够高效智能的完成监控任务,大大降低了HDFS的维护时间。

Description

一种实现HDFS文件占用率自动监控的方法及系统
技术领域
本发明涉及数据库技术领域,特别是涉及一种实现HDFS文件占用率自动监控的方法及系统。
背景技术
在企业大数据分析中,随着业务的不断开展,数据分析背后所依赖的日志文件和业务表也逐渐增多,大数据时代已经到来。Hadoop是一个开源框架,它允许在整个集群使用简单编程模型计算机的分布式环境存储并处理大数据,Hadoop的两个主要组件很重要:一个是用于存储的Hadoop分布式文件系统(HDFS),另一个是MapReduce框架,让你可以对Hadoop里面存储的任何数据执行批量分析任务,但是当HDFS存储空间不足,很多任务无法执行,这就需要维护人员准确删除冗余占空间的文件,定期释放存储空间,因此HDFS的文件占用率监控就显得极其重要。
传统的监控HDFS文件占用率往往是在HDFS空间不足时人为去定位哪个目录下的文件占用率较大,时间较长且定位不够准确,导致HDFS的维护时间较长,从而影响多个任务的执行。
因此,需要一种能够高效智能的完成监控任务,降低HDFS维护时间的方法及系统。
发明内容
本发明所要解决的技术问题是克服现有技术的不足,提供一种实现HDFS文件占用率自动监控的方法及系统。
为解决上述技术问题,本发明提供一种实现HDFS文件占用率自动监控的方法,其特征在于,包括如下步骤:
步骤一:JAVA中动态配置HDFS的namenodes,包含Active NameNode和StandbyNameNode:两台NameNode形成互备,一台处于Active状态,为主NameNode,另外一台处于Standby状态,为备NameNode,配置HDFS路径包括原始日志存放路径/user/root/ODS/、日志处理后的仓库表存放路径/user/hive/warehouse/、配置oralce数据库用户名及密码;
步骤二:通过调用java API接口递归循环获取各路径下的文件名和文件大小,将获取到的文件名和文件大小存入list表中;
步骤三:在数据库中建立相应的中间表,并且每次将list表中的数据插入到中间表之前,将ODS和DW层的中间表清空,所述ODS和DW层的中间表最多只存放近7天数据,而/user/root/ODS/、/user/hive/warehouse/路径的总文件大小存放历史之今的数据;
步骤四:获取的数据插入到数据库之后,编写ETL,通过正则判断区分不规则路径,计算原始日志每个日期分区下文件大小;计算各数据库用户的文件大小、数据库用户下各表的文件大小、数据库用户下各表下每个分区的文件大小;
步骤五:采用报表软件展示每日HDFS总目录,将文件大小、新增、同比、环比、明细通过图表展现出来;
步骤六:通过kettle配置调度,所述步骤一中产生的JAR包发布后,编写Shell文件调度JAR包,在执行shell文件之前先在日志表里写一条开始执行的记录,执行结束后将执行结果写入日志表;最后调度在oracle里已经编写的存储过程并写相关日志。
所述步骤一中,动态配置HDFS的namenodes,配置HDFS路径包括原始日志存放路径/user/root/ODS/、日志处理后的仓库表存放路径/user/hive/warehouse/、配置oralce数据库用户名及密码;所述步骤二中,通过调用java API接口递归循环获取各路径下的文件名和文件大小,将获取到的文件名和文件大小存入list表中;所述步骤三中,连接oralce数据库,在oralce数据库中新建新表TABLE1、TABLE2、TABLE3,将HDFS总目录及文件总大小、ODS目录及文件总大小、DW目录及文件总大小存储到TABLE1,将获取到的ODS下底层目录地址及文件大小明细存储到数据库中的新表TABLE2中,将获取到的DW下底层目录地址及文件大小明细存储到数据库中的新表TABLE3中。所述TABLE2及TABLE3只保留最近7天的数据,所述TABLE1记录的是HDFS总目录及文件总大小、ODS目录及文件总大小、DW目录及文件总大小,记录程序运行至今的数据;所述步骤四中,编写ETL正则匹配hive仓库表的某一分区,具体的匹配路径为regexp_like(path,'/user/hive/warehouse/table_name/pt_cal_number=\d.+')>0,将TABLE2及TABLE3向上汇总一层。
所述步骤五中,所述报表软件使用QlikView前端,所述图表包括趋势图、柱状图和透视表;将每天定位到的占用空间的TOP10及数据量同比增加或者减少超过15%的文件路径在报表中进行标记。所述步骤六中,通过kettle配置调度,保证程序每天运行。
一种实现HDFS文件占用率自动监控的系统,其特征在于:包括依次相连的元数据模块、ETL模块、数据推送及展示模块;
所述元数据模块包括依次相连的基础配置模块、数据获取模块和数据插入模块;所述基础配置模块用于动态配置HDFS的namenodes使其在切换时不会对程序产生影响,配置HDFS路径包括原始日志存放路径/user/root/ODS/,日志处理后的仓库表存放路径/user/hive/warehouse/,配置oralce数据库用户名及密码,数据获取模块通过通过调用java API接口递归循环获取各路径下的文件名和文件大小,将获取到的文件名和文件大小存入list表中;所述数据插入模块用于在数据库中建立相应的中间表,并且每次将list表中的数据插入到中间表之前,需要将ODS和DW层的中间表清空,所述ODS和DW层的中间表中最多只存放最近7天的数据,而/user/root/ODS/、/user/hive/warehouse/路径的总文件大小存放历史之今的数据;
所述ETL模块,计算HDFS目录下文件大小,ODS目录下原始日志文件大小,原始日志每个日期文件下文件大小,数据仓库DW目录下各数据库用户的文件大小,数据库用户下各表的文件大小,数据库用户下各表下每个分区的文件大小;
所述数据展示模块,将ETL模块获取的各指标通过趋势图、柱状图、透视表等图表方式展现出来,将每天定位到的占用空间的TOP10及数据量同比增加或者减少超过15%的文件路径在报表中进行标记高亮显示。
本发明所达到的有益效果:主要针对HDFS文件占用率监控问题进行了算法和系统的设计,先根据java API接口获取HDFS各子目录的路径列表,将底层目录地址及文件大小存储到数据库,然后通过存储过程计算每层目录的路径及大小,最后通过报表展现出来。该方法和系统能够高效智能的完成监控任务,大大降低了HDFS的维护时间。
附图说明
图1为本发明的示例性实施例的方法流程示意图;
图2为本发明的示例性实施例的结构示意图;
图3为本发明的示例性实施例中的ODS下各层目录及大小的效果示意图;
图4为本发明的示例性实施例中的DW下各层目录及大小的效果示意图。
具体实施方式
一种实现HDFS文件占用率自动监控的方法,包括如下步骤:
步骤一:JAVA中动态配置HDFS的namenodes,,包含Active NameNode和StandbyNameNode:两台NameNode形成互备,一台处于Active状态,为主NameNode,另外一台处于Standby状态,为备NameNode,只有主NameNode才能对外提供读写服务。防止单个namenode挂掉,整个HDFS就无法访问,确保namenode在切换时不会对程序产生影响,配置HDFS路径包括原始日志存放路径/user/root/ODS/,日志处理后的仓库表存放路径/user/hive/warehouse/,配置oralce数据库用户名及密码。
步骤二:数据获取模块通过调用java API接口递归循环获取各路径下的文件名和文件大小,将获取到的文件名和文件大小存入list表中。
步骤三:数据插入模块,首先在数据库中建立相应的中间表,并且每次将list表中的数据插入到中间表之前,需要将ODS和DW层的中间表清空,因为明细数据较大,所述ODS和DW层的中间表最多只存放近7天数据,而/user/root/ODS/、/user/hive/warehouse/路径的总文件大小存放历史之今的数据,以便后续展示的时候做趋势图分析;
步骤四:获取的数据插入到数据库之后,由于部分表在hive上的建表规则不够规范,所以存放路径不是传统路径,编写ETL,在ETL里通过正则判断,快速区分不规则路径,例如正则匹配hive仓库表的某一分区,正确匹配路径为regexp_like(path,
'/user/hive/warehouse/table_name/pt_cal_number=\d.+')>0,以及计算原始日志每个日期分区下文件大小;计算各数据库用户的文件大小、数据库用户下各表的文件大小、数据库用户下各表下每个分区的文件大小;
步骤五:采用报表软件展示每日HDFS总目录,将文件大小、新增、同比、环比、明细通过趋势图、柱状图和透视表等展现出来,使得维护人员在定位问题时更加可视化;
步骤六:通过kettle配置调度,步骤一的JAR包发布后,编写Shell文件用作调度JAR包用,然后在执行shell文件之前先在日志表里写一条开始执行的记录,执行结束后将执行结果写入日志表;最后调度在oracle里已经编写的存储过程并写相关日志。
所述步骤三中,由于ODS层目录明细和DW层目录明细数据较大,因此TABLE2及TABLE3只保留最近7天的数据,而TABLE1记录的是HDFS总目录及文件总大小、ODS目录及文件总大小、DW目录及文件总大小,每天只有三条数据,因此记录程序运行至今的数据;步骤四中,编写ETL将TABLE2及TABLE3向上汇总一层。
所述步骤五中,所述报表软件使用QlikView前端,QlikView在连接数据库、脚本编辑和可视化方面非常灵活且操作性强。
一种实现HDFS文件占用率自动监控的系统,如图2所示,包括依次相连的元数据模块、ETL模块、数据展示模块;
所述元数据模块包括依次相连的基础配置模块、数据获取模块和数据插入模块;所述基础配置模块用于动态配置HDFS的namenodes使其在切换时不会对程序产生影响,配置HDFS路径包括原始日志存放路径/user/root/ODS/,日志处理后的仓库表存放路径/user/hive/warehouse/,配置oralce数据库用户名及密码,数据获取模块通过通过调用java API接口递归循环获取各路径下的文件名和文件大小,将获取到的文件名和文件大小存入list表中;所述数据插入模块用于在数据库中建立相应的中间表,并且每次将list表中的数据插入到中间表之前,需要将ODS和DW层的中间表清空,所述ODS和DW层的中间表中最多只存放最近7天的数据,而/user/root/ODS/、/user/hive/warehouse/路径的总文件大小存放历史之今的数据;
所述ETL模块,计算HDFS目录下文件大小,ODS目录下原始日志文件大小,原始日志每个日期文件下文件大小,数据仓库DW目录下各数据库用户的文件大小,数据库用户下各表的文件大小,数据库用户下各表下每个分区的文件大小;
所述数据推送及展示模块,将ETL模块获取的各指标通过趋势图、柱状图、透视表等图表方式展现出来,将每天定位到的占用空间的TOP10及数据量同比增加或者减少超过15%的文件路径在报表中进行标记高亮显示。
下面结合附图和示例性实施例对本发明作进一步的说明:
如图1所示,本发明实施例的方法流程具体步骤为:
步骤11:首先配置hdfs路径,动态配置namenodes,使namnodes高可用,自动切换时,防止无法连接;配置oralce数据库用户名及密码。
步骤12:递归循环并调用java API接口获取HDFS文件目录和文件大小,原始日志及数据仓库目录下的层级路径列表及文件大小。
步骤13:连接数据库,在数据库中新建一张新表TABLE1、TABLE2、TABLE3,将hdfs总目录及文件总大小、ODS目录及文件总大小、DW目录及文件总大小存储到TABLE1;将获取到的ODS下底层目录地址及文件大小明细存储到数据库中的新表TABLE2中,例如获取的文件地址为/user/root/ODS/AbizVisitLog/20140604/access.log-1-2014-06-04.gz,大小为7KB;将获取到的DW下底层目录地址及文件大小明细存储到数据库中的新表TABLE3中,例如获取的文件地址为/user/hive/warehouse/xyz.db/dw_xyz_url/pt_cal_number=20150306/part-r-00013,大小为20KB。由于具体到文件,明细数据较大,TABLE2及TABLE3只保留近7天的数据,TABLE1增量加载每天数据。
步骤14:编写ETL将TABLE2向上汇总一层,以图3为例,然后计算ODS目录下原始日志文件大小,原始日志每个日期文件下文件大小。编写ETL将TABLE3向上汇总一层,以图4为例。然后计算数据仓库DW目录下各数据库用户的文件大小,数据库用户下各表的文件大小,数据库用户下各表下每个分区的文件大小。为方便计算环比及周同比,保留近7天数据。
步骤15:将获取的各指标数据载入QlikView前端,通过趋势图、柱状图、透视表等图表方式展现出来,并将每天定位到的占用空间较大的TOP10、数据量同比增加或者减少15%的文件路径在报表中标红。
步骤16:通过kettle配置调度,步骤一的JAR包发布后,编写Shell文件用作调度JAR包用,然后在执行shell文件之前先在日志表里写一条开始执行的记录,执行结束后将执行结果写入日志表;最后调度在oracle里已经编写的存储过程并写相关日志。
本发明主要用于提供一种实现HDFS文件占用率自动监控的方法及系统,主要针对HDFS文件占用率监控问题进行了算法和系统的设计,先根据java API接口获取HDFS各子目录的路径列表,将底层目录地址及文件大小存储到数据库,然后通过存储过程计算每层目录的路径及大小,最后通过报表展现出来。该方法和系统能够高效智能的完成监控任务,大大降低了HDFS的维护时间。
以上实施例不以任何方式限定本发明,凡是对以上实施例以等效变换方式做出的其它改进与应用,都属于本发明的保护范围。

Claims (5)

1.一种实现HDFS文件占用率自动监控的方法,其特征在于,包括如下步骤:
步骤一:JAVA中动态配置HDFS的namenodes,包含Active NameNode和StandbyNameNode:两台NameNode形成互备,一台处于Active状态,为主NameNode,另外一台处于Standby状态,为备NameNode,配置HDFS路径包括原始日志存放路径/user/root/ODS/、日志处理后的仓库表存放路径/user/hive/warehouse/、配置oralce数据库用户名及密码;通过调用java API接口递归循环获取各路径下的文件名和文件大小,将获取到的文件名和文件大小存入list表中;在数据库中建立相应的中间表,并且每次将list表中的数据插入到中间表之前,将ODS和DW层的中间表清空,所述ODS和DW层的中间表最多只存放近7天数据,而/user/root/ODS/、/user/hive/warehouse/路径的总文件大小存放历史之今的数据;
步骤二:获取的数据插入到数据库之后,编写ETL,通过正则判断区分不规则路径,计算原始日志每个日期分区下文件大小;计算各数据库用户的文件大小、数据库用户下各表的文件大小、数据库用户下各表下每个分区的文件大小;
步骤三:采用报表软件展示每日HDFS总目录,将文件大小、新增、同比、环比、明细通过图表展现出来;
步骤四:通过kettle配置调度,所述步骤一中产生的JAR包发布后,编写Shell文件调度JAR包,在执行shell文件之前先在日志表里写一条开始执行的记录,执行结束后将执行结果写入日志表;最后调度在oracle里已经编写的存储过程并写相关日志。
2.如权利要求1所述的一种实现HDFS文件占用率自动监控的方法,其特征在于:所述步骤一中,配置oralce数据库用户名及密码,连接oralce数据库,在oralce数据库中新建新表TABLE1、TABLE2、TABLE3,将HDFS总目录及文件总大小、ODS目录及文件总大小、DW目录及文件总大小存储到TABLE1,将获取到的ODS下底层目录地址及文件大小明细存储到数据库中的新表TABLE2中,将获取到的DW下底层目录地址及文件大小明细存储到数据库中的新表TABLE3中。
3.如权利要求2所述的一种实现HDFS文件占用率自动监控的方法,其特征在于:所述步骤一中,所述TABLE2及TABLE3只保留最近7天的数据,所述TABLE1记录的是HDFS总目录及文件总大小、ODS目录及文件总大小、DW目录及文件总大小,记录程序运行至今的数据;所述步骤二中,编写ETL正则匹配hive仓库表的某一分区,具体的匹配路径为regexp_like(path,'/user/hive/warehouse/table_name/pt_cal_number=\d.+')>0,将TABLE2及TABLE3向上汇总一层。
4.如权利要求3所述的一种实现HDFS文件占用率自动监控的方法,其特征在于:所述步骤三中,所述报表软件使用QlikView前端,所述图表包括趋势图、柱状图和透视表;将每天定位到的占用空间的TOP10及数据量同比增加或者减少超过15%的文件路径在报表中进行标记。
5.一种根据权利要求1-4之一所述方法运行的实现HDFS文件占用率自动监控的系统,其特征在于:包括依次相连的元数据模块、ETL模块、数据推送及展示模块;
所述元数据模块包括依次相连的基础配置模块、数据获取模块和数据插入模块;所述基础配置模块用于动态配置HDFS的namenodes使其在切换时不会对程序产生影响,配置HDFS路径包括原始日志存放路径/user/root/ODS/,日志处理后的仓库表存放路径/user/hive/warehouse/,配置oralce数据库用户名及密码,数据获取模块通过通过调用java API接口递归循环获取各路径下的文件名和文件大小,将获取到的文件名和文件大小存入list表中;所述数据插入模块用于在数据库中建立相应的中间表,并且每次将list表中的数据插入到中间表之前,需要将ODS和DW层的中间表清空,所述ODS和DW层的中间表中最多只存放最近7天的数据,而/user/root/ODS/、/user/hive/warehouse/路径的总文件大小存放历史之今的数据;
所述ETL模块,计算HDFS目录下文件大小,ODS目录下原始日志文件大小,原始日志每个日期文件下文件大小,数据仓库DW目录下各数据库用户的文件大小,数据库用户下各表的文件大小,数据库用户下各表下每个分区的文件大小;
所述数据推送及展示模块,将ETL模块获取的各指标通过趋势图、柱状图、透视表等图表方式展现出来,将每天定位到的占用空间的TOP10及数据量同比增加或者减少超过15%的文件路径在报表中进行标记并发送给维护人员。
CN201910255763.3A 2019-04-01 2019-04-01 一种实现hdfs文件占用率自动监控的方法及系统 Active CN109992573B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910255763.3A CN109992573B (zh) 2019-04-01 2019-04-01 一种实现hdfs文件占用率自动监控的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910255763.3A CN109992573B (zh) 2019-04-01 2019-04-01 一种实现hdfs文件占用率自动监控的方法及系统

Publications (2)

Publication Number Publication Date
CN109992573A true CN109992573A (zh) 2019-07-09
CN109992573B CN109992573B (zh) 2022-07-19

Family

ID=67131231

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910255763.3A Active CN109992573B (zh) 2019-04-01 2019-04-01 一种实现hdfs文件占用率自动监控的方法及系统

Country Status (1)

Country Link
CN (1) CN109992573B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111475482A (zh) * 2020-04-03 2020-07-31 北京东方金信科技有限公司 一种hdfs数据的展示方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678491A (zh) * 2013-11-14 2014-03-26 东南大学 一种基于Hadoop中小文件优化和倒排索引的方法
CN104731921A (zh) * 2015-03-26 2015-06-24 江苏物联网研究发展中心 Hadoop分布式文件系统针对日志型小文件的存储和处理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678491A (zh) * 2013-11-14 2014-03-26 东南大学 一种基于Hadoop中小文件优化和倒排索引的方法
CN104731921A (zh) * 2015-03-26 2015-06-24 江苏物联网研究发展中心 Hadoop分布式文件系统针对日志型小文件的存储和处理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111475482A (zh) * 2020-04-03 2020-07-31 北京东方金信科技有限公司 一种hdfs数据的展示方法和装置
CN111475482B (zh) * 2020-04-03 2023-09-05 北京东方金信科技股份有限公司 一种hdfs数据的展示方法和装置

Also Published As

Publication number Publication date
CN109992573B (zh) 2022-07-19

Similar Documents

Publication Publication Date Title
US11194552B1 (en) Assisted visual programming for iterative message processing system
US11615084B1 (en) Unified data processing across streaming and indexed data sets
US10776441B1 (en) Visual programming for iterative publish-subscribe message processing system
US20220269727A1 (en) Processing data using containerized state-free indexing nodes in a containerized scalable environment
US11593400B1 (en) Automatic triage model execution in machine data driven monitoring automation apparatus
US11703826B1 (en) Monitoring asset hierarchies based on asset group metrics
US11941017B2 (en) Event driven extract, transform, load (ETL) processing
US11599549B2 (en) Sampling-based preview mode for a data intake and query system
US11354314B2 (en) Method for connecting a relational data store's meta data with hadoop
US20220261385A1 (en) Bucket merging for a data intake and query system using size thresholds
US11768875B2 (en) Monitoring system control interface for asset tree determination
US20220036177A1 (en) Data field extraction by a data intake and query system
US7802204B2 (en) Data visualization for service requests
US20200372007A1 (en) Trace and span sampling and analysis for instrumented software
US11461350B1 (en) Control interface for dynamic elements of asset monitoring and reporting system
CN109492021A (zh) 企业画像信息查询方法、装置、计算机设备和存储介质
CN109344153A (zh) 业务数据的处理方法及终端设备
CN104781812A (zh) 策略驱动的数据放置和信息生命周期管理
US20110209042A1 (en) Information Technology Standard Inventory Utility
CN111125444A (zh) 大数据任务调度管理方法、装置、设备及存储介质
CN113157947A (zh) 知识图谱的构建方法、工具、装置和服务器
CN109656963A (zh) 元数据获取方法、装置、设备及计算机可读存储介质
US8805785B2 (en) Shared storage of categorization, labeling or tagging of objects in a collaboration system
US11210278B1 (en) Asset group interface driven by search-derived asset tree hierarchy
CN107609172A (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
GR01 Patent grant
GR01 Patent grant