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


基本功:掌握一种数据库对于数据架构师,必须要掌握一种数据库,同时要了解常见的数据库 。
建议通过 Oracle 来学习数据库,安装系统时选择 linux,也可以选 centos 。第一步你要模拟操作系统,也就会接触到虚拟机的概念 。简单来说,也就是第一步模拟 Linux 系统,第二步再安装数据库 。
为什么推荐 Oracle 数据库?因为 Oracle 的安装过程相对比较复杂,在过程中你会遇到各种各样的问题,遇到的问题越多,学习的就越多 。整个过程中你要学习 Linux 系统的各种命令、网络、补丁包、防火墙等一系列问题,最后通过客户端可以访问数据库了,可以查看数据了,就会很有成就感 。如果领悟能力和动手能力很好,这个步骤一般需要一周左右的时间去消化 。但这只是第一步,记得一定要多装几次来加深理解 。
后面就要开始学习 SQL 语句了,建表、插入、更改、查询,操作起来吧!理论也要跟上,“事务”的概念一定要看,数据库、实例名、表空间、段、块等概念要理解 。
当然也要学习如何优化数据库 。数据库底层无非是硬盘、内存、CPU 在支撑,所以这些资源怎么分配很重要,在测试时一定要留意这三个重要参数的变化 。操作系统层面的优化就是为了让操作系统和数据库软件更好地结合,可以去调系统的参数 。这是统一的优化思想,后面的应用系统、大数据等技术也适用 。
数据库层面的优化,也是一样的道理,留意、调整参数,原则就是“集中有限的资源做更多重要的事” 。
基于数据的优化,我建议尽可能少消耗计算机的性能:硬盘的读写、网络的传输、数据的计算 。如分表分区,索引等等都是为了用尽可能少的资源,尽可能快地完成尽可能多的事:就是提高效率 。当然有的时候我们会牺牲时间换空间,也会牺牲空间换时间,所以对于优化,我们要综合考虑成本和效率的问题 。
SQL 调优中,执行计划是必须要会看的,每个数据库或者引擎都有自己的规则,我们优化过程中要了解 SQL 的执行逻辑,这样我们才知道如何优化 。
要了解哪些数据库呢?关系型数据库中 Oracle、MySQL、SQLServer、DB2、PostgreSQL 是要去了解的,同时了解行存储和列存储的区别,当然了解越多越好 。NoSQL 数据库的话,建议了解 MongoDB、HBase、redis 。
其他数据库还很多,通过项目和 ELT 过程来熟悉更多的架构吧!
必杀技:大数据技术大数据解决了什么问题?其实答案很简单:分布式存储和分布式计算 。
所以,学习大数据最好的方式就是搭建一套开源的 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 了 。


推荐阅读