1.4 大数据项目需求分析与设计

您所在的位置:网站首页 大数据离线和实时分析哪个好 1.4 大数据项目需求分析与设计

1.4 大数据项目需求分析与设计

2024-05-31 05:26| 来源: 网络整理| 查看: 265

1.4 大数据项目需求分析与设计

本书将会以大数据项目为主线,技术理论与项目实践相结合,按照大数据项目的开发流程逐步推进,读者完成项目后,也就掌握了大数据开发必备的技能和项目经验。本节先讲解项目的需求分析、架构设计以及离线和实时数据流程设计,然后提前规划好大数据项目需要的集群,从下一章开始按照项目的实现逻辑,结合具体的技术组件详细讲解整个大数据项目的开发流程。

1.4.1 项目需求分析

需求分析作为软件工程的第一阶段是整个软件开发项目进行设计和实现的基础,决定了一个项目的成败。但是需求分析不能只看成一个独立的阶段,对需求的了解要贯穿整个项目的始终,了解需求的过程是一个逐步细化、逐步深入的过程,整个项目自始至终都需要与客户或用户进行交流。大数据项目需求是以数据为中心,在需求分析阶段就强调数据的分析一点也不为过。大数据项目的需求分析大体分为以下几个阶段。

场景需求分析

概念需求分析

细节需求分析

界面需求分析

接下来以新闻项目大数据实时分析案例来进行需求分析,具体需求如下。

采集搜狗新闻网站用户浏览的日志信息。

统计分析搜狗排名最高的前10名新闻话题。

统计分析每天哪些时段用户浏览新闻量最高。

统计分析每天曝光的搜狗新闻话题总量。

1.场景需求分析

场景需求分析阶段体现了系统的总体构思与设计,任务是了解系统的组织形式和功能需求概貌,解决“是什么”的问题。结合该项目案例的需求,满足实时计算场景,需要设计大数据实时分析系统,当然同时也可以设计离线分析系统。分析系统包含数据采集、数据存储、数据过滤清洗、数据统计分析以及数据可视化等结构,最终需要统计分析新闻话题排行榜、不同时段用户浏览量以及每天新闻话题总量。

2.概念需求分析

概念需求分析的任务是对系统中涉及的概念、数据内容等进行分析,解决“有什么”的问题。

该项目数据主要包含用户浏览新闻话题所产生的用户行为信息,主要以日志的形式写到日志服务器本地磁盘,具体日志格式如下所示。

数据格式由用户访问时间、用户ID、新闻话题、新闻URL在返回结果排名、用户点击的顺序号以及新闻话题URL组成。需要利用用户浏览日志数据统计分析相应的需求结果,数据需要经过以下流程。

1)数据采集:新闻日志数据落盘到日志服务器之后,可以利用Flume采集工具完成数据采集。

2)数据存储与交换:根据离线和实时应用场景,可以将采集的数据存储到HBase或Kafka。

3)数据计算:利用离线和实时计算框架完成对数据的统计分析,最后将结果输出到数据库。

4)数据可视化:对数据库中的数据进行可视化,完成数据大屏展示。

3.细节需求分析

细节需求分析具体实现用户需求,解决“怎么做”的问题。结合该项目案例,详细的需求分析包括采用怎样的大数据技术架构、详细的数据流程架构设计以及数据库设计等,这些内容将结合项目的具体实现在后续章节详细讲解。

4.界面需求分析

客户能否用好大数据系统最终决定项目的成败,良好的可视化界面也是不可忽视的。系统界面的好坏并不是追求界面的炫酷,而是根据可视化界面能否分析出有价值的信息,帮助决策者快速做出决策。在本书的项目中,最终的可视化界面要准确反映新闻话题排行榜,分析出不同时段用户浏览新闻量以及每天新闻话题总量,可视化系统的实现将在最后一章完成。

1.4.2 系统架构设计

一般情况下,完整的大数据平台架构包含数据获取、数据存储、资源管理、数据处理、交互式分析、机器学习与数据挖掘以及数据服务与可视化,但是一个具体项目的系统架构还需要根据具体的需求来确定。从新闻项目的需求可以看出,该项目不会涉及机器学习,因此可以对项目的系统架构做一些简化和整合,具体架构如图1-2所示。

图1-2 系统架构

系统架构从下至上,第1层是数据源,数据源一般主要有两种数据类型,一种是日志文件数据,另一种是关系型数据库数据。第2层是采集层,Flume用来采集日志文件数据,Sqoop用来采集关系型数据库中的数据。第3层是存储层,Flume实时采集数据写入Kafka,然后用于实时计算,Flume实时采集数据写入HBase,然后用于离线计算,无论实时计算还是离线计算,如果最终的结果数据集比较小,可以存入MySQL数据库,反之可以写入HBase数据库。第4层是计算层,MapReduce可以做离线计算,由于MapReduce模型不灵活,编程成本高,这里可以使用Hive集成HBase做离线计算,Flink或Spark可以消耗Kafka中的数据做实时计算,在生产环境中,MapReduce、Hive、Spark以及Flink等作业一般都运行在YARN集群中。第5层是服务层,主要提供查询服务接口、查询缓存等。第6层是应用层,无论是离线计算还是实时计算,最终结果可以通过应用层的HUE、达芬奇以及H5+Echarts等技术对数据进行可视化分析。在项目系统架构设计中,Zookeeper协调各个技术组件,IDEA基于Maven构建大数据项目进行业务代码的开发。

1.4.3 离线和实时计算数据流程设计

新闻项目既有离线计算需求也有实时计算需求,因此必须梳理出离线计算和实时计算的数据流程,因为项目的开发需要结合数据流程来实现。

在离线计算数据流程中,Flume实时采集日志服务器中的数据,然后写入HBase数据库,接着通过Hive与HBase集成对数据进行离线分析,并通过Sqoop工具将离线分析结果导入MySQL数据库,最后应用层读取MySQL数据实现大屏展示。离线计算数据流程如图1-3所示。

图1-3 离线计算数据流程

在实时计算数据流程中,Flume实时采集日志服务器中的数据,然后写入Kafka消息队列,接着可以通过Spark Streaming或Flink Data Stream对数据进行实时分析,实时分析结果可以写入MySQL数据库,最后应用层读取MySQL数据实现大屏展示。实时计算数据流程如图1-4所示。

1.4.4 大数据平台规划

大数据平台规划涉及硬件平台的搭建。在实际工作环境中,公司可以选择使用物理服务器、阿里云、腾讯云等不同的方式来搭建大数据平台。书中的实验环境需要准备hadoop01、hadoop02、hadoop03这3台Linux虚拟机来搭建大数据平台。项目中所需要的技术组件按照表格中的规划,分别安装在这3台虚拟机中,这样的实验环境较易于读者自行搭建。大数据技术组件与虚拟机节点的对应关系如表1-1所示。表格中的值为“是”代表当前节点需要安装该组件,如果为“否”则表示不需要安装该组件。

图1-4 实时计算数据流程

表1-1 技术组件与虚拟机节点的对应关系



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3