今天给大家分享一套方法论,累计10W+阅读,1W+点赞的大数据平台建设方法论。
在数据平台建设的前期来说,做大数据平都是为了日后的数据分析来做基础的。那样就一定要规划出适合企业的方案。根据目前国内大部分企业或者单位的我们可以大致分为几类:
(1)目前企业已经有明确的数据分析需求,对于需要分析的数据有明确的目标。知道自己想要采集哪些应用的数据,也明确出数据分析要达到的最终效果。这样我们就可以与相对应的应用系统做数据的采集,并对采集的数据进行标准化的处理,最后进行存储、分析、建模。
(2)目前企业不清楚自己数据分析的目标,但是想做一些大数据的治理以及规划。
(3)对于一些还没有完整的信息化体制的企业来说,可能只有一两个应用。在规划信息化建设时要规划好自己企业的数据的建设,要统一应用间的数据标准。然后做出数据中台的规划。
整体方案设计时需要考虑的因素:
- 数据量有多少:几百GB?几十TB?
- 数据存储在哪里:存储在MySQL中?Oracle中?或其他数据库中?
- 数据如何从现在的存储系统进入到大数据平台中?如何将结果数据写出到其他存储系统中?
- 分析主题是什么:只有几个简单指标?还是说有很多统计指标,需要专门的人员去梳理,分组,并进行产品设计;
- 是否需要搭建整体数仓?
- 是否需要BI报表:业务人员有无操作BI的能力,或团队组成比较简单,不需要前后端人员投入,使用BI比较方便;
对于一个大数据平台主要分为三部分:
- 数据接入
- 数据处理
- 数据分析
数据接入是将数据写入数据仓储中,也就是数据整合。因为在企业中,数据可能分布在外部和内部,分布在外部的是企业使用第三方系统产生的数据和一些公共数据,分布在企业内部的是企业内部IT系统产生的数据。
这些数据一般都是独立分布的,也就是所说的数据孤岛,此时的这些数据是没有什么意义的,因此数据接入就是将这些内外部的数据整合到一起,将这些数据综合起来进行分析。
对小公司来说,大概自己找一两台机器架个集群算算,也算是大数据平台了。在初创阶段,数据量会很小,不需要多大的规模。这时候组件选择也很随意,Hadoop一套,任务调度用脚本或者轻量的框架比如luigi之类的,数据分析可能hive还不如导入RMDB快。
监控和部署也许都没时间整理,用脚本或者轻量的监控,大约是没有ganglia、nagios,puppet什么的。这个阶段也许算是技术积累,用传统手段还是真大数据平台都是两可的事情,但是为了今后的扩展性,这时候上Hadoop也许是不错的选择。
比如你的数据接入,之前可能找个定时脚本或者爬log发包找个服务器接收写入HDFS,现在可能不行了,这些大概没有高性能,没有异常保障,你需要更强壮的解决方案,比如Flume之类的。
你的业务不断壮大,老板需要看的报表越来越多,需要训练的数据也需要清洗,你就需要任务调度,比如oozie或者azkaban之类的,这些系统帮你管理关键任务的调度和监控。
数据处理是对接入的数据进行数据清洗和ETL建模,将各个数据表之间的关系建立起来,比如关联,聚合,追加等等这些处理。
最后来说说数据分析吧。
数据分析一般包括两个阶段:数据预处理和数据建模分析。
数据预处理是为后面的建模分析做准备,主要工作时从海量数据中提取可用特征,建立大宽表。这个过程可能会用到Hive SQL,Spark QL和Impala。
数据建模分析是针对预处理提取的特征/数据建模,得到想要的结果。如前面所提到的,这一块最好用的是Spark。
在完成了底层业务数据整合工作之后,长久物流在整合业务系统数据的基础上,通过FineReport数据决策系统,有效集成了各个业务系统的实时数据,并根据各个部门的需求搭建了数据分析模板。
总结
首先要有Hadoop集群,在有HDFS与Hive后,才能开展数据接入工作,才能基于集群建设工具链;当工具链部分的OLAP引擎构建好,才有上层BI、报表系统和数据API。
所以弄清了每个部分的相互关系也就容易明白大数据平台的建设流程。