计算机本科毕业论文-基于大数据的用户行为日志系统设计与实现_第1页
计算机本科毕业论文-基于大数据的用户行为日志系统设计与实现_第2页
计算机本科毕业论文-基于大数据的用户行为日志系统设计与实现_第3页
计算机本科毕业论文-基于大数据的用户行为日志系统设计与实现_第4页
计算机本科毕业论文-基于大数据的用户行为日志系统设计与实现_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要针对用户行为日志,提出了一种基于大数据的用户行为日志系统的设计方案。该方案基于公司现有框架,对用户行为日志采集系统进行了重组,提出了高可靠性、高可用性的设计要求。Flume框架用于实时收集用户行为日志数据,ETL拦截器和Type拦截器用于过滤日志数据。通过优化参数配置,实现了多线程日志采集,提高了日志采集系统的可靠性和实用性。Kafka框架用于实时传输日志。通过优化生产者端、中间商端和消费者端,实现了消息传输的准确主语义,使系统的消息传输和存储更加稳定高效。Hive用于逐层构建数据仓库。通过分析用户主题的相关指标,为系统决策提供支持。实现数据可视化模块,为系统开发人员提供方便、准确的可视化服务。关键词:大数据;用户行为;Kafka框架;Hive;系统设计

相关概述随着时代的变化,网站的高效发展,已经存在于我们的生活之中,那么对于分析用户行日志已经成为每个网站必有的要求。企业的发展离不开决策,而决策又来自于数据,所以需要一套用户行为日志分析系统,对网页甚至各种各样的日志数据进行分析,分析后的数据都将是最好决策的基础。开发环境介绍1.Hadoop大数据平台提供了强大的存储以及计算等强大的功能,它是一个框架体系可以容纳各种所需要的插件以及软件,兼容性也是极好的,将可用的计算机集群分配数据,完成存储和计算任务,这些集群可以方便地扩展到数以千计的节点中,具有高扩展性。2.Hive是一个基于Hadoop的数仓工具,用来对数据进行ETL操作的,原理是将Hadoop存储的文件映射成一张数据库表,并切可以使用类似sql的语句进行操作,底层是将sql转发成mapreduce任务来执行,数据仓库的特征在于面向主题、集成性、稳定性和时变性。可以轻松帮助公司对海良数据进行分析处理。3.开发工具的是使用的idea编辑器,主要是其对用户非常友好,有智能代码提示,以及高效的插件处理。系统分析信息时代的快速发展,海量数据的处理与分析都在不断发展,让人们的生活也越来越智能越来越便捷,进随着时代的发展,特别是网页的高速发展,通过在网页上的点击我们也可以获取到更多的用户行为日志,国内的电商更是提出千人千面,而这些数据都来自人们多页面的点击、浏览时长,而对于网页的分析是非常广泛的,从最简单的来说访问者来自哪里,喜欢观看的页面是哪一个,不喜欢的是哪一个,通过大数据分析从而改善用户最长时间的停留在该页面,让访客更多的沉淀下来变成会员或客户,通过更少的投入获取最大化的收入。所以本课题就是应对用户行为日志的高效采集实现实时采集,通过Kafka对数据进行实时传输,在数据分层建模离线处理以及Etl操作以及最后进行展示。1.设计合理框架,对日志进行采集,进行前端埋点JavaScript采集,并使用Flume进行实时的采集。2.数据预处理,对采集到的数据进行处理,应对于采集时的一些空数据,脏数据进行处理。3.数据入库,将采集到的数据进行存入到数据仓库并进行相应的Etl操作。4.数据的展示,将数据处理完成后运用可视化工具进行图表展示。系统分析基本架构采用基于大数据平台Hadoop搭建大数据平台,某些网站每天将会产生大约50G的日志文件,分布在不同服务器中对于数据采集都是一种很难,将数据采集完成后的入库的处理也越显示出来一些局限行,当前设计架构基本可以满足以上需求。图2.1当前系统主要框架详细设计思路采用前端埋点采集,提高数据采集的实时行基于flume进行采集,实现对页面的实时采集,以及连续采集还可以通过之定义js采集,在网页中预先加入小段javascript代码,这个代码片段一般会动态创建一个script标签,并将src属性指向一个单独的js文件,此时这个单独的js文件(图中绿色节点)会被浏览器请求到并执行,这个js往往就是真正的数据收集脚本。通过Kafka进行数据的传输,提高数据的传输效率基于Kafka的数据传输优越性进行数据传输以及可以对数据进⾏分类也就是不同的topic,累加器相当于是⼀个缓冲区,这个缓冲区其实是⼀个HashMap其中Key是Topic加分区号的形式,Value是⼀个双端队列。之所以这⾥会使⽤双端队列原因是因为消息发送失败的时候会有⼀个重试的机制,如果消息没有发送成功会再次放⼊双端队列中之后会被再次发送,其次还有⼀个Send线程来管理每个区的⼤⼩,因为⽣产者底层是按照批次来进⾏数据发送的,这⾥的感觉就像是⼀个轮询,但是这样的描述也不是特别的准确,⾸先它在向双端队列⽅数据的时候会先做⼀下判断(判断这个数据是否已经达到这个批次)如果达到了就会通过Send线程就会将这⼀批数据发送出去,反之则继续等待。还有⼀种情况是按照时间来操作的,如果消息达到⼀定的时间以后回去检查⼀下有没有达到这个发送的批次阈值通过hive对数据进行etl处理,减少重复重复操作基于hive搭建数仓对数仓进行分层,减少重复重复操作,提高数据的复用率,规范每一层的开发。通过可视化工具进行展示,实时查看数据分析情况数据库数据表确认收集的信息:名称途径备注访问时间webserverNginx$msecIPwebserverNginx$remote_addr域名javascriptdocument.domainURLjavascriptdocument.URL页面标题javascriptdocument.title分辨率javascriptwindow.screen.height&width颜色深度javascriptwindow.screen.colorDepthReferrerjavascriptdocument.referrer技术选型本章主要说到此次系统开发过程中到的需要的一些技术,主要有flume采集技术,Kafka消息中间件技术、数仓技术以及hive技术,对于技术的应用是该系统成功的关键。数据采集Flume采集时作为当前实时以及离线采集中开源工具的顶流,它是一个结构简单、分布式的、高可用的、可靠的采集系统,主要结构为,Source、Channel和Sink三个组成部分,通过它可以实现实时采集中实时解析数据分析数据的应用。图3.1flume架构图1.Flume在1.7以后提供了⼀个TailDirSource⽤来⽀持多⽬录和断点续传功能。断点续传主要保证在服务器挂掉的情况下,再次启动服务数据不会丢失的问题。其原理就是在底层维护了⼀个offffset偏移量(也就是每次读取⽂件的偏移量)Flume会通过这个偏移量来找到上次⽂件读取的位置从⽽实现了断点续传的功能。2.Source简单来说就是采集源,用于跟数据源对接,以获取数据。3.Sink:下沉地,采集数据的传送目的,用于往下一级agent传递数据或者往最终存储系统传递数据。4.Channel:agent内部的数据传输通道,用于从source将数据传递到sink;在整个数据的传输的过程中,流动的是event,它是Flume内部数据传输的最基本单元。event将传输的数据进行封装。如果是文本文件,通常是一行记录,event也是事务的基本单位。event从source,流向channel,再到sink,本身为一个字节数组,并可携带headers(头信息)信息。event代表着一个数据的最小完整单元,从外部数据源来,向外部的目的地去。5.一个完整的event包括:eventheaders、eventbody、event信息,其中event信息就是flume收集到的日记记录。(1)Source介绍几种常用的sourceAvro

source:可以支持监听端口和IP。ThriftSource:跟Avro

source差不多但是不支持IP过滤,支持RPC协议。ExecSource:支持Linux命令。JMSSource:从jms消息队列获取消息。SpoolingDirectorySource:解析变更的数据可靠性极强。TaildirSource:可以监控多个文件,有变更就传输不适合Windows系统。KafkaSource:支持从Kafka指定的topic中读取数据。NetCatTCPSource:监听指定端口每一行文本都是一个event。(2)SinkSink是flume接收数据的容器,接收来自channel的数据,将数据写入Kafka或者其他数据库中。介绍几种常用的sinkLoggerSink

:记录info级别的数据HDFSSink:将数据写入HDFS中HIVESink:将数据写入HIVE中KAFKASink:将数据写入KAFKA中HBASESink:将数据写入HBASE中(3)ChannelChannel作为flume的管道接收source中的数据进行暂存,然后根据规则将数据发送到sink中。介绍几种常用的channelMemoryChannel:数据存入内存JDBCChannel:存储在持久化存储库中KAFKAChannel:存储在Kafka集群中FILEChannel:文本存储磁盘SpillableMemoryChannel:存储在内存队列和磁盘中FlumeChannelSelectors:如果类型没有指定,那么默认“replicating”CustomChannelSelector:一个自定义channel选择器(selector)是实现ChannelSelector的接口。消息中间件这次使用了Kafka作为消息中间件用来传输数据,之所以选中Kafka主要因为以下几点:1.对于海量数据的传输对于海量数据的传输首先要先了解Kafka的结构,结构图如下:图3.2Kafka结构图Kafka每次传输数据都将数据会有生产者将数据放入到broker里每个broker里又有topic,每个topic里又有partition,当数据进入时数据就会根据broker划分又会根据topic进行划分,Kafka将数据不断追加到本地磁盘文件末尾的,并不是随机读写的,这也导致了Kafka的高吞吐量特别高,但是这也有一个缺点就是不能删除数据,而Kafka也不会删除数据。2.对于跨机器传输数据,传输数据快。Kafka可以进行集群部署的依靠zookeeper是可以搭建Kafka分布式集群,这也是Kafka的特性之一。Kafka传输数据特别快从生产者来说,生产者发送数据是按照批进行发送的并不是一条一条数据进行发送的,还有一个就是最重要的零拷⻉技术的应⽤,零拷⻉其实是OS层⾯的⼀个技术,就是操作系统的PageCache利⽤这个操作系统的缓存⻚在加上调⽤操作系统的SendFile函数实现了对数据的处理提⾼了性能,所以采⽤零拷⻉技术之后就直接把进程之间的流拷⻉直接省略了,使⽤操作系统的Buffffer从⽽⼤幅的提升了性能,这也是Kafka特别快的原因。3.Kafka数据丢失。在Kafka的⽣产者将消息发送到Broker的过程可能会出现消息的重复或者丢失的情况,这个主要是靠ACK的配置来决定的。①Ack=-1:这种情况是不会丢失数据的,因为Broker包含Topic,Topic⼜包含Partition,⽽Partition⾥边还有副本,这⾥就会有Leader和Follower的概念,此时⽣产者发送消息后Leader会等待所有Follower的响应后才会向⽣产者响应,此时是不会丢失数据的,但是会有数据重复的问题这个问题可以在下游消费数据的时候进⾏处理⼀般都是采⽤去重的操作。②Ack=0:此时相当于是消息的异步发送,⽣产者发送消息以后不会等待Leader这边的任何响应,如果在发送消息后系统发⽣停电或者宕机此时是会丢失数据的但是这种机制的特点是效率特别⾼。③Ack=1:此时⽣产者会等待Leader响应,但是Leader响应的时间是在接受到数据后⽽不是所有的Follower成功后继续你那个响应,如果在Leader刚响应并且Follower没有来得及进⾏同步,此时服务器宕机也会丢失数据的。④Kafka的主要架构Producer是Kafka消息的生成者Consumer是Kafka消息的消费者ConsumerGroup是Kafka消费者组,可以并行消费Topic中的partition的消息Broker 缓存代理,Kafka集群中的一台或多台服务器统称broker。Topic是Kafka处理资源的消息源(feedsofmessages)的不同分类。Partition是Topic物理上的分组,一个topic可以分为多个Partition,每个Partition是一个有序的队列。Partition中每条消息都会被分配一个有序的Id(offset)。Message消息,是Kafka是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。hive对于大数据来说hive就是将Hadoop底层存储的文件映射成一张表,使用hsql来进行对文件处理,而hiveSQL底层是将SQL语句转化为MR程序进行计算的,计算资源调配是通过yarn来分配的,依赖于大数据Hadoop平台的数仓工具,可以轻松帮助公司对海良数据进行分析处理[]。Hive就是在Hadoop架构之上,分析查询数据方便,结构图如下:图3.3hive架构图JDBC为常见的连接驱动工具。解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。Hive的数据是存储在HDFS中的,大部分查询底层都是转换成mapreduce来完成的。Hive将元数据都存储在数据库中如MySQL中,hive中的元数据有表的名称,表的列、表的分区、表的属性、表数据所在的目录。Hive的metastore组件,包括两个部分metastore服务和后台数据的存储,后台数据库就是存储的介质就是关系型数据库,metastore服务是建立在后台数据库之上的,并且是可以和hive进行交互的服务组件,默认情况下是安装在一起的,运行在同一个进程里的,也可以将其分离开,让hive远程调用metastore服务,中间可以添加防火墙加强数据的安全性能,使用远程调用可以让服务进行不同进程之间运行,提高hive的稳定性,提升hive的服务效率,以及对数据的安全性。服务器选择服务器的选择是设计的一个重要部分,服务器的质量决定了应用程序的效率。可以使用阿里云或者其他云端来使用,一方面是使用简单而且其配置足够,另一方面搭建其环境方面简洁,选择我们想要的配置就可以了。系统实施分析首先对系统进行分析,分析用户行为日志系统整体要求极其最重要的基础,随着用户的的不断发展,当前系统应该是一个可以扩展的、可兼容的系统,对于数据量的不断提高,应对其的是一个可以高效采集、高效传输、高效存储、高效分析的用户行为日志系统,本章分析系统需求、设计目标、以及功能需求,为接下来的系统做足准备。实施分析分析实施是从平台到实际软件部署,以及软件的版本,开发当前系统的要求以及后期需求是否具备条件,以应对不同数据的要求,对后期对集群部署。技术实施近年来,在大数据行业的不断发展,技术的更新,让我们可以使用较为一般的服务器也可以搭建大数据平台,而且在众多公司里已经有搭建完成的系统,当前系统的可行性时具备的,硬件、软件、以及人员的可用性,当前用户行为日志系统都适合现在的使用。系统实施1.必须解决的系统问题:例如,公司管理问题和信息处理的解决方案。对公司提出的新的管理需求该如何满足等。2.认证体系的可行性研究应包括目标和计划的可行性、技术可行性、经济可行性和技术可行性。开发方法是静态系统分析和规划的方法之一。系统需求的详细分析。获取与登录系统、信息分类、信息检索系统等相关的功能。这些功能是相互关联的。这是必要的。通过对该公司的初步概述和外部分析,提出并讨论了可能的解决方案。3.我们必须考虑制定其他三种制度的法律和原则。换句话说,我们必须考虑发展行政参与制度。优化、创新、实用、高效、标准化的原则。选择系统开发方法和创建开发计划:选择系统中定义的开发。操作系统实施根据所选操作系统其对大数据平台实际的影响不大,而对应命令行比较使用的,比如Linux。而大多数情况下大数据平台的服务器都是Linux系统为主。根据所选机器型号搭配相应的系统,也可以选择在云端搭建大数据平台,快捷方便,迁移平台也很方便。需求分析功能需求分析随着业务的不断发展,日志规模也会越来越大,而将数据也会逐渐增多,所以当前系统的整体要求包括一下几点:1.前端埋点采集要求实时采集,实现对数据的实时传输,为系统基础构建数据结构,并对不同机器的日志文件进行采集。2.搭建消息中间件,构建全方位的数据传输通道,可以接收多数据源传递的数据,并对所传递的数据进行规则划分进行存储,保证数据消费时不会出现错误,保证数据的完整性以及高效率的传输。3.基于Hive技术对数仓进行分层,规范数据处理,减少对数据的重复处理,提高对数据的复用性。4.根据分析数据进行可视化展示以及报表展示,分析于用户主题相关信息,满足对离线数据的分析处理。5.实现实时处理数据并对数据进行可视化展示。本系统主要是通过在页面上采集数据通过flume对数据实时收集传输,采集到的数据发送到Kafka中,Kafka将数据传输到HDFS上或者使用spark对数据直接进行消费,进行实时数据处理,数据存储到HDFS上后通过映射成表到hive,使用hive技术进行数仓的分成搭建,根据需求对业务数据进行报表分析,实现对数据的展示存储等。软硬件环境1.硬件环境CPU:coreI7:硬盘空间:128G。内存:8G,安装Linux系统,安装nginx服务器、安装HAdoop、安装hive、安装kafka、安装flume、安装spark、安装可视化工具。2.软件环境大数据平台:CDH6.3.2开发工具:IEDA客户端:Linux系统设计与实现在通过对系统需求分析阶之后,本章将提出和完成对系统的设计与实现,大数据技术对应用户行为日志系统的各个具体步骤进行详细设计,并根据系统设计,完成三大模块,日志采集模块,数据传输模块以及数据入仓及可视化处理模块的设计与实现,对研究过程中的步骤进行说明。架构设计系统架构设计根据对需求分析之后,当前系统在于高效采集、高效传输、高效处理,而应对要求当前系统架构如图5-1所示:图5.1架构图功能模块设计功能设计根据功能分析和设计要求,将当前系统分为详细的模块配置,其四个核心时数据收集模块,数据传输模块以及数据处理模块和数据可视化模块,并对这些模块进行了详细说明。(1)数据收集模块:是通过使用flume在前端页面部署埋点采集,创建拦截器,根据需求对数据进行过滤,可跨多机器采集实现分布式采集程序。(2)数据传输模块,通过Kafka将收集到的数据进行收集、存储、传输,依据不同主题将数据放到主题中共消费者消费。(3)数据处理模块,通过对Hive进行分层将数据进行阶梯式处理,根据业务进行数据的处理工作。(4)数据可视化模块,根据已经计算的数据进行报表开发,将数据进行展示。模块功能模块功能各个模块之间相互连接相互关联,从用户页面点击到用户行为日志分析,以及最终的数据可视化展示,都可以在简单处理后进行快速相应。图5-2.2统功能模块图数据仓库数据仓库概念结构设计本课题通过对数据仓库[]的分层建模来完成用户的相应的可视化展示,主要以多维度建模多维度分析来实现。数据仓库的建模,一般采用雪花模型或者星形模型来进行建模,雪花模型是一张维表或多张维表进行关联而并没有与事实表连接,通过其他维表连接到事实表的就是雪花模型,使用程度不高,而星形模型是基于多张维表共同连接一张事实表叫做星形模型,在大数据领域更倾向于星形模型,因为星形模型维度少,效率比较高。事实表与维表发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中。从最低的粒度级别来看,事实表行对应一个度量事件,反之亦然。事实表表示对分析主题的度量。比如一次购买行为我们就可以理解为是一个事实。事实表的特征:表里没有存放实际的内容,他是一堆主键的集合,这些ID分别能对应到维度表中的一条记录。事实表包含了与各维度表相关联的外键,可与维度表关联。事实表的度量通常是数值类型,且记录数会不断增加,表数据规模迅速增长。维表每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然维度表行的描述环境应与事实表行完全对应。维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。维度表示你要对数据进行分析时所用的一个量,比如你要分析产品销售情况,可以选择按类别来进行分析,或按区域来分析。这样的分析就构成一个维度。上图中的用户表、商家表、时间表这些都属于维度表,这些表都有一个唯一的主键,然后在表中存放了详细的数据信息。总的说来,在数据仓库中不需要严格遵守规范化设计原则。因为数据仓库的主导功能就是面向分析,以查询为主,不涉及数据更新操作。事实表的设计是以能够正确记录历史信息为准则,维度表的设计是以能够以合适的角度来聚合主题内容为准则。基于Flume采集模块设计与实现针对前端埋点日志[]生成场景,通过flume1.7版本以后可以直接使用TaildirSource,进行数据收集,使用这个Source可以监控一个目录,并且使用正则表达式匹配该目录中的文件名进行实时收集。详细配置如下:a1.sources=r1a1.sources=r1a1.sources.r1.type=TAILDIRa1.sources.r1.channels=c1a1.sources.r1.positionFile=/var/log/flume/taildir_position.jsona1.sources.r1.filegroups=f1f2a1.sources.r1.filegroups.f1=/var/log/test1/example.loga1.sources.r1.filegroups.f2=/var/log/test2/.*log.*filegroups:指定filegroups,可以有多个,以空格分隔;(TailSource可以同时监控tail多个目录中的文件)positionFile:配置检查点文件的路径,检查点文件会以json格式保存已经tail文件的位置,解决了断点不能续传的缺陷。filegroups.<filegroupName>:配置每个filegroup的文件绝对路径,文件名可以用正则表达式匹配通过以上配置,就可以监控文件内容的增加和文件的增加。产生和所配置的文件名正则表达式不匹配的文件,则不会被tail。配置HDFSsink属性,基于文件闲置时间策略,当配置该属性后,在一定的时间里这个文件都没有内容写入,当关闭该文件进行滚动,到下一个文件写入。Flume采集系统的搭建相对简单[]:1、在服务器上部署agent节点,根据设计修改配置文件。2、启动agent节点,将采集到的数据汇聚到指定的Kafkatopic中。3、启动agent节点,将采集到的数据汇聚到指定的HDFS目录中。数据传输模块设计与实现Kafka作为一个分布式的消息中间件[],其特点是高吞吐、易扩展、持久化、兼容性强,主要是由Producer、Broker、Consumer三部分组成,生产者将接收到的数据推送至相应的Broker中,而消费者从对应的Broker中抽取订阅的数据。为防止Kafka丢失数据可以调整ACK机制,ACK有三个参数可调整:Ack=-1:这种情况是不会丢失数据的,因为Broker包含Topic,Topic⼜包含Partition,⽽Partition⾥边还有副本,这⾥就会有Leader和Follower的概念,此时⽣产者发送消息后Leader会等待所有Follower的响应后才会向⽣产者响应,此时是不会丢失数据的,但是会有数据重复的问题这个问题可以在下游消费数据的时候进⾏处理⼀般都是采⽤去重的操作。Ack=0:此时相当于是消息的异步发送,⽣产者发送消息以后不会等待Leader这边的任何响应,如果在发送消息后系统发⽣停电或者宕机此时是会丢失数据的但是这种机制的特点是效率特别⾼。Ack=1:此时⽣产者会等待Leader响应,但是Leader响应的时间是在接受到数据后⽽不是所有的Follower成功后继续你那个响应,如果在Leader刚响应并且Follower没有来得及进⾏同步,此时服务器宕机也会丢失数据的。也可以将Kafka的副本机制开启,调整为3个,这样也能保证数据不丢失。安装Kafka,从官网下载安装包进行安装,修改Kafka的配置文件,安装的是Kafka的集群所以每台服务器都要进行修改,配置文件修改如下:broker.id=0broker.id=0work.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=104857600log.dirs=/export/servers/kafka_2.11-1.0.0/logsnum.partitions=2num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=1transaction.state.log.replication.factor=1transaction.state.log.min.isr=1erval.messages=10000erval.ms=1000log.retention.hours=168log.segment.bytes=1073741824erval.ms=300000zookeeper.connect=node01:2181,node02:2181,node03:2181zookeeper.connection.timeout.ms=6000group.initial.rebalance.delay.ms=0delete.topic.enable==node01配置完成后启动Kafka集群,创建相对应的topic同时创建相应的副本以及分区相应命令如下:bin/kafka-topics.sh--create--zookeepernode01:2181--replication-factor2--partitions3--topictest数据预处理模块设计与实现数据入库,对入库后的数据进行ETL处理,而ETL就是抽取各个地方的数据,对抽取到的数据进行转换,并最终加载到hive中的过程称为ETL,本项目是加载与Hadoop之上的,对应hive的数仓技术,将数据加载到数仓中,应对后其数据的开发使用。Hive的安装,从官网上下载Hive安装包,安装解压并配置环境变量,安装MySQL数据库用来存储hive元数据,安装完成,验证Hive安装结果。在完成Hive的安装后对数据进行建模,首先对数据进行业务建模,通过对用户访问时间,新增用户,用户留存时间,用户点击页面等多维度进行业务分析建模,通过分析了解用户需求。数仓分层该课题对数仓分为四层:第一层为ODS层,原始数据层主要存储原始数据,这⼀层我们针对数据还做了分区,分区的维度是按照⽇期来进⾏的,这样可以保证以后在查询的过程中不需要进⾏全表的扫描就可以快速检索到数据,直接提升了数据查询的性能。第二层为DWD层,基础数据层这⼀层我们就需要对上⼀层的数据进⾏分解了,因为这⼀层的数据是需要对DWS层的⼀些指标计算来做服务的,所以我们对数据进⾏了⼀些粗粒度的分解。第三层为DWS层,数据汇总层这⼀层我们主要做了数据的预聚合,其实这⼀层的表经过上层的处理已经变得⾮常多,所以数据汇总非常重要。第四层为APP层,应用层这一层是这⼀层主要是⽤来存放我们计算的各种指标数据,特别是离线指标的数据我们都是通过脚本来进⾏调度的,计算完成后会导⼊app层做保存,然后导⼊到业务数据展示。数据可视化模块Echarts是百度技术部开发的,提供直观、生动、可定制化的可视化图表,提供了非常多的图表,在绘图前我们需要为ECharts准备一个具备高宽的DOM容器:<body><!--为ECharts准备一个具备大小(宽高)的DOM--><divid="main"style="width:600px;height:400px;"></div></body>然后就可以通过echarts.init方法初始化一个echarts实例并通过setOption方法生成一个简单的柱状图,下面是完整代码。<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>ECharts</title><!--引入echarts.js--><scriptsrc="echarts.min.js"></script></head><body><!--为ECharts准备一个具备大小(宽高)的Dom--><divid="main"style="width:600px;height:400px;"></div><scripttype="text/javascript">//基于准备好的dom,初始化echarts实例varmyChart=echarts.init(document.getElementById('main'));//指定图表的配置项和数据varoption={title:{text:'ECharts入门示例'},tooltip:{},mlegend:{data:['销量']},xAxis:{data:["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]},yAxis:{},series:[{name:'销量',type:'bar',data:[5,20,36,10,10,20]}]};//使用刚指定的配置项和数据显示图表。myChart.setOption(option);</script></body></html>就可以看到生成的柱状图。系统测试系统测试概述本章对系统进行最后测试,对日志采集模块、数据传输模块、数据预处理模块、可视化模块进行功能测试以及对测试结果进行分析,首先对应用程序进行测试,确保程序的运行没有问题,这也是测试的第一步,是确保测试流程成功的保证。测试环境测试系统的环境,根据服务器的规划以及系统架构对服务器进行测试,每个模块所对应服务所在的集群规模,以及服务器状态均为正常。功能测试被测试系统的功能,针对每个模块进行功能测试,Flume采集功能测试、Kafka数据传输功能测试、Hive数仓搭建以数据处理功能测试等相应的功能进行测试。测试结果测试功能测试步骤测试结果成功与否大数据平台Hadoop查看Hadoop角色是否启动成功查看HDFS角色是否启动成功查看是否可以上传文件到集群空间Hadoop角色启动成功HDFS角色启动成功文件上传成功成功Flume集群查看Flume启动角色是否启动查看Flume采集是否成功角色启动成功采集日志成功成功Kafka集群查看Kafka启动角色是否成功查看Kafka能否接收数据查看数据存入HDFS是否成功角色启动成功接收

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论