本文作者:奇点云高级数据架构专家 天启,奇点云高级数据架构专家,原海尔集团数据架构师、原阿里巴巴政务团队数据架构师。精通数据仓库建模理论及数据开发技术,具备零售、政务、医药、制造等多个领域数仓和数据中台建设经验。

大数据产业创新服务媒体

——聚焦数据 · 改变商业


写在前面 

早在1980年,未来学家阿尔文·托夫勒就在《第三次浪潮》中,将大数据比喻为“第三次浪潮的华彩乐章”。

21世纪以来,数据量进入每两年翻一番的增长期,越来越多人意识到了数据的价值,数据架构师闪亮登场。数据成为企业不可忽视的重要资产。而数据架构师则是企业数据资产最重要的“奠基者”。

最早,数据架构师在IOE上工作;

2009年,阿里云最早提出“去IOE”的口号,初代数据架构师革了自己的命;

2015年,这一年产生的数据量是人类过去历史上所产生数据量的总和,从此进入了指数级增长阶段。数据架构师也演化出了2个大方向(平台型数据架构师、数仓型数据架构师)。

本文以作者亲历视角,主要分享数仓型数据架构师的“修炼大法”。欢迎辩证看待、留言交流~

01

你想成为哪种数据架构师

目前数据架构师有两个大的方向:一,偏平台的架构师,对开源技术要求较高,企业一般会要求读过开源技术源码,或者参与过开源项目,偏平台的构建;二,偏数仓的架构师,对SQL能力要求较高,企业一般会要求掌握数仓理论,有数仓项目经验。

(1)平台型数据架构师

这个方向也会分类:一,开源派,互联网公司一般喜欢这个流派,二,商用软件派,如Oracle、IBM等流派,通常解决传统企业的数据问题。这个流派目前受到了来自阿里、腾讯和华为较大的冲击。个人认为目前开源派是比较符合近年潮流趋势的。

平台型数据架构师,是为数仓型数据架构师服务的,直白地说,你开发能力要很牛逼,你要懂应用。

(2)数仓型数据架构师

这个方向要求精通数据仓库原理,通过实时、离线等技术解决企业的数据问题。需要掌握ELT的流程,掌握各种数据源的特点,掌握大数据工具的使用。

数仓型数据架构师,刚好是平台型数据架构师的用户。直白地说,你写SQL的能力要牛逼,你要懂业务。

02

数据架构师的必备知识树

01

 敲门砖:掌握一门开发语言

如果你是一位计算机专业的学生,我推荐使用C语言,强烈建议通过面向对象的编程思想去消化数据结构。数据架构中,很多逻辑和原理都来自于数据结构这门课程,如链表、队列、堆栈、树、图等,掌握数据结构对后续进一步学习非常的重要。

如果你是想从其他岗位转数据架构师,那么更建议学习Java,Java的入门会相对简单。当然最好的方式是通过Java的编程思想领会数据结构这本书的知识点。一定要模拟B/C的整个过程,不要立马就用Java的高级框架,而是要用Java原生的servlet模拟下前端和后端的交互,后端和数据库的交互。

初学者看文章,常会遇到很多新概念,觉得看不懂,记不住。最好的学习方法是让自己有兴趣、有成就感。所以理论的内容我建议慢慢消化,反而实际操作很重要——实际操作能给自己带来成就感。

比如你初学java,你第一个目标是要在屏幕上打出“Hello, world! ”。网上会有很多的资料,会教你安装JDK、IDE工具等等,你可以先不管那么多,找个偏基础的资料,按部就班的实现一次。在整个过程中你会遇到很多的问题,JDK在哪里下载,版本选哪一个,环境变量如何配置等等。最好的方式是边查边做,通过亲手实践来验证整个过程,再去理解。最终成功地打印出“Hello, world! ”,你会有前所未有的成就感!

数据结构这门课程确实有些难度,同样建议采用边学理论边实践的方法,甚至我们可以更“暴力”,直接在网上找几段别人写好的代码,跑一遍,看看效果,读懂代码,再回过来理解概念。这时候你会感觉就像近视眼戴上了眼镜,突然发现很清晰。

你还需要了解开发语言的分类:什么是低级语言,什么是高级语言?什么是面向过程的编程,什么是面向对象的编程?什么是编译型语言,什么是解释型语言?可以不深入,但是作为一个架构师,你要了解这些东西。最好也要了解设计模型,如单例模式、工厂模式、生产者模式等常用设计模型,对思维方式有很好的提升。

开发语言是成为一名合格数据架构师的敲门砖。你可以选一本不错的书,结合书籍一步一步走。自学时,知识检索能力很重要,你要慢慢学会在浩瀚的互联网学海中查找自己想要的知识。有条件的同学也可以报个靠谱的培训班,这是个不错的选择,会少走很多弯路。但是速成后很多人只能做个码农,最终要成为架构师级别的高手,还是需要扎实的基本功是必须的。需要很长的路才能成为架构师级别的编程高手。所以如果想有更高的成就,必须对概念、原理、技术。

02

 基本功:掌握一种数据库

对于数据架构师,必须要掌握一种数据库,同时要了解常见的数据库。

建议通过Oracle来学习数据库,安装系统时选择Linux,也可以选CentOS。第一步你要模拟操作系统,也就会接触到虚拟机的概念。简单来说,也就是第一步模拟Linux系统,第二步再安装数据库。

为什么推荐Oracle数据库?因为Oracle的安装过程相对比较复杂,在过程中你会遇到各种各样的问题,遇到的问题越多,学习的就越多。整个过程中你要学习Linux系统的各种命令、网络、补丁包、防火墙等一系列问题,最后通过客户端可以访问数据库了,可以查看数据了,就会很有成就感。如果领悟能力和动手能力很好,这个步骤一般需要一周左右的时间去消化。但这只是第一步,记得一定要多装几次来加深理解。

后面就要开始学习SQL语句了,建表、插入、更改、查询,操作起来吧!理论也要跟上,“事务”的概念一定要看,数据库、实例名、表空间、段、块等概念要理解。

当然也要学习如何优化数据库。数据库底层无非是硬盘、内存、CPU在支撑,所以这些资源怎么分配很重要,在测试时一定要留意这三个重要参数的变化。操作系统层面的优化就是为了让操作系统和数据库软件更好地结合,可以去调系统的参数。这是统一的优化思想,后面的应用系统、大数据等技术也适用。

数据库层面的优化,也是一样的道理,留意、调整参数,原则就是“集中有限的资源做更多重要的事”。

基于数据的优化,我建议尽可能少消耗计算机的性能:硬盘的读写、网络的传输、数据的计算。如分表分区,索引等等都是为了用尽可能少的资源,尽可能快地完成尽可能多的事:就是提高效率。当然有的时候我们会牺牲时间换空间,也会牺牲空间换时间,所以对于优化,我们要综合考虑成本和效率的问题。

SQL调优中,执行计划是必须要会看的,每个数据库或者引擎都有自己的规则,我们优化过程中要了解SQL的执行逻辑,这样我们才知道如何优化。

要了解哪些数据库呢?关系型数据库中Oracle、MySQL、SQLServer、DB2、PostgreSQL是要去了解的,同时了解行存储和列存储的区别,当然了解越多越好。Nosql数据库的话,建议了解MongoDB、HBase、Redis。

其他数据库还很多,通过项目和ELT过程来熟悉更多的架构吧!

03

 必杀技:大数据技术

大数据解决了什么问题?其实答案很简单:分布式存储和分布式计算。

所以,学习大数据最好的方式就是搭建一套开源的Hadoop集群,在上面操作HDFS、hive、spark、HBase等各种组件。

搭建的过程和Oracle安装过程非常类似,我们首先可以通过虚拟机模拟3-5个节点(服务器),在服务器上进行安装。

安装过程不再一一赘述,给大家一个实践场景:

1、实践场景

需求描述:从mysql数据库把两张表导入到hadoop,然后通过hive进行计算,结果数据同步回mysql数据库。

可能遇到的问题:同步工具的选择,数据加载方式,转化方式,如何把整个流程串联起来,怎么启动这个流程。

(1)同步工具的选择

待选的同步工具有Sqoop和DataX,Sqoop还是Hadoop开源的工具,DataX是阿里开源的工具,各有各的优势,建议都可以学习了解。

(2)数据加载方式

hive的底层是HDFS,简单说就是个文件,hive只是映射过去,通过类SQL语言实现计算。你可以直接通过hive接口(三种方式)建内部表。Sqoop和DataX都支持直接同步到hive中。

(3)转化方式

这是模拟过程,hive不支持存储、不支持update,所以可以进行两张表数据聚合(left join、group by等)后数据插入到另一张表中,再把数据同步回mysql。

(4)流程如何串起来

建议可以通过Linux的shell脚本进行串联,数据同步-数据转化-数据导出。

(5)如何启动流程

所有任务封装到sh脚本里,可以利用Linux的crontab进行定时调度。

2、划下重点

为了更好应对大数据面试,最好能系统地学习一下HDFS、MapReduce、Hive、Spark、HBase、Yarn、Kafka、Zookeeper等一系列的大数据组件。

大数据面试中经常会问到的问题有哪些?

问题常常会包括HiveSQL技巧和调优:

Hive技巧:内部表和外部表、分区、分桶、窗口函数、UDF(UDAF、UDTF)、行转列、列转行等。

优化问题:数据热点(数据倾斜问题)、参数优化、业务分表、sql优化。因为Hive底层是MapReduce操作HDFS,所以要了解Map和Reduce阶段在做什么?数据倾斜问题是数据分布不均导致的,和MapReduce原理息息相关,了解了MapReduce,你就会优化Hive了。

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等等,因篇幅有限,每个类型只列举一个。

04

 必杀技2:数据仓库

1、初步学习

初步接触数据仓库时,建议先看维度模型,了解什么是事实表,什么是维度表。做一张事实表,定义哪些是维度、哪些是度量,然后通过SQL进行查询。

有了基本概念后,可以再学习深一些的内容,例如星型模型、雪花模型。

戳上图看天启关于数据模型的详解

再进阶,则可以学习维度建模:选择业务过程-声明粒度-确定维度-确定事实,如果能亲身参与一个项目就更好了。

2、步入设计

首先要了解数据仓库的分层、每一层做什么,为什么要分层?

然后,了解事实表的类型(事务、周期快照、累计快照)、维度表的类型(普通维度、缓慢变化维度)、总线矩阵、数据立方体(cube)等。

3、高阶学习

维度建模实践后,发现维度建模的不足,那么是时候可以开始研究其他建模了。建议通读并理解Inmon大师的范式建模(数据仓库之父Bill Inmon, Building the Data Warehouse)和Kimball大师的维度建模,两者的建模各有优劣,可以取长补短。

4、解决业务问题

数据模型最终解决的是业务问题,目前常见的建模以维度建模为主,但是维度建模不停的在变化, Bill Inmon提出了datavault的建模思想,数据仓库、数据平台、数据中台、数据湖等概念层出不穷。本质不变,目标还是解决实际的业务问题。

我个人建议,我们数据仓库的规划可以自顶向下,采用Inmon的思想,开发和建模规范也要考虑全局,而在实施中可以采用维度建模,自底向上,采用Kimbal思想,落地快,迭代快。实际解决问题时不拘泥于一个模型,什么模型合适就用什么模型。

5、阿里的创新

阿里基于维度建模提出了公共模型层概念,一定程度上能解决数据共享和重复建设的问题,OneData的理念非常有研究价值。但在应用中我们需要注意,不要一味的用相同的场景做法去套不同行业,在实践中需要辩证看待,按需去用。

6、模型标准

数据模型没有好坏,只有用得对错。判断的标准也很简单,有没有解决业务问题?更高的要求是有没有驱动业务的变革或者创新。大白话来说就是两个问题:挣到钱了吗?省下钱了吗?

05

 必杀技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可以支持重跑、补数等功能;

(4)前瞻性

及时告警和预警功能,提前处理问题。

06

 加分项:应用系统

一个应用系统是怎么诞生的?可以通过软件工程这门课程学习,需求分析、概要设计、详细设计、软件开发、软件测试、试运行、上线、运维、下线等整个过程。

一个应用系统一般会有前端、后端和数据库,对于我们数据架构师,我们至少要知道,怎么开发一个系统,怎么保证一个系统的稳定。特别是“稳定”,我们要对高可用、负载均衡、安全有深刻的认识,需要考虑到应用(Tomat)、数据库(MySQL)、其他中间件(缓存服务、文件服务等)。

  • 高可用:系统一个节点发生故障后能进行无感切换,这个很重要。

  • 负载均衡:使压力均衡进行,它决定了系统的扩展性。

  • 安全:磁盘阵列(raid0、raid1、raid5、raid10)、防火墙、授权、认证,及数据安全,防泄防篡、脱敏加密、防丢失等。

在做架构决策时,知道哪些操作可能会影响业务系统,才能设计更好的数据架构。

07

 锦上添花:算法

DT时代已至,未来一定是“数据+AI”的天下。所以作为数据架构师,我们可以不会写算法,但我们要了解且会使用算法。

这里的算法主要指机器学习算法,初学者可以理解下预测、分类(聚类)的概念(其实很多图像和语音识别的算法也可以归为预测和聚类算法中)。

可以用Python模拟最简单的线性回归,进阶则研究逻辑回归。

  • 监督学习算法:支持向量机(Support Vector Machine,SVM)、决策树、朴素贝叶斯分类、K-临近算法(KNN);

  • 非监督学习算法:K-均值聚类(K-Means) 。优点是算法简单容易实现,缺点则是可能收敛到局部最小值,在大规模数据集上收敛较慢。可在图像处理、数据分析以及市场研究等场景应用;

  • 强化学习(深度)算法:如果不想转职算法工程师,目前仅作了解即可。

最后分享算法开发的简化版步骤:

  1. 数据准备(数据同步);

  2. 问题明确(明确分类还是回归问题);

  3. 数据处理(合并、去重、异常剔除);

  4. 特征工程(训练集,测试集、验证集);

  5. 选择合适的算法;

  6. 模型评估(若评估不合格,则考虑:①换算法;②调参数;③特征工程再进一步处理)。

03

总结:建立属于自己的知识索引

其实,无论是什么岗位,自学能力都很重要。我们可以为自己建立一个知识目录或知识索引,按照知识索引去查漏补缺,不断丰富自己。

作为一名数据架构师,我们要懂点硬件、懂点网络、懂点安全,了解应用,熟练掌握一门开发语言,深入理解一个数据库,实操过大数据,精通数据仓库技术(建模+ELT),有深度,有广度。

—— / END / ——

职位热招中

①【北京】TalkingData

资深银行行业BD-华北/华东JD、资深非银行业BD-华东/华南JD、数据分析师JD丨点击“这里”了解详情

②【北京】金山云云智能解决方案中心大数据团队

大数据架构师、Java架构师丨点击“这里”了解详情

③【上海】数数科技

大数据运维支持工程师、大数据研发工程师、SDK研发工程师、数据分析师、销售经理(上海、北京、深圳)、高级数据产品经理、测试开发工程师丨点击“这里”了解详情

④【杭州+上海+北京+成都】蚂蚁金服大数据部

均为实习生招募—研发类:数据研发工程师、JAVA工程师、前端工程师丨算法类:机器学习算法工程师丨产品类:数据产品经理丨点击“这里”了解详情

⑤【杭州】阿里数据中台品牌团队

均为市场及品牌岗位:数据品牌管理、数据中台整合营销、数据中台内容运营、数据中台渠道策略运营丨点击“这里”了解详情

⑥【杭州】数字浙江

社招:JAVA开发工程师丨校招:数据开发工程师、JAVA开发工程师丨点击“这里”了解详情

⑦【郑州】中原银行三波共33个职位等你来:

了解第一波招聘点“这里”

了解第二波招聘点“这里

了解第三波招聘点“这里

提示:如贵公司近期有职位发布需求,可发送内容至数据猿寻求友情扩散fabu@datayuan.cn

2019数据猿年度榜单:

●2019大数据产业趋势人物榜TOP 10

●2019大数据产业创新服务企业榜TOP 15

●2019大数据产业创新服务产品榜TOP 40

数据猿公益策划活动

#榜样的力量#

寻找新冠战“疫”,中国数据智能产业先锋力量

如何成为一名合格的数据架构师?相关推荐

  1. mongodb的数据怎么导入到hdfs上_如何成为一名合格的数据架构师?

    "本文作者:奇点云高级数据架构专家 天启,奇点云高级数据架构专家,原海尔集团数据架构师.原阿里巴巴政务团队数据架构师.精通数据仓库建模理论及数据开发技术,具备零售.政务.医药.制造等多个领域 ...

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

    写在前面  早在1980年,未来学家阿尔文·托夫勒就在<第三次浪潮>中,将大数据比喻为"第三次浪潮的华彩乐章". 21世纪以来,数据量进入每两年翻一番的增长期,越来越多 ...

  3. 分享 :如何成为一个合格的数据架构师?

    写在前面  早在1980年,未来学家阿尔文·托夫勒就在<第三次浪潮>中,将大数据比喻为"第三次浪潮的华彩乐章". 21世纪以来,数据量进入每两年翻一番的增长期,越来越多 ...

  4. 资深大牛吐血总结:如何成为一名合格的云架构师?

    https://cloud.tencent.com/info/e9695bd18d1c7752b3924bb3ac38cc95.html [51CTO技术沙龙]10月27日,让我们共同探索AI场景化应 ...

  5. 阿里前大数据架构师:如何快速的成长为一名优秀大数据架构师

    什么是大数据架构师: 围绕大数据系平台系统级的研发人员, 熟练Hadoop.Spark.Storm等主流大数据平台的核心框架.深入掌握如何编写MapReduce的作业及作业流的管理完成对数据的计算,并 ...

  6. 作为一名合格的JAVA架构师需要点亮哪些技能树?

    先看看这些程序员技能树,你掌握或了解哪些?OMG竟然有么多---震精!震精!!! 首先架构师筑基系列 其次开源框架 高性能架构 微服务 在此我向大家推荐一个架构学习交流圈.交流学习伪鑫:1253431 ...

  7. 数智化时代合格数据架构师如何养成?

    简介: 数智化时代,"数据架构师"这样的角色起到越来越重要的作用.能力越大责任也就越大,因此对于这个角色也有了越来越高的要求.那到底对于数据架构师有什么要求呢?对于想成为数据架构师 ...

  8. 浅谈数据架构师所应具备的技能和素养

    DT时代,"数据架构师"这样的角色起到越来越重要的作用.能力越大责任也就越大,因此对于这个角色也有了越来越高的要求.那到底对于数据架构师有什么要求呢?对于想成为数据架构师的同学职业 ...

  9. 一个15年的架构师谈“如何成为一名优秀的解决方案架构师”

    摘要:且听有着15年软件研发.架构经验的华为云MVP魏群娓娓道来,如何成为一名合格的解决方案架构师? 架构师,这是一个在技术人员,特别是软件开发人员眼中具有神圣色彩的岗位. 团队中有了架构师,就是有了 ...

最新文章

  1. Mybatis 源码探究 (3)创建 SqlSessionFactory对象 执行sqlSession.getMapper()方法
  2. Swift之extension的使用
  3. 2013.09.14 不能继续,就应该趁早放弃
  4. mysql查询结果每条记录两个字段求和_MYSQL实现将两个结果集合并,并且按照时间字段分组,其他字段的值求和...
  5. 学C语言办公本和游戏本,为什么不建议买游戏本?入手前须知,别只看中游戏...
  6. 几段小代码解释Python命令式编程和函数式编程
  7. 一看就懂!卡尔曼滤波通俗解释
  8. MyBatis 缓存原来是这么一回事儿!| 原力计划
  9. Linux命令sort的常用用法
  10. 博客访问者来自15个国家和地区
  11. 夜神无限检查服务器新版本,夜神模拟器电脑最新版
  12. DSP原理与应用知识点(期末复习)
  13. b和kb的换算_b和mb的换算(b kb mb换算)
  14. C/C++指针详解(经典,非常详细)
  15. php web音视频通话,实现音视频通话(Web)
  16. OTN告警测试1:LOS
  17. 【PyTorch】深度学习实践之CNN高级篇——实现复杂网络
  18. css 实现 防抖效果
  19. 亚马逊美国账号怎么注册?有什么条件?
  20. [幽默网文]本寺特此公示释永信大和尚悔过书

热门文章

  1. Mongodb 索引 对查询结果的排序
  2. 通过 MarqueeFactory 来提供各种样式的跑马灯 View, 支持自定义跑马灯 ItemView
  3. 服务器硬盘掉线问题解决
  4. 德语语法笔记——连词
  5. 前端鼠标触碰实现遮罩方法
  6. linux系统计算器工具,Linux工具之bc计算器进制的转换
  7. Audition Au制作左右双声道以及导出
  8. 关于微信分享接口,手机分享时候描述变链接的解决方法以及图片logo不显示问题解决方法
  9. Redis学习 - NoSQL简介、redis安装、redis基础知识、数据类型、持久化、订阅发布、主从复制、哨兵模式、缓存击穿和雪崩
  10. docker下自定义分词器词库