基于Hadoop技术的大数据分析系统的设计与实现_第1页
基于Hadoop技术的大数据分析系统的设计与实现_第2页
基于Hadoop技术的大数据分析系统的设计与实现_第3页
基于Hadoop技术的大数据分析系统的设计与实现_第4页
基于Hadoop技术的大数据分析系统的设计与实现_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

永磁同步电机双环调速系统的仿真研究基于Hadoop技术的大数据分析系统的设计与实现1概述大数据分析系统是一个专门用于分析大规模数据的系统,可以根据数据部门或决策者提供的指标将企业每日产生的数据进行汇总分析。之后反馈分析结果,让决策者可以清晰的看出每日企业的情况,也可以根据分析结果制定计划。若分析发现企业可能处于亚健康状态,决策者就可以根据情况制定策略以解决存在的问题,之后还可以继续观察,判断策略是否起到了应有的作用。整个大数据分析系统主要分为五个模块。数据采集,数据清洗,数据仓库,数据分析,数据可视化。数据采集模块用于将不同格式的数据上传到系统集群。因为无法获取到企业的真实数据,只好生成模拟数据,模拟数据是通过程序和数据库函数模拟电子商务公司每日用户数据格式生成,程序生成的数据包括用户登录产生的记录和用户点击商品产生的记录。数据库脚本生成用户行为数据,如下单、点赞、评论等。使用脚本模拟生成数据后,大数据分析系统会自动将数据上传,并且根据记录的格式进行分类。数据清洗模块用于将采集来的数据格式化。将不同格式的数据规范成同一种可以高效分析的格式,并且将数据中的敏感数据项剔除。这些敏感信息包括用户身份证、用户银行卡号、用户手机号等。数据仓库模块是将数据分层存储。数据分层可以高效的管理我们的数据,也可以将数据复用,减少重复工作。第一层是原始数据层,存放格式统一的数据。第二层是明细数据层,存放数据清洗后的数据。第三层是服务数据层,存放轻度汇总后的数据。第四层是数据应用层,存放根据指标分析出的结果。数据分析模块是数据仓库中的数据分析与挖掘,提取数据的价值。根据指标要制定的不同的数据分析方法,并不断优化分析策略。数据分析是每天都要进行的,所以大数据分析系统会使用脚本自动化工具,每天定时自动执行数据分析脚本,减少人力物力。数据可视化是将分析结果美观清晰的呈现,让决策者可以一眼看出数据的趋势。大数据分析系统使用各式各样的图表,包括柱状图、折线图、扇形图等。选取合适的图表能够更直观的体现出数据分析结果。2课题研究背景与意义2.1课题研究背景随着时代的发展,企业产生的数据量越来越大,数据格式越来越复杂,一般手段已经难以高效稳定进行大数据量的处理和分析。搭建一个大数据分析系统可以很好的解决现如今存在的问题,如数据激增、数据格式复杂与分析效率低等。所以搭建大数据分析系统会是未来大多数公司的一项关键基础设施。2.2课题研究意义使用大数据分析系统相比传统数据分析有以下优势:a)数据规模更大。互联网用户越来越多,每天产生的数据也越来越多。以前一家互联网公司一个月可能产生100GB的数据,而现在一天产生的数据大小就能达到这个值。当对几个月甚至几年的数据进行分析时,数据量可能就会达到PT级别。传统的数据分析是无法处理这么大规模的数据的,只能将数据分组统计。如果使用大数据分析系统,就可以轻松处理大规模的数据,而无需对数据进行其他操作,越多的操作,也就容易发生错误。b)数据分析速度更快。传统的数据分析如果对1TB的数据进行分析,大概需要2到3个小时,而使用大数据分析系统,只要你根据数据量,合理的配置了大数据集群,那么处理相同的数据,大数据系统只需要5到10分钟的时间。如果集群的性能足够优秀,那么这个时间可能更短。c)可处理的数据格式更多。大数据分析系统,使用Hive可以读取很多种数据格式。他将会根据配置参数,决定该选择哪种方式读取数据,并转换成自己指定的格式。而传统的数据分析只能处理普通文件和格式化的数据,转为成一种数据格式。公司如果业务复杂,那么传统分析肯定是无法满足数据分析的需求的。3大数据分析系统可行性研究3.1技术可行性研究大数据分析系统使用开源的Hadoop大数据计算框架,使用Flume与Kafka构建数据采集通道,使用Hive搭建分层数据仓库,关系数据库使用MySQL,数据展示使用SpringBoot、Mybatis与ECharts实现。Hadoop是一项成熟的大数据框架,已经经过10年的发展迭代,拥有完善的社区和丰富的说明手册。Hadoop由HDFS、YARN与MapReduce共同组成,分别作为文件存储系统、任务调度系统与计算系统。经过时间的检验,HDFS与YARN可以很优秀的处理大数据分析,而MapReduce由于其设计思想导致MR次数过多,导致效率较低,所以大数据分析系统使用TEZ计算引擎。TEZ会将YARN调度来的任务再次分析,找到多余的不必要的MR,大大减少了MR次数,缩短计算用时。Flume与Kafka用于搭建双Flume采集通道。Flume可以将多个服务器的数据采集到Kafka,然后再由Flume消费Kafka中的数据,存储于HDFS。使用两层Flume,一是因为Flume可以采集多种格式的数据,二是为了将数据分类采集。Flume与Kafka也是十分成熟的技术,而且官方文档详细,易于使用。Hive是Hadoop的数据仓库工具,能够实现数据的提前、转换、加载,是一种专门处理存储于Hadoop中大规模数据的软件。Hive学习成本低,使用类SQL语法,与Mysql语法基本相同,只是多了一些限制与方法。在数据分析方面更易于编写出高效的HQL。数据可视化模块使用当前企业流行使用的SpringBoot+Mybatis。SpringBoot相比Spring更加快速。它使用了大量的自动配置类,让我可以快速的搭建一个web项目,而不需要填写大量的配置。Mybatis是一个轻量级的ORM框架,用法简单,只需要建立好对象与数据库表之间的关系,再根据需求编写SQL语句,就能快速的对数据进行增删改查。3.2操作可行性研究大数据分析系统搭建在3台虚拟机上,可视化程序部署与阿里云服务器。虚拟机已经配置了路由,外网可发现虚拟机。分析人员可以使用ssh软件连接虚拟机编写HQL语句,配置自动化脚本,完成数据分析。决策者可以通过常用浏览器观察到数据分析的结果。4大数据分析系统需求分析通过查阅相关大数据文档与数据,了解到大数据分析系统需要如下功能,可分为五个方面。4.1数据采集模块数据采集需要保证数据能够快速不丢失的传送到大数据服务器,并且根据数据类型存储为不同文件将多个虚拟机下的日志采集到HDFS中;将MySQL中的业务数据采集到HDFS中;筛选数据,存储在不同的路径上。图4-1日志采集需求图4.2数据清洗数据清洗模块需要将采集来的数据根据要求进行处理。将数据转化为格式一致,易于分析的数据。去除无效数据段;数据脱敏;格式转换。图4-2数据清洗图4.3数据仓库数据仓库做分层设计,分为ODS、DWD、DWS、ADS四层,分别存储不同格式不同用途的数据。大数据分析系统通过Hive可以搭建分层的数据仓库,Hive将数据模拟成表的形式,这样就能轻易的使用类SQL语法进行数据处理。ODS原始数据层,存放原始数据,直接加载日志与业务数据,保持原始的数据格式;DWD结构与粒度和原始表完全相同,对ODS数据进行清洗(去除空值、脏数据);DWS以DWD为基础,将数据进行轻度汇总;ADS存放分析结果,为各种统计报表提供数据。图4-3数据仓库搭建图4.4数据分析数据分析要针对数据仓库中的数据,将原始的数据一层层的转化,最终得出分析结果。日志数据分析:分析每日服务器产生的日志,统计用户活跃度。业务数据分析:分析业务数据,统计商品信息和转化率。综合分析:结合两者对用户行为进行分析。图4-4数据分析需求图4.5数据可视化大数据分析系统需要搭建一个能展示数据分析结果的可视化平台,决策者可以通过平台上的各种数据表,了解公司的运转状况。还能知晓决策的实行是否起到预期的影响。可视化平台需将数据仓库ADS层中的分析结果导出到Mysql,再由系统从MySQL中读取,将数据渲染到页面上。可视化平台需要展示如下信息:对分析用户每日产生日志得出的结果,用柱状图、扇形图与折现图展示;对分析用户业务数据得出的结果,用漏斗图和折线图展示图4-5数据可视化需求图5大数据分析系统概要设计大数据分析系统用于解决企业大规模数据的存储与分析。本系统使用Hadoop大数据框架,Hadoop是原始数据仓库的技术替代,可建立在廉价的服务器上,对硬件的需求不是很高。系统架构如图5-1所示:Sqoop、Flume进行数据采集;Hadoop用于数据存储与计算;Hive搭建数据仓库;Echarts将数据可视化。图5-1系统架构图5.1Hadoop架构5.1.1Hadoop与数据仓库ApacheHadoop是一个大数据框架,该框架将使用简单的编程模型跨整个计算机集群对大规模数据集进行分布式处理。它能够从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。Hadoop本身不依靠硬件来提供高可用性,而是使用第二节点来保证高可用,因此计算机集群的某台设备发生故障不会导致整个系统的崩溃。图5-2Hadoop架构图Hadoop架构如图5-2所示,hadoop是套大数据框架包含大量的大数据解决方案,大数据分析系统将使用其中的ZooKeeper、HDFS、YARN、Flume、Sqoop、Hive、Tez。传统的数据仓库与Hadoop的差别如图5-3所示。图5-3Hadoop与数据仓库差异图由图可以看出,Hadoop可以轻松的扩展集群,当数据激增,处理速度不足时,可以快速的扩展集群,以满足需求。在数据量方面Hadoop支持10PB以上的数据,而数据仓库只能支持不大于5PB的数据量,在如今是远远达不到要求的。在数据类型方面,Hadoop能够支持多种格式的数据。5.1.2HDFS文件系统Hadoop分布式文件系统(HDFS)是一种旨在可以在廉价机器硬件上运行的分布式文件系统。它与现如今的分布式文件系统有许多共同之处。但是,与其他分布式文件系统的差别也很多。HDFS具有高度的容错能力,旨在能够在低成本硬件上部署。HDFS提供对应用程序数据的高吞吐量访问,并且适用于具有大规模数据集的应用程序。HDFS放宽了一些POSIX要求,可以实现对文件系统数据的流式读取。HDFS最初是作为ApacheNutchWeb搜索引擎项目的基础结构而构建的。HDFS是ApacheHadoop核心项目的重要组成部分。图5-4HDFS架构图HDFS是的主从体系结构得。HDFS群集由单个NameNode和多个DataNode组成。NameNode用于存储数据的元数据,指向文件存储在哪个DataNode。许多数据节点,通常是集群中每个节点一个,用于管理与它们所运行的节点相连的存储。在内部,文件根据大小和配置的参数被分成一个或多个块,这些块存储在许多DataNode中。NameNode能确定块到DataNode的映射,这样我们就能知道一个文件被放在了哪些节点上。数据节点负责处理来自文件系统客户端的读写请求。DataNode还根据NameNode的发送的指令执行块创建,删除和复制等操作。5.1.3YARN数据计算框架ResourceManager和NodeManager共同组成数据计算框架。ResourceManager是在系统中所有应用程序之间仲裁资源的最终权限。NodeManager是每台机器的框架代理,负责容器,监视其资源使用情况(cpu,内存,磁盘,网络),并将其报告给ResourceManager。ApplicationMaster是任务提交后发起的,任务被认领后,认领该任务的节点创建ApplicationMaster。Container是对每个节点上资源的抽象,ResourceManager以Container的形式将资源分配给NodeManager,当资源充足后,任务还是执行。图5-5YARN架构图5.1.4TEZ计算引擎MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)"。Tez是Apache开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分。使用Tez是因为MapReduce在执行某些任务时性能较低,Tez支持DAG作业可以减少任务中的MR次数,而MR次数越高,性能越低。由图5-6可以看出未使用Tez,而使用MR,整个作业过程会有四个作业过程。而使用了Tez只会有一次MR。图5-6Tez与MR对比图5.2数据采集模块5.2.1采集通道架构图5-6数据采集通道架构图数据采集通道是使用双层Flume架构,由第一层Flume将日志从多个服务器采集到Kafka中,再由第二层Flume采集Kafka中的记录到HDFS中。其中Kafka用于解决数据压力过大的情况,可以根据数据的压力,调整Flume与Kafka的配置,以防止阻塞。数据库MySQL中的业务数据由sqoop导入,因为数据持久化存储在数据库中,所以可以直接采集到HDFS。5.2.2Flume图5-7Flume架构图ApacheFlume是一个分布式的、高可用的系统,它可以有效地收集、聚合和移动大量的日志数据,这些数据可以从许多不同的来源转移到一个集中的数据存储中。第一层Flume左边对接文件,所以source选择TailDirSource,可以支持文件断点续传功能,右边对接Kafka,所以选择KafkaChannel,可以省去sink环节,加快采集速度。第二层Flume左边对接kafka,所以选择KafkaSource,右边对接HDFS,所以使用HDFSSink,就可以对接到Hadoop文件系统。5.2.3KafkaKafka是一个基于生产者消费者模式的分布式流媒体平台,生产者将数据放入Kafka中的Topic,消费者再从Topic中获取数据。图5-8Kafka概念图为保证producer发送的数据,能可靠的发送到指定的topic,topic的每个partition收到producer发送的数据后,都需要向producer发送ack(acknowledgement确认收到),如果producer收到ack,就会进行下一轮的发送,否则重新发送数据。图5-8KafkaTopic图5.2.3SqoopSqoop是一种目的在Hadoop数据库或大型计算机集群之间传输数据的工具。您可以使用Sqoop将数据从MySQL或Oracle等关系数据库管理系统(RDBMS)或大型机导入Hadoop分布式文件系统(HDFS),在HadoopMapReduce中转换数据,然后将数据导出到RDBMS。Sqoop依靠数据库描述要导入的数据的方式来自动执行此过程。Sqoop使用MapReduce导入和导出数据,这提供了并行操作以及容错能力。图5-9Sqoop传输数据图5.3数据清洗模块数据清洗环节主要需要对采集来的原始数据进行处理。格式转换;去除脏数据;数据脱敏。大数据分析系统使用自定义UDF与UDTF函数和HiveETL拦截器来完成这些需求。图5-10Sqoop传输数据图5.4数据仓库模块考虑要用分层的数据仓库是因为分解复杂的分析流程;隔离原始数据;减少重复开发。图5-11数据仓库图5.5数据分析模块图5-12Hive流程图图5-13数据仓库图Hive通过给用户提供的一系列交互接口,接收到用户的类SQL语句,调用系统的Driver,结合MetaStore,将这些指令翻译成MapReduce程序,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。5.6数据可视化模块大数据分析系统使用如今非常流行的SpringBoot+Mybatis架构搭建可视化平台。使用ECharts提供图表支持。图5-14数据仓库图5.6.1SpringBoot图5-15SpringBoot架构图图5-14是借鉴《SpringBoot实战开发》这一本书籍,这张架构图清晰的说明了使用SpringBoot搭建的web系统是如何搭建的。使用SpringBoot的原因是因为它非常大的简化了传统Spring搭建后台的步骤,不再需要配置大量的配置文件,也不需要创建web服务器,只需要完成初始化操作,便可以很快的将项目搭建起来。SpringBoot可以引入Web装置,将使用SpringMVC处理请求。SpringMVC遵循MVC设计模式。识别url找到处理该请求的controller,然后再调用controller返回ModelAndView,最终通过ViewResolver将数据发送到前端渲染。5.6.2MybatisMybatis是一个轻量级的持久化框架,也是一款优秀的持久层框架。它支持自定义SQL、存储过程以及高级映射。MyBatis几乎不用写所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以使用简单的XML或注解来配置和映射原始类型、接口和JavaPOJO(PlainOldJavaObjects,普通老式Java对象)为数据库中的记录。数据库数据库MyBatis框架应用程序编程接口java数据库连接应用程序mapper.xmlmybatis.xml图5-16MyBatis框架工作原理示意图6学生考勤系统的具体实现6.1搭建Hadoop集群大数据分析系统选取的技术,已经在概要设计部分说明了选取的原因,这里就不做详细阐述了。大数据分析系统针对企业产生的业务数据和每日服务器产生的日志进行分析。这些数据首先通过数据采集,将数据存储于HDFS,在采集过程中进行数据清洗,保证在Hadoop文件系统的数据保持相同的数据结构。然后使用Hive搭建分层的数据仓库,并根据指标进行数据分析,最后使用Sqoop将分析结果传到MySQL,数据可视化平台查询数据展示。图6-1系统架构图表6-1展示了集群中三台虚拟机各自需要启动的服务。NameNode启动在部署在固态硬盘的hadoop102中提高读取元数据的速度。Yarn、Zookeeper、Kafka均匀分配在三台服务器,其余软件都部署在Hadoop102中充分利用服务器资源。表6-1集群节点分布服务名称子服务服务器hadoop102服务器hadoop103服务器hadoop104HDFSNameNode√DataNode√√√SecondaryNameNode√YarnNodeManager√√√Resourcemanager√ZookeeperZookeeperServer√√√续表6-1服务名称子服务服务器hadoop102服务器hadoop103服务器hadoop104Flume(采集日志)Flume√√KafkaKafka√√√Flume(消费Kafka)Flume√HiveHive√MySQLMySQL√SqoopSqoop√AzkabanAzkabanWebServer√AzkabanExecutorServer√服务数总计1166虚拟机环境准备克隆虚拟机;修改克隆虚拟机的静态IP;修改主机名;关闭防火墙;创建用户;配置用户具有管理员权限。6.1.1部署完全分布式集群安装JDK8,配置环境变量;将hadoop安装包解压,配置环境变量;配置ssh,实现免密访问;重新设置core-site.xml、slaves、hadoop-env.sh、yarn.env.sh、hdfs-site.xml、yarn-site.xml配置文件。6.1.2启动集群因为集群是第一次启动,需要格式化NameNode。输入jps指令,查看是否存在NameNode进程。继续启动HDFS,同样要先看看是否存在进程,然后在启动yarn,检查进程。Web端查看SecondaryNameNode,浏览器中输入:http://hadoop102:50070/dfshealth.html若发现集群状态正常,则进行简单的文件上传、文件下载、文件删除、文件移动等测试操作。6.1.3集群时间同步时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。检查ntp是否安装;修改ntp配置文件;修改/etc/sysconfig/ntpd文件;重新启动ntpd服务;设置ntpd服务开机启动;在其他机器配置10分钟与时间服务器同步一次;修改机器时间与网络时间一致。集群参数优化HDFS参数调优node.handler.count=20*log2(ClusterSize),比如集群规模为8台时,此参数设置为60。Hadoop文档原文如下。ThenumberofNamenodeRPCserverthreadsthatlistentorequestsfromclients.Ifnode.servicerpc-addressisnotconfiguredthenNamenodeRPCserverthreadslistentorequestsfromallnodes. 编辑日志存储路径node.edits.dir设置与镜像文件存储路径.dir尽量分开,达到最低写入延迟YARN参数调优yarn-site.xml内存利用率不够。这个一般是Yarn的2个配置造成的,单个任务可以申请的最大内存大小,和Hadoop单个节点可用内存大小。调节这两个参数能提高系统内存的利用率。yarn.nodemanager.resource.memory-mb表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。yarn.scheduler.maximum-allocation-mb单个任务可申请的最多物理内存量,默认是8192(MB)。Hadoop宕机(1)如果MR造成系统宕机。此时要控制Yarn同时运行的任务数,和每个任务申请的最大内存。调整参数:yarn.scheduler.maximum-allocation-mb(单个任务可申请的最多物理内存量,默认是8192MB)(2)如果写入文件过量造成NameNode宕机。那么调高Kafka的存储大小,控制从Kafka到HDFS的写入速度。高峰期的时候用Kafka进行缓存,高峰期过去数据同步会自动跟上。6.2数据采集6.2.1安装flume与kafka将flume安装包发送到虚拟机hadoop102中,解压配置环境变量;安装ganglia检测图;图6-2ganglia检测图Kafka将被安装在三台虚拟机上,步骤如下:解压安装包,配置环境变量;进入解压路径,创建logs文件夹;修改配置文件;启动创建topic;安装KafkaManager,用于监控Kafka状态。日志中会有用户登录信息和用户行为信息,所以需要将数据按类型分别存储。才用flume采集数据到kafka的过程中,按照数据的类型将数据分为两类。如果数据中含有start字段,那么就会被放入topic_start,否则会被放入topic_event。消费flume直接可以对接两种topic,分别存放在HDFS上,按照对应的topic名称命名数据。图6-3消费flume图6.2.2日志数据格式日志分为启动日志与事件日志启动日志包括公共字段加上启动事件字段。{ "action":"1", "ar":"MX", "ba":"HTC", "detail":"", "en":"start", "extend1":"", "g":"1L4M6J4F@", "hw":"640*1136", "l":"en", "la":"-37.0", "ln":"-100.3", "md":"HTC-19", "mid":"997", "nw":"4G", "open_ad_type":"2", "os":"8.1.7", "sv":"V2.9.1", "t":"1571584659764", "uid":"997"}事件日志包括服务器日志生成事件拼接上公共字段与业务字段的集合。1571610294526|{ "cm":{ "ln":"-103.3", "sv":"V2.9.9", "os":"8.2.8", "g":"JZAAPFRB@", "mid":"998", "nw":"3G", "l":"es", "vc":"12", "hw":"640*1136", "ar":"MX", "uid":"998", "t":"1571595416753", "la":"2.0", "md":"Huawei-8", "vn":"1.3.4", "ba":"Huawei", "sr":"G" }, "ap":"app", "et":[{ "ett":"1571521545937", "en":"newsdetail", "kv":{ "entry":"1", "goodsid":"211", "news_staytime":"12", "loading_time":"4", "action":"4", "showtype":"5", "category":"10", "type1":"" } }, { "ett":"1571545318283", "en":"loading", "kv":{ "extend2":"", "loading_time":"6", "action":"1", "extend1":"", "type":"1", "type1":"325", "loading_way":"1" } }]数据清洗大数据分析系统中自定义了两个拦截器,分别是:ETL拦截器、日志类型区分拦截器。ETL拦截器主要用于,过滤时间戳不合法和Json数据不完整的日志,并对敏感数据加密。日志类型区分拦截器主要用于,将启动日志和事件日志区分开来,方便发往Kafka的不同Topic。创建maven工程;引入flume相关jar包;编写拦截器类,LogTypeInterceptor和LogETLInterceptor;打包放入flume的lib文件夹。图6-4数据清洗图数据仓库首先需要安装Hive:解压安装包,配置环境变量;配置hive-env.sh;修改hive内置数据库为MySQL数据库,将元数据存储与MySQL中;使用Tez作为Hive的计算引擎。接下来使用Hive搭建数据仓库,图6-5画出了所有表的层级。图6-5数据仓库总览图数据分析图6-6数据分析关系图一般指标可以使用内置函数如date_format、date_add、explode、collect_set等UDF和UDTF函数解决。但是有些分析指标不能或使用内置的函数难以解决,那么就需要自定义UDF与UDTF函数。图6-7自定义UDF函数图图6-8自定义UDTF函数图图6-9描绘了系统业务各关系表之间的关系,大数据分析系统不仅需要分析每日的服务器日志,还需要对企业业务数据进行分析。图6-9企业系统业务表关系图对业务数据进行分析时,由于业务数据都存储与关系型数据库之中,所以表与表之间关系紧密。但是在数据分析时,如果一次分析需要涉及多张表的join操作会大大影响性能。所以需要先将多张表制成宽表。6.4.1ODS将HDFS中的日志数据以日分区导入Hive,只含有一个字段及每一行日志数据。得到原始数据启动表与原始数据事件表。将HDFS中的MySQL业务数据按表的种类导入到Hive。图6-10表的分类与同步策略6.3.2DWD解析启动日志原始数据表,解析每一个字段。自定义UDF函数与UDTF函数解析原始事件表的公共字段与事件集合字段,将每一条数组,转化为公共字段加上事件类型和事件详情JSON的形式。接着根据不同的事件类型解析事件详情JSON,形成多张事件表。将商品表与三级种类表降维成一张商品详情表,其他业务数据表结构不变。图6-11解析原始事件表6.4.3DWS用户行为方面:根据指标对DWD层的启动表与事件表进行汇总,为ADS层做好数据准备。主要统计出日活用户明细、周活用户明细与月活用户明细。由于要分析用户新增、留存、流失等相关指标,所以还需要统计出每日新增用户明细与各时间段留存用户明细。图6-12DWS层用户行为汇总业务数据方面:业务数据需要建立用户行为宽表和用户购买商品明细宽表,减少分析指标时的JOIN操作。这里创建宽表没有使用JOIN方式而采用了零时表加UNIONALL,业务左右两表数据量都相当大,使用JOIN会十分损耗性能。图6-13DWS层用户行为宽表6.4.3ADS开始分析用于辅助决策的指标,使用将根据各业务需求,编写分析SQL,由Hive执行后将数据保存在本层。用户活跃与新增主题用户活跃数:根据DWS汇总完的年月日活跃用户数,计算出每天对应的年月日活跃用户的数量,并判断当天是否为周末或月末。图6-14每日活跃用户数量表新增用户数:直接计算DWS层每日新增用户明细表的今日新增用户数量放入每日新增用户数量表。用户留存率:首先从留存用户明细表中计算留存用户数量,然后除以用户创建当天的用户新增数,得到留存比率。流失用户数:最近7天未活跃的用户。从每日活跃用户明细表中得到最大活跃日期在7天前的用户,计算出总数量。7天至少连续活跃三天的用户数:首先从每日活跃用户明细表中,查出最近7天活跃的用户记录,并以用户Id分组对活跃时间排名,然后用活跃时间减去排名,得到的差值数相同则代表连续活跃,最后筛选就算出差值相同次数大于3次的用户数,因为可能出现重复问题,最后根据用户Id进行分组去重。图6-157天至少连续活跃三天的用户数系统业务主题:用户行为漏斗分析:每日下单数占访问数的比率与每日支付数占下单数的比率。首先从用户行为宽表中计算出下单用户数与支付用户数(用户支付与下单次数大于0,代表用户当日下单过或支付过),最后连接用户活跃表得出比率。图6-16用户行为漏斗分析GMV:一定时间段的成交总额,包括为已支付订单与未支付订单。对用户行为宽表求和计算出订单总次数与总金额。品牌复购率:各个品牌的各一级分类商品复购率。图6-17品牌复购率6.6数据可视化大数据分析系统将展示五种分析结果,将使用不同的图表展示。用户活跃使用折线图;用户留存率使用表格的形式;商品转化率使用漏斗图地区销量使用地图;GMV使用折线图加上柱状图。7预期效果大数据分析系统所有需求全部开发完成,效果图片如下。7.1Hadoop集群图7-1是Hadoop内置的管理系统,通过50070端口,可以访问Hadoop后台系统,查看系统运行状态。由LiveNodes发现大数据分析系统三台子节点运行正常,且没有死亡几点,三台节点都成功注册到Hadoop集群中。管理员可以通过在脚本中执行任何方式的检查来确定节点是否处于健康状态。如果脚本检测到该节点处于不正常状态,则它必须以标准字符串ERROR开始打印一行错误信息到控制台输出。NodeManager会定期生成脚本并检查其输出。如上所述,如果脚本的输出包含字符串ERROR,则该节点的状态报告为不正常,并且ResourceManager将其列入黑名单。不会再将其他任务分配到该节点。但是,NodeManager会继续运行该脚本,因此,如果该节点再次恢复正常,则它将自动从ResourceManager的黑名单节点中删除。节点的运行状况以及脚本的输出(如果运行状况不正常)对于管理员在ResourceManagerWeb界面是可见的。Web界面上还显示自节点运行状况良好以来的时间。图7-1集群状况总览图图7-2是HDFS文件系统,可以看出HDFS运行正常。origin_data存放采集来的原始信息,warehouse存放着数据仓库内的数据,其中包含四层数据,tez存储着计算任务的状态和tag图。图7-2HDFS文件系统图7.2数据可视化7.2.1用户活跃用折线图展示每日活跃人数。图7-3每日用户活跃数图每周活跃人数,展示七天活跃过的用户数。图7-4每周用户活跃数图每月活跃人数,展示每月活跃过的用户数。图7-5每月用户活跃数图7.2.2用户留存率图7-6是用户留存率图,展示了每日的新增用户,并且在之后的一到七天内是否重新登录,得出用户的留存率。图7-6用户留存率图7.2.3商品转化率漏斗图展示了浏览商品的次数到下单的数量再到支付的数量,之间的转换关系。通过计算的出三者之间转化的比率。图7-7商品转化漏斗图7.2.4地区销量图7-8直观的显示了每个地区的商品销量,可以通过颜色辨别出每个省购买商品次数,分为6个级别。当鼠标悬浮时还可以展示该省各个市购买商品在该省所占的比率。图7-8地区商品销量图7.2.5GMVGMV图使用折线图加柱状图相结合的方式。折线展示总订单数量,柱体表示总销售额。图7-9GMV统计图8结束语经过大四下整个学期的开发设计,大数据分析系统已全部开发完毕。该大数据分析系统的设计开发能够高效分析企

温馨提示

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

评论

0/150

提交评论