新闻中心
大数据分析工程师入门14-数据分析架构(大数据分析工程师学会要求)

数据与智能,本公众号关注大数据与人工智能技术。由一批具备多年实战经验的技术极客参与运营管理,持续输出大数据、数据分析、推荐系统、机器学习、人工智能等方向的原创文章,每周至少输出10篇精品原创。同时,我们会关注和分享大数据与人工智能行业动态。欢迎关注。

作者:凯凯连
导语
前面13篇文章,我们主要从技术框架的角度,给大家讲解了作为一名初级大数据工程师需要重点掌握的技术技能。
那么,从这篇文章开始,我们将从业务的角度,来给大家讲一下,工作中需要了解的一些业务知识。
1.为什么要讲架构
大数据的基础架构在网上一搜一大把,每个公司都会针对自己公司的特定业务场景,选择适合自己的技术框架,来搭建自己的大数据架构体系。既然各有不同,又如此有针对性,那么我们为什么还要讲这个呢?
原因是,我们的目标不是教会你如何搭建大数据架构,而是找到这些架构体系的共性,让你理解不同模块的功能,以及他们是如何相互配合协作,最终提供服务能力的。了解这些内容,对你实际工作是非常有帮助,它会有助于你更好地理解整个数据处理链路,在遇到问题时,可以快速的做出反应,找到问题的症结点,并解决问题,从而提高工作效率。
2.本文的课程目标
希望通过本文的讲解,让大家对常见的大数据架构的模块组成、模块功能、以及模块间的相互协作有一个基本的认知,进而提升大家排查数据问题的能力。后面四篇文章会单独讲解架构里面比较重要的四个模块,所以本文也算是一种预热,或者说承上启下,以此引出后面的四篇文章。
3.本文的讲解思路
第一部分,讲解常见的数据架构的模块组成,并讲解各个模块的大致功能。
第二部分,讲解数据流转的一般流程。
第三部分,通过一个实际案例,讲解下数据具体是怎么流转的
×××
以下为正文
01
模块组成
正如前文所述,不同公司的架构是有其独特性的,所以本文从模块分解的角度,来讲解下,那些通用的或必不可少的模块。
常见的数据分析架构模块组成如下图所示:

上图中共提到了8个模块,他们分别是:
数据收集模块:主要负责收集各种数据源的数据,包括日志文件、网络请求、数据库、消息队列等,并将这些数据转换为文件或者消息向后传递。
数据转存模块:主要负责将数据定时传递到分布式存储或者实时传递给下游的数据处理程序。
ETL模块:主要负责数据的清洗、格式和内容的处理和转换、数据分级分拣、加载至数据仓库等。
数据仓库模块:这是整个架构的核心,数据仓库是数据有组织的集中存储的地方,负责数据的存取和管理。
元数据管理模块:主要负责记录和约束数据仓库中数据的含义和格式,控制着数据的生命周期和数据质量。
分析引擎模块:数据分析师交互最多的模块,主要负责执行各种分析语句或代码,完成各种分析任务。
作业管理与调度模块:负责分析作业的管理和定时调度,包括作业的增删改查、查看修改历史、设置调度定时和执行引擎等。
资源分配与调度模块:主要负责在多作业同时运行的场景下,有效协调和分配集群的资源,使资源利用率最大化。
02
数据流转流程
上面我们介绍了常见架构的各个模块,接下来我们来讲下数据是如何在这些模块间流转的。
大致过程如下图所示:

我们以离线处理为例,首先数据会被数据收集模块收集起来,以特定的形式传递给数据转存模块,之后由数据转存模块存储到分布式文件系统,ETL程序会定时处理上述原始数据,并将其转化为便于分析和挖掘的数据格式,并按照特定规范的组织形式,将数据加载至数据仓库中。
之后,我们便可以基于数据仓库的数据,进行多种维度的分析和处理,并可以将需要定时输出的内容设置为定时任务,输出结果可以用来做相应的可视化,得出相应的分析结论。至此数据的一般流转流程就走完了完整的一圈。
03
实际案例
也许听完上面的描述,你依然觉得很抽象,不好理解。没关系,接下来,我将结合一个具体的实现案例,给大家讲下各模块的协作。不过,大家并不需要太在意这个架构的具体实现技术,而是重点关注数据流转的流程。
我们以分析安卓应用上的用户行为数据为例,大致实现如下:

总结
知道了这些数据流转的流程,对我们有什么用呢?
它的作用主要体现在两个方面,也正是本文的目的所在:
让我们对整体的架构有个基本的了解,有助于日常工作的开展,例如,定义日志格式、分析特定数据等,可以理解数据是怎么来的,同时也可以加深我们对于业务的理解。有助于我们排查问题,框定问题范围。在遇到问题时,我们首先应该定位问题最有可能是发生在哪个阶段的,之后再进行细致的排查,这样可以提升效率。本文只是从一个全局的角度,带大家初步了解下整体架构的情况。
后面我们会用四篇文章,单独详细介绍了数据收集、ETL、数据仓库与元数据中心、作业管理与调度平台四个模块,敬请期待。
-end-
