如何成为一个合格的数据架构师?( 三 )


Spark 计算引擎和 Hive 底层不一样,Spark 学习你会遇到 DAG 图,RDD、内存、Scala 语言等知识,一样地学习优化思路和技巧 。
HBase 是个列族数据库,通过 Key-value 方式进行数据存储,学习方式同上 。
Yarn 是资源管理器,CPU、内存资源都是它来管理的,平台架构师要深入学习,数仓架构师可以稍作了解 。
Kafka 是消息队列,主要用于数据通道,进行数据缓冲和技术解耦使用 。
Zookeeper 是管理所有大数据组件的,因为 hadoop 生态圈组件都是动物名字命名的,所以 Zookeeper 就是动物管理员,依此进行命名的 。
3、深入看看
其实大数据技术主要解决分布式计算和分布式存储,简单的说就是可以进行弹性扩展,存储资源无限扩展,计算资源无限扩展 。这样就可以解决小型机和一体机无法解决的计算和存储问题 。
解决这两个问题,我们需要一个操作系统来支持,这就是分布式操作系统 。(这个核心思想最早是 google 为了解决自己的问题提出来,后续 Apache 进行开源提出了 HDFS 。)
资源怎么协调引出了 Yarn,消息队列提出 Kafka,离线计算 Hive,内存计算 Spark(不完全靠内存)、交互式查询 impala、多维分析 kylin 等等,因篇幅有限,每个类型只列举一个 。
必杀技 2:数据仓库1、初步学习
初步接触数据仓库时,建议先看维度模型,了解什么是事实表,什么是维度表 。做一张事实表,定义哪些是维度、哪些是度量,然后通过 SQL 进行查询 。
有了基本概念后,可以再学习深一些的内容,例如星型模型、雪花模型 。

如何成为一个合格的数据架构师?

文章插图
 
【如何成为一个合格的数据架构师?】戳上图看天启关于数据模型的详解
再进阶,则可以学习维度建模:选择业务过程 - 声明粒度 - 确定维度 - 确定事实,如果能亲身参与一个项目就更好了 。
2、步入设计
首先要了解数据仓库的分层、每一层做什么,为什么要分层?
然后,了解事实表的类型(事务、周期快照、累计快照)、维度表的类型(普通维度、缓慢变化维度)、总线矩阵、数据立方体(cube)等 。
3、高阶学习
维度建模实践后,发现维度建模的不足,那么是时候可以开始研究其他建模了 。建议通读并理解 Inmon 大师的范式建模(数据仓库之父 Bill Inmon,Building the Data Warehouse)和 Kimball 大师的维度建模,两者的建模各有优劣,可以取长补短 。
4、解决业务问题
数据模型最终解决的是业务问题,目前常见的建模以维度建模为主,但是维度建模不停的在变化,Bill Inmon 提出了 datavault 的建模思想,数据仓库、数据平台、数据中台、数据湖等概念层出不穷 。本质不变,目标还是解决实际的业务问题 。
我个人建议,我们数据仓库的规划可以自顶向下,采用 Inmon 的思想,开发和建模规范也要考虑全局,而在实施中可以采用维度建模,自底向上,采用 Kimbal 思想,落地快,迭代快 。实际解决问题时不拘泥于一个模型,什么模型合适就用什么模型 。
5、阿里的创新
阿里基于维度建模提出了公共模型层概念,一定程度上能解决数据共享和重复建设的问题,OneData 的理念非常有研究价值 。但在应用中我们需要注意,不要一味的用相同的场景做法去套不同行业,在实践中需要辩证看待,按需去用 。
6、模型标准
数据模型没有好坏,只有用得对错 。判断的标准也很简单,有没有解决业务问题?更高的要求是有没有驱动业务的变革或者创新 。大白话来说就是两个问题:挣到钱了吗?省下钱了吗?
必杀技 3:ELT 技术1、ELT 概念
传统的 ETL (Extract-Transform-Load)是把 T 的部分放在中间的,在大数据环境下我们更愿意把 T 放在后面,从 ETL 向 ELT 进行演变 。原因也很简单,这样我们可以充分利用大数据环境 T 的能力 。数据开发也平台化了,例如阿里的 DataWorks、Dataphin,将数据同步、清洗转化、任务调度集成在一起 。
2、ELT 技术注意哪些
E(Extract,抽取)和 L(Load,装载)的优化需要懂源头和目标数据库(数据仓库)的特点,需要根据情况进行优化 。T(Transform,转化)部分要理解底层技术原理,进行优化 。
ELT 的注意点总结如下:
(1)时效性
必须在规定时间内跑完数据,跑出结果;
(2)准确性
数据计算结果必须准确;
(3)容错性
ELT 可以支持重跑、补数等功能;


推荐阅读