模拟业务需求
统计公司销售情况,需要统计截止到统计当时的年度、季度、月度的销售情况。包含当天的数据。
实时大屏展示
架构选型
lambda架构
lambda架构我看网上有很多介绍,我理解的就是,以离线为主,实时为辅的模式,如下图,
1、假设我每天凌晨跑昨天的数据,那我离线批处理的数据范围就截止到昨天23:59:59,这部分数据获取过来以后进入离线数仓,
2、然后实时处理从凌晨0点开始获取今天的数据,并实时更新回离线数仓,那离线数仓的数据就是实时的数据,想看什么指标,也是最新的数据情况,但是实时处理并不能百分之百的数据准确性
3、然后到第二天,批处理再覆盖昨天的实时处理情况,这样一来,数据就能完全保证质量。
Kappa架构
Kappa架构 网上介绍也不少,我理解的就是,所有数据存储到消息队列里,用到哪一部分数据,就从哪一部分开始,从头开始走一遍实时处理。
比如说我每天正常处理实时数据,突然有个需求要看最近半年的一个指标,那就从新开一个kafka消费者,从半年前开始从头走一遍flink。
lambda & Kappa 对比
lambda | Kappa | |
---|---|---|
优点 | 1、架构简单明了 2、数据稳定可控 | 1、维护一个框架,方便 |
缺点 | 1、维护实时离线两个框架,稍微有些费时费力 | 1、数据存储在消息中间件,容易丢数据 或遇到存储瓶颈 |
这次就选择lambda架构模型,简单明了,数据可控,容易理解
框架选择
类型 | 框架 |
---|---|
数据存储 | Hdfs、Hive、Hbase、Mysql |
消息队列 | Kafka |
协调系统 | Zookeeper |
计算框架 | Mapper-Reduce(离线),Flink(实时) |
调度 | DolphinScheduler |
数据同步工具 | Datax |
其他 | 待加 |
环境枚举
名称 | 版本 | 包名 | 下载地址 |
---|---|---|---|
Linux | Centos 7 | CentOS-7-x86_64-DVD-1810.iso | |
JDK | 1.8 | jdk-8u181-linux-x64.tar.gz | |
scala | 2.11 | scala-2.11.12.zip | https://www.scala-lang.org/download/2.11.12.html |
Hadoop | 3.2.1 | hadoop-3.2.1.tar.gz | https://hadoop.apache.org/release/3.2.1.html |
Hive | 3.1.2 | apache-hive-3.1.2-bin.tar.gz | https://downloads.apache.org/hive/hive-3.1.2/ |
Hbase | 1.4.13 | hbase-1.4.13-bin.tar.gz | http://archive.apache.org/dist/hbase/1.4.13/ |
Mysql | mariadb 10.3 | mariadb-10.3.31-linux-x86_64.tar.gz | https://downloads.mariadb.org/mariadb/10.3.31/ |
Zookeeper | 3.5.8 | apache-zookeeper-3.5.8-bin.tar.gz | https://archive.apache.org/dist/zookeeper/zookeeper-3.5.8/ |
Kafka | 2.4.1 | kafka_2.11-2.4.1.tgz | https://archive.apache.org/dist/kafka/2.4.1/ |
Flink | 1.13 | flink-1.13.2-bin-scala_2.11.tgz | https://flink.apache.org/downloads.html |
DolphinScheduler | 1.3.2 | apache-dolphinscheduler-incubating-1.3.2-dolphinscheduler-bin.tar.gz | https://dolphinscheduler.apache.org/zh-cn/download/download.html |
Datax | datax.tar.gz | http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz |
收尾
如果搭建过程中有什么不合理的地方,还希望路过的大佬及时指出。