基于Hadoop的分布式数据仓库的构建方法

文档序号:30087469发布日期:2022-05-18 06:22阅读:121来源:国知局
基于hadoop的分布式数据仓库的构建方法
技术领域
:1.本发明属于软件工程及大数据
技术领域
:,涉及用于构建离线数据仓库的方法,具体涉及一种基于hadoop的分布式数据仓库的构建方法。
背景技术
::2.当一个企业的数据量很大时,管理这些数据会耗费大量的人力物力,且由于数据量大且数据的种类繁多,管理难度也很高。3.离线数据仓库的提出有望解决上述的问题,离线数据仓库提供了标准的报表和图表展示功能,离线数据仓库内的数据来源于不同的业务处理系统,而离线数据仓库系统展示的数据是整个企业的数据集成。离线数据仓库支持多维分析,多维分析通过把一个实体的属性定义成维度,使用户能方便地从多个角度汇总、计算数据,增强了数据的分析处理能力,通过对不同维度数据的比较和分析,增强了信息处理能力。多维分析是数据仓库系统在决策分析过程中非常有用的一个功能,而且离线数据仓库是数据挖掘技术的关键和基础。数据挖掘技术是在已有数据的基础上,帮助用户理解现有的信息,并且在当前信息的基础上,对未来的企业状况做出预测,在数据仓库的基础上进行数据挖掘,可以针对整个企业的发展状况和未来前景做出较为完整、合理、准确的分析和预测。4.虽然离线数据仓库具有上述的多种优点,有望解决大型企业中海量数据的管理问题,然而,现有技术中,还缺乏构建离线的、分布式的数据仓库的方法,对于技术人员来说,如何在hadoop文件系统的基础上构建可靠的分布式数据仓库在技术上仍存在诸多困难。技术实现要素:5.本发明是为解决上述问题而进行的,目的在于提供一种基于hadoop的分布式数据仓库的构建方法,通过对数据进行分层处理,构建出合理的离线数据仓库,本发明采用了如下技术方案:6.本发明提供了一种基于hadoop的分布式数据仓库的构建方法及装置,用于基于服务器组中的目标数据构建离线数据仓库,所述服务器组包括多个相互通信连接的服务器,多个所述服务器中均设置有hadoop文件系统,其特征在于,包括:步骤s1,在存储有所述目标数据的所述服务器上搭建flume,用于对所述目标数据进行采集;步骤s2,在多个所述服务器上搭建分布式kafka,用于接收所述flume采集的所述目标数据;步骤s3,在其中一台所述服务器上搭建hive,用于对所述目标数据进行提取、转化以及加载,从而形成所述数据仓库;步骤s4,在其中若干台所述服务器上搭建zookeeper集群,用于为所述数据仓库提供实时的协调服务;步骤s5,采用预定的分层模型对所述数据仓库进行分层处理。7.本发明提供的基于hadoop的分布式数据仓库的构建方法,还可以具有这样的技术特征,其中,所述分层模型包括:原始数据层,用于保留所述目标数据的初始状态;明细数据层,用于对所述目标数据进行标准化;数据服务层,用于对标准化后的所述目标数据进行聚合;以及数据产品层,用于对所述目标数据进行进一步聚合,从而为数据产品和数据分析提供高度聚合的数据。8.本发明提供的基于hadoop的分布式数据仓库的构建方法,还可以具有这样的技术特征,其中,所述明细数据层至少对所述目标数据进行以下操作:利用udf函数或udtf函数将所述原始数据层中的所述目标数据进行标准化,生成多种数据表;将所述数据表中用于描述相同对象但取值不同的字段按照预定的命名规则进行统一;根据预定的保留规则删除所述数据表中的重复数据。9.本发明提供的基于hadoop的分布式数据仓库的构建方法,还可以具有这样的技术特征,其中,所述数据服务层面向主题进行所述聚合,采用星型或雪花型的数据结构。10.本发明提供的基于hadoop的分布式数据仓库的构建方法,还可以具有这样的技术特征,其中,步骤s5中,采用mapreduce作为计算引擎进行所述分层处理。11.本发明提供的基于hadoop的分布式数据仓库的构建方法,还可以具有这样的技术特征,其中,步骤s2还包括:在所述分布式kafka的消息队列中创建两个主题topic,其中一个用于存放启动日志,另一个用于存放事件日志。12.本发明提供的基于hadoop的分布式数据仓库的构建方法,还可以具有这样的技术特征,其中,所述zookeeper集群包含有奇数个节点。13.本发明提供的基于hadoop的分布式数据仓库的构建方法,还可以具有这样的技术特征,还包括:步骤s6,将所述数据仓库中想要的数据导入到mysql中,从而便于用户进行查询或便于将所述数据提供给前端。14.发明作用与效果15.根据本发明的基于hadoop的分布式数据仓库的构建方法,其中,flume用于对目标数据进行采集,hive用于对采集得到的数据进行计算,从而形成离线的、分布式的数据仓库,zookeeper用于对数据仓库的各类组件进行协调服务,并且数据仓库基于预定的分层模型被分为了多层,因此,通过本发明的构建方法,能够基于hadoop文件系统搭建离线的、分布式的数据仓库,并且通过对数据仓库进行分层,能够将原始的杂乱无章的大量数据进行聚合整理,并可根据业务需要得到多个数据指标,从而能够使大型企业更方便、高效地对其海量数据进行有效的管理。附图说明16.图1是本发明实施例中基于hadoop的分布式数据仓库的构建方法的流程图;17.图2是本发明实施例中数据仓库分层模型的结构示意图。具体实施方式18.为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下结合实施例及附图对本发明的基于hadoop的分布式数据仓库的构建方法作具体阐述。19.《实施例》20.本实施例提供一种基于hadoop的分布式数据仓库的构建方法,用于基于服务器集群中存储的目标数据构建离线的、分布式的数据仓库。21.其中,服务器集群由四台刀片服务器组成,四台刀片服务器均连接至万兆交换机以及web服务器,通过交换机进行相互的数据通信,web服务器支持rtsp和http等协议集群,采用万兆网卡,用于为四台刀片服务器提供监控服务,在实验中监控数据的变化。服务器集群中可用于计算的cpu核数为24×4=96,内存资源为128gb×4=512gb,磁盘资源为10tb×4=40tb。22.主节点(即其中一个刀片服务器)的硬件配置需要开启的进行相比重节点要多,所以内存使用128gb大小,磁盘使用sata10gb,cpu选择市面上常见的cpu即可,本实施例中,cpu采用intel(r)xeon(r)cpue5-2620v2@2.10ghz。23.从节点的硬件配置为,内存采用ddr364gb的内存,磁盘和cpu同主节点一样,因为从节点相对而言不像主节点那么消耗资源,因此采用2颗cpu。24.此外,每台刀片服务器均设置有hadoophdfs文件系统。25.图1是本实施例中基于hadoop的分布式数据仓库的构建方法的流程图。26.如图1所示,基于上述设置,本实施例中,基于hadoop的分布式数据仓库的构建方法具体包括以下步骤:27.步骤s1,在存储有目标数据的服务器上搭建flume,用于对目标数据进行采集。28.本实施例中,目标数据为电子商务平台的运营数据,目标数据存储在其中一台刀片服务器的磁盘中,flume搭建在同一台刀片服务器上。搭建完成后,使用flume对磁盘上的目标数据进行采集,监听hadoop的9092端口,并在flume上编写两个拦截器,第一个拦截器用于拦截一些非法字段,第二个拦截器把收集得到的日志分别时间日志和启动日志。29.步骤s2,在多台服务器上搭建分布式kafka,用于接收flume采集的目标数据。30.本实施例中,在所有的刀片服务器上搭建分布式kafka,并在其消息队列中创建两个主题topic,分别用于存放flume发送来的目标数据及信息,其中一个用于存放启动日志,另一个用于存放事件日志。31.步骤s3,在其中一台服务器上搭建hive,用于对目标数据进行提取、转化以及加载,从而形成数据仓库。32.本实施例中,hive只搭建在其中一台刀片服务器上,使用这台刀片服务器把任务发送至各个节点上。33.步骤s4,在其中若干台服务器上搭建zookeeper集群,用于为数据仓库提供实时的协调服务。34.本实施例中,zookeeper集群包含有三个节点,也即zookeeper集群搭建在其中三台刀片服务器上。由于zookeeper集群要担任服务器集群的leader选举,若包含偶数个节点则可能因为投票数相同而无法选举出新的leader。35.此外,步骤s1-s4中,上述flume、kafka等相关组件均采用分布式的组件,以应对数据量大的情况。36.步骤s5,基于预定的分层模型对数据仓库进行分层处理。其中,采用mapreduce作为计算引擎进行分层。37.图2是本实施例中分层模型的结构示意图。38.如图2所示,本实施例中,采用的是四层分层模型,从最底层至最上层依次为原始数据层(ods层)、明细数据层(dwd层)、数据服务层(dws层)以及数据产品层(ads层)。39.其中,最底层为ods(operationaldatastore)层,是最接近初始数据的一层,一般是没有经过任何对数据的加工处理,保留原始数据最初的状态,目的是为了方便后面对数据的加工处理。本实施例中,原始的目标数据包括曝光日志、点击日志、交易日志等数据,其格式是一条上报到电子商务平台的json字符串,把这些原始的目标数据导入到数据仓库的ods层时,ods的表中就只有一个string类型的字段。40.ods层的上一层为dwd(datawarehousedetail)层,dwd层的数据应该是标准的、准确的、干净的数据。这一层的主要步骤一是进行数据标准化,在整个dwd层,电商所需要的表有用户表、交易表、商品表、活动表等多个数据表,各个数据表之间的关系用箭头进行表示。比如在用户表中,存储有评论id、加入购物车id、商品收藏id等,通过商品评论表、加购表、商品收藏表就可推断出某一用户在某个时间段商品评论了多少次,加购了多少次以及对某一商品收藏了多长时间等指标,还可以通过省份表,得知哪个省份的交易额是多少。具体地,本实施例中,利用udf(userdefinedfunction)函数或者udtf(usertablegeneratorfunction)函数将ods层中的数据标准化,生成评论表、商品交易表、商品点击表等多种表。然后,ods层将各个原系统的用于描述相同对象但取值不同的字段进行统一,比如:对于性别字段,有的源系统用0和1,有的源系统用man和women,可通过映射表将其统一命名为m和f。其次是删除重复数据,如果原系统中存在重复数据或者多个原系统维护了相同对象的数据,这时候就要根据保留规则,删除重复数据,只保留唯一的一条数据。最后是数据共存,将各个业务系统的数据进行拆分、合并、整合。例如相同的客户号,两个原系统都维护了这个客户的联系方式,这时候就要根据业务规则来选择保留哪那个原系统的值。41.dwd层的再上一层为dws(datawarehouseservice)层,这一层面向主题来进行数据的聚合,在数据的结构上通常采用星型或雪花型。本实施例中,根据商品点击表、商品评论表、商品交易表进行按天进行聚合操作,生成字段比较多的宽表,用于提供后续的业务查询,olap分析,数据分发等。从数据粒度来说,这层的数据是轻度汇总级的数据,已经不存在明细数据了。一般来说dw层有时和app层没有具体的分界线,dw层很大的一部分也是为了满足用户分析的需求。本实施例中,分别从用户表、交易表、商品表获取到用户id、订单id、商品id、商品分类、交易额等信息,通过相应的聚合汇总操作形成一张宽表。42.最上层为ads(applicationdataservice)层,这一层提供数据产品和数据分析使用的结果数据,从数据粒度来说是高度汇总的数据。从数据的广度来说,则并不一定会覆盖所有业务数据。从极端情况来说,可以为每一张报表在app层构建一个模型来支持,达到以空间换时间的目的。在这一层中,为了得到最后的指标,需要对dm层的宽表进行groupby、sum、count等聚合操作。在设计上,对每日交易额需要对金额字段进行sum,每日交易数需要对订单字段进行count操作、每日活跃人数需要对uid进行去重后进行count操作。除了上面提到的每日交易额、每日交易数以及每日活跃人数,还对商品曝光数、每类产品的交易额以及每个地区的交易额进行汇总。43.如上所述,通过步骤s5,将数据仓库进行了分层。44.步骤s6,将数据仓库中想要的数据导入到mysql中,从而便于用户进行查询或便于将数据提供给前端。45.本实施例中,将dw层(即包括上述的dwd层和dws层)或ads层中想要的数据导入到mysql中,便于用户进行查询。46.实施例作用与效果47.根据本实施例提供的基于hadoop的分布式数据仓库的构建方法,其中,flume用于对目标数据进行采集,hive用于对采集得到的数据进行计算,从而形成离线的、分布式的数据仓库,zookeeper用于对数据仓库的各类组件进行协调服务,并且数据仓库基于预定的分层模型被分为了多层,因此,通过本发明的构建方法,能够基于hadoop文件系统搭建离线的、分布式的数据仓库,并且通过对数据仓库进行分层,能够将原始的杂乱无章的大量数据进行聚合整理,并可根据业务需要得到多个数据指标,从而能够使大型企业更方便、高效地对其海量数据进行有效的管理。48.实施例中,在四台刀片服务器组成的服务器集群上构建了分布式的数据仓库,并根据电子商务平台的业务需求、基于预定的四层分层模型对数据仓库进行了分层,分为了ods层、dwd层、dws层以及ads层这四层,其中,dw层中有干净的、标准化的数据以及经过轻度聚合、汇总的数据,ads层中有高度汇总的数据,因此,能够满足多种不同的业务需求,提高大型企业对数据的管理和利用效率。此外,由于hadoop是现阶段开源的、集存储计算和资源高度为一体的大数据处理框架,因此,利用hadoop可以方便高效地对海量数据进行有效的处理,实施例中,电商平台可以在一天之内得到昨天所有数据的统计结果。49.上述实施例仅用于举例说明本发明的具体实施方式,而本发明不限于上述实施例的描述范围。50.在上述实施例中,目标数据存储在其中一台服务器的磁盘上,相应的,用于采集目标数据的flume搭建在同一台服务器上,在替代方案中,目标数据也可以存储在其中多台服务器上,相应地,flume搭建这些服务器,也能实用本发明的技术效果。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1