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

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

Info

Publication number
CN109992573B
CN109992573B CN201910255763.3A CN201910255763A CN109992573B CN 109992573 B CN109992573 B CN 109992573B CN 201910255763 A CN201910255763 A CN 201910255763A CN 109992573 B CN109992573 B CN 109992573B
Authority
CN
China
Prior art keywords
file
hdfs
size
path
data
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.)
Active
Application number
CN201910255763.3A
Other languages
English (en)
Other versions
CN109992573A (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

Images

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 CN109992573A (zh) 2019-07-09
CN109992573B true 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)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111475482B (zh) * 2020-04-03 2023-09-05 北京东方金信科技股份有限公司 一种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分布式文件***针对日志型小文件的存储和处理方法

Also Published As

Publication number Publication date
CN109992573A (zh) 2019-07-09

Similar Documents

Publication Publication Date Title
CN108536761B (zh) 报表数据查询方法及服务器
US8346722B2 (en) Replica placement strategy for distributed data persistence
EP2577507B1 (en) Data mart automation
US11720528B2 (en) Collections for storage artifacts of a tree structured repository established via artifact metadata
CN111324610A (zh) 一种数据同步的方法及装置
CN108874924A (zh) 搜索服务的创建方法、装置及计算机可读存储介质
CN112084270A (zh) 一种数据血缘处理方法、装置、存储介质及设备
US20180032567A1 (en) Method and device for processing data blocks in a distributed database
EP2869220A1 (en) Networked database system
US9128962B2 (en) View based table replacement for applications
CN107908794A (zh) 一种数据挖掘的方法、***、设备及计算机可读存储介质
EP2610768B1 (en) Data archiving and de-archiving in a business environment
CN105608126A (zh) 一种建立海量数据库二级索引的方法和装置
CN105224527A (zh) 适用于多种目的表更新方式的通用etl方法
US8386462B2 (en) Standby index in physical data replication
CN109992573B (zh) 一种实现hdfs文件占用率自动监控的方法及***
CN109977104B (zh) 数据管理方法及装置
US11669538B1 (en) Systems, devices, and methods for data analytics
CN112784114A (zh) 一种基于Neo4j高性能图数据库的关系图谱更新方法
CN113760600B (zh) 一种数据库备份方法、数据库还原方法和相关装置
US8630976B2 (en) Fast search replication synchronization processes
CN113326401A (zh) 字段血缘生成方法及***
US10558637B2 (en) Modularized data distribution plan generation
WO2019153547A1 (zh) 数据库操作方法、装置、设备及计算机可读存储介质
CN110908993A (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