# 电商大数据实战(Canal+Kafka+Storm+Redis+Web) **Repository Path**: chen-songhui/Real-time-computing ## Basic Information - **Project Name**: 电商大数据实战(Canal+Kafka+Storm+Redis+Web) - **Description**: 实时计算大作业项目,通过数据生成模拟器生成数据存入MySQL,使用Canal+Kafka+Storm+Redis+Web(flask+echarts+web)框架,构建大数据实时看板 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 2 - **Created**: 2022-01-08 - **Last Updated**: 2025-06-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 电商大数据实战(Canal+Kafka+Storm+Redis+Web) ### 介绍 实时计算大作业项目。通过数据生成模拟器生成数据存入MySQL,使用Canal+Kafka+Storm+Redis+Web(flask+echarts+web)框架,构建大数据实时看板。 下面是大作业题目及其要求 **1.1课题背景** 某在线电子图书商城当前注册会员数有近千万会员,遍布于全国多个省份, 日常在线业务量较大。为了提高商城的用户知名度,该公司拟计划开展大型促销 活动(类似于双十一的电商购物活动)。为了准确、实时统计当前销售数量,公 司拟委托你开发一个促销活动的大数据看板,用于当日活动启动后销售订单实时 数据的变化情况。 **1.2数据源** 数据模拟器产生数据为提供更真实的测试环境,公司的市场部门委托相关人员已设计了一个订单数据模拟器,可模拟产生客户在网上下单的订单信息,数据会自动存入 MySQL数据库相应的表中。该模拟器允许调节进程的数量,模拟不同量级的并发量,以充分测试系统的性能。 字段说明如下所示。上下分别为订单表字段含义、订单明细表字段含义。 ![输入图片说明](Image/p1image.png) ![输入图片说明](Image/p2image.png) **1.3要求** 运用实时计算技术、Web 技术构建一个图书商城的促销活动大数据看板,实 现以下功能: (1) 界面每 3 秒刷新一次,如果能做到 2 秒或 1 秒刷新一次,可加分; (2) 展示当前订单的已处理速度,单位为“条/秒”; (3) 大数据看板 界面应简洁大气,有特点; (4) 展示截止当前时间的总销售金额、订单数量、下单客户数基本信息; (5) 展示截止当前时间销量排名前 10 的图书排行榜; (6) 展示截止当前时间销量排名前 10 的出版社排行榜; (7) 展示全国各地下单客户的累计数量(按省份),在地图上直观展示; (8) 数据统计误差(数据丢失、统计错误)不超过 1%,应设计实验计算 数据误差率; (9) 展示的数据延迟应不超过 30 秒,每次刷新时应显示获取的数据最新 时间; (10) 测试出系统的最大承载负荷量,即最大并发线程数; (11) 如果实现了以上规定之外的有特色数据展示功能,可加分; **1.4框架** 必须使用课程上所学习的实时计算框架(如 Storm、Kafka、Flume、Flink) 的一种或几种,如有需要,可引入其它框架或组件。要求使用真实搭建(不少于 2 台 VMware 的虚拟机,分别模拟主-从端)的环境,将开发的程序包发布到真实搭建的平台中运行,接收数据并计算相应的结果进行展示。报告中要给出监控平台的运行情况。使用真实环境运行程序。 ### 软件架构 本方案框架思路及考虑问题如下图所示 ![输入图片说明](Image/p3image.png) **Canal-1.1.5** **Kafka_2.11-1.1.1** **Storm** **Redis** **Flask** 其中Storm、Redis版本无限制,Flask为Python的扩展包 ### 安装教程 1. 安装Mysql,实现read.exe存入数据到mysql。 2. 安装配置Canal,实现增量式获取数据并导入kafka。 3. 在三台虚拟机中安装配置kafka,实现consumer能查看到数据。 4. 在idea中配置好Maven环境,编程实现连接到kafka,以及Storm的Topology结构,运行后能在console中查看到统计好的信息。 5. 在虚拟机中安装配置redis,使得idea中的统计结果能存入redis。 6. 在python端编写flask架构,实现读取redis数据,将数据推入web架构。 7. 获取web工程文件,能将数据直观展现。 ### 使用说明 1. 数据生成。需要安装配置MySQL,在数据生成器文件夹中有详细参考文档。这一步需要实现数据生成器能成功写入数据到MySQL,即在MySQL中能查看到数据。 2. 安装配置Canal。在Canal文件夹中附带了Canal安装包,解压后,按文档教程配置好Canal。 3. 3台虚拟机中安装配置Kafka_2.11-1.1.1(版本需是这个),在虚拟机实现生产者、消费者数据互通。 Canal配置好后,启动Canal服务、数据生成器,在Kafka中应该能接收到数据,即能看到源源不断滚动刷新的数据。 4. Storm项目。Storm项目文件在Storm文件夹中,使用Idea的Maven环境,JDK-1.8。实现了Storm的Topology,统计数据流并将结果存入redis。只需要打开这个项目,下载好依赖,修改IP地址等部分代码即可使用。 5. 安装配置Redis。可以网上寻找教程,在Windows下安装一个Redis,在Storm代码中修改Redis地址,使得Storm统计的数据能在Redis中查询到。 6. Flask。这部分是python代码,从Redis中读取数据,使用Flask将数据推送到Web前端,即我们的Web项目文件。 7. 打开三台虚拟机并开启zookeeper、Kafka服务,依次运行redis_flask.py、Topology.java、数据生成器、即可在Web端查看到实时统计的各类数据,即大数据看板 ![输入图片说明](Image/p4image.png) ### 附件 大作业报告