赞
踩
数据仓库( 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)数据采集传输: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
Apache:运维麻烦,组件间兼容性需要自己调研。(一般大厂使用,技术实力雄厚,有专业的运维人员) (建议使用)
CDH:国内使用最多的版本,但CM不开源,一个节点1万美金。
HDP:开源,可以进行二次开发,但是没有CDH稳定,国内使用较少
框架版本号:
产品 | 版本 |
---|---|
Hadoop | 3.1.3 |
Flume | 1.9.0 |
Kafka | 2.4.1 |
Hive | 3.1.2 |
Sqoop | 1.4.6 |
Java | 1.8 |
Zookeeper | 3.5.7 |
Presto | 0.189 |
(1)物理机:以128G内存,20核物理CPU,40线程,8THDD和2TSSD硬盘为例,戴尔品牌单台报价4W出头。一般物理机寿命5年左右。需要有专业的运维人员,平均一个月1万。电费也是不少的开销。
(2)云主机:以阿里云为例,差不多相同配置,每年5W,在资金方面来说,与(1)差不多。很多运维工作都由阿里云完成,运维相对较轻松。
(3)企业选择:金融公司,资金充足的公司和阿里没有直接冲突的公司选择阿里云;中小公司、为了融资上市,选择阿里云,拉到融资后买物理机;有长期打算,资金比较充足,选择物理机,数据是存储在自己这里的。
根据数据量确认集群规模,假设:每台服务器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 |
---|---|---|---|---|
HDFS | NameNode | √ | ||
DataNode | √ | √ | √ | |
SecondaryNameNode | √ | |||
Yarn | NodeManager | √ | √ | √ |
Resourcemanager | √ | |||
Zookeeper | Zookeeper Server | √ | √ | √ |
Flume(采集日志) | Flume | √ | √ | |
Kafka | Kafka | √ | √ | √ |
Flume(消费Kafka) | Flume | √ | ||
Hive | Hive | √ | ||
MySQL | MySQL | √ | ||
Sqoop | Sqoop | √ | ||
Presto | Coordinator | √ | ||
Worker | √ | √ | ||
Azkaban | AzkabanWebServer | √ | ||
AzkabanExecutorServer | √ | |||
Druid | Druid | √ | √ | √ |
Kylin | √ | |||
Hbase | HMaster | √ | ||
HRegionServer | √ | √ | √ | |
Superset | √ | |||
Atlas | √ | |||
Solr | Jar | √ | ||
服务数总计 | 18 | 9 | 9 |
业务数据:用户注册的信息,订单信息,物流信息等,一般存储到业务数据库中,例如mysql或oracle,通过sqoop将数据采集到数据仓库中,sqoop的。
用户行为数据:搜索商品,浏览商品,加入购物车等操作,一般存储到日志服务器中,通过flume采集到数据仓库中。
数据仓库中的数据的存储是基于HDFS的,同时对数据进行一系列的预处理,通过MapReduce/spark对数据进行预处理,但MR十分麻烦,所以采用hive的方式对数仓中的数据进行处理,使用yarn进行资源调度。
为保证采集到的数据对后续的应用方便实用,在数仓中对数据进行基本的处理,进行分层操作,分层代表数据的走向,如第一层对数据进行何种处理,第二层,对数据进行何种处理等等。目前,数仓分为五层,分别为ods,dwd,dws,dwt,ads。最后一层ads中的数据为正常使用的数据,后续的应用使用ads层的数据即可,如报表系统(BI),用户画像,推荐系统,机器学习,风控系统等。
如果后续应用对数据的时效性要求不高,可以通过以上流程查询数据,否则,可以将ads中的数据导出到支持秒级响应的业务数据库中(mysql)。这样可以基于业务数据库做一些操作,比如报表系统,数据可视化,即席查询等。
数仓中的任务不是一次执行完成之后就不再操作了,通过azkaban框架可以定时的调度某一个任务。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。