当前位置:   article > 正文

数仓采集项目【01数仓概念、需求分析、技术框架】_数仓需求收集

数仓需求收集

一 数仓概念

数据仓库( Data Warehouse ),是为企业所有决策制定过程,提供所有系统数据支持的战略集合。

通过对数据仓库中数据的分析,可以帮助企业,改进业务流程、控制成本、提高产品质量等。

数据仓库,并不是数据的最终目的地,而是为数据最终的目的地做好准备。这些准备包括对数据的:清洗,转义,分类,重组,合并,拆分,统计等等。

数据仓库的目的不仅仅只是存储数据,重点是对数据进行一系列处理,为后续的应用提供数据支持。

二 项目需求分析

1 用户行为数据采集平台搭建;

2 业务数据采集平台搭建;

3 数据仓库维度建模;

4 分析设备、会员、商品、地区、活动等电商核心主题,统计的报表指标近100个;

5 采用即席查询工具,随时进行除4中的100个指标之外的指标进行分析;

6 对集群性能进行监控,发生异常需要报警;

7 hive元数据的管理,将hive中表与表之间的关系,结构分析出来;

8 数仓数据分析质量的监控。

其中1-4为必要操作,5-8为可选操作。

完成以上操作,需要思考的问题:

1 项目技术如何选择

2 框架版本怎么选择(Apache,CDH,HDP)

3 如何确认集群规模

4 使用物理服务器还是云服务器

三 技术框架

1 技术选择

技术选型主要考虑因素:数据量大小、业务需求、行业内经验、技术成熟度、开发维护成本、总成本预算,学习成本。

(1)数据采集传输:Flume,Kafka,Sqoop ,Logstash,DataX

(2)数据存储:MySql,HDFS,HBase,Redis,MongoDB

(3)数据计算:Hive,Tez, Spark, Flink,Storm

(4)数据查询:Presto,Kylin ,Impala,Druid

(5)数据可视化:Echarts、Superset、QuickBI、DataV

(6)任务调度:Azkaban、Oozie

(7)集群监控:Zabbix

(8)元数据管理:Atlas

2 框架版本的选择

Apache:运维麻烦,组件间兼容性需要自己调研。(一般大厂使用,技术实力雄厚,有专业的运维人员) (建议使用)

CDH:国内使用最多的版本,但CM不开源,一个节点1万美金。

HDP:开源,可以进行二次开发,但是没有CDH稳定,国内使用较少

框架版本号:

产品版本
Hadoop3.1.3
Flume1.9.0
Kafka2.4.1
Hive3.1.2
Sqoop1.4.6
Java1.8
Zookeeper3.5.7
Presto0.189

3 服务器选择

(1)物理机:以128G内存,20核物理CPU,40线程,8THDD和2TSSD硬盘为例,戴尔品牌单台报价4W出头。一般物理机寿命5年左右。需要有专业的运维人员,平均一个月1万。电费也是不少的开销。

(2)云主机:以阿里云为例,差不多相同配置,每年5W,在资金方面来说,与(1)差不多。很多运维工作都由阿里云完成,运维相对较轻松。

(3)企业选择:金融公司,资金充足的公司和阿里没有直接冲突的公司选择阿里云;中小公司、为了融资上市,选择阿里云,拉到融资后买物理机;有长期打算,资金比较充足,选择物理机,数据是存储在自己这里的。

4 集群资源规划

根据数据量确认集群规模,假设:每台服务器8T磁盘,128G内存

(1)每天日活跃用户100万,每人一天平均100条:100万*100条=1亿条;

(2)每条日志1K左右,每天1亿条:100000000 / 1024 / 1024 = 约100G(中型公司)

(3)半年内不扩容服务器来算:100G*180天=约18T(至少存储半年)

(4)保存3副本:18T*3=54T

(5)预留20%~30%空间(Buf)=54T/0.7=77T

(6)综上:约8T*10台服务器

如果考虑数仓分层,在以上基础上会翻2-3倍。

如果考虑数据采用压缩,按照50%压缩率计算,需要根据实际情况再计算。

测试集群服务器规划

服务名称子服务服务器 hadoop101服务器 hadoop102服务器 hadoop103
HDFSNameNode
DataNode
SecondaryNameNode
YarnNodeManager
Resourcemanager
ZookeeperZookeeper Server
Flume(采集日志)Flume
KafkaKafka
Flume(消费Kafka)Flume
HiveHive
MySQLMySQL
SqoopSqoop
PrestoCoordinator
Worker
AzkabanAzkabanWebServer
AzkabanExecutorServer
DruidDruid
Kylin
HbaseHMaster
HRegionServer
Superset
Atlas
SolrJar
服务数总计1899

5 系统数据流程设计

业务数据:用户注册的信息,订单信息,物流信息等,一般存储到业务数据库中,例如mysql或oracle,通过sqoop将数据采集到数据仓库中,sqoop的。

用户行为数据:搜索商品,浏览商品,加入购物车等操作,一般存储到日志服务器中,通过flume采集到数据仓库中。

数据仓库中的数据的存储是基于HDFS的,同时对数据进行一系列的预处理,通过MapReduce/spark对数据进行预处理,但MR十分麻烦,所以采用hive的方式对数仓中的数据进行处理,使用yarn进行资源调度。

为保证采集到的数据对后续的应用方便实用,在数仓中对数据进行基本的处理,进行分层操作,分层代表数据的走向,如第一层对数据进行何种处理,第二层,对数据进行何种处理等等。目前,数仓分为五层,分别为ods,dwd,dws,dwt,ads。最后一层ads中的数据为正常使用的数据,后续的应用使用ads层的数据即可,如报表系统(BI),用户画像,推荐系统,机器学习,风控系统等。

如果后续应用对数据的时效性要求不高,可以通过以上流程查询数据,否则,可以将ads中的数据导出到支持秒级响应的业务数据库中(mysql)。这样可以基于业务数据库做一些操作,比如报表系统,数据可视化,即席查询等。

数仓中的任务不是一次执行完成之后就不再操作了,通过azkaban框架可以定时的调度某一个任务。
系统数据流程设计

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/592024
推荐阅读
相关标签
  

闽ICP备14008679号