1、前言
我从15年开始接触大数据,之前做过一段时间javaweb开发,呆了几家小公司,做过一些方案调研、hadoop环境搭建维护、etl方面的工作,18年到现在的公司,接触了数据仓库理论方面的知识,所以大数据相关的技术或多或少都接触了一些
做技术这几年,自己也一直有做笔记的习惯,但是都是给自己看的,写的也很不专业,隔一段时间自己去看都要看半天才能理解,而且东一块西一块的,于是决定整理之前的笔记,并且通过写博客的方式来倒逼自己复习记录,毕竟只有自己能说出来才能算完全理解
2、大数据
大数据技术大家都知道是Doug Cutting以google的三篇论文为基础,开源的hadoop项目发展出来的生态系统,其中:
hdfs文件系统,解决大规模文件存储问题
mapreduce计算框架解决分布式计算问题
hive数据仓库解决mapreduce编程的麻烦
hbase解决大规模随机读写问题
这些开源项目基本解决了现在大数据架构的大部分问题,当然hadoop生态系统远不止这些,后来还有spark、flink等等,但是大部分也都会选择兼容hdfs、hive等hadoop生态系统的组件,所以现在我们说的大数据技术基本上等于hadoop生态系统
3、数据架构
一个公司的数据架构大致可以分为以上的架构
1、业务数据
业务数据指公司业务的数据来源,一般来源有多种,比如系统数据、埋点数据、其他数据,还有的会有互联网上的爬虫数据
2、数据同步
数据同步是从业务数据中抽取数据导入数据仓库,一般非实时需求大多采用T+1的方式,实时数据就要用到消息队列接入实时计算框架(spark streaming、flink等)
3、数据仓库
数据仓库一般采用hive,数据仓库这块包括分层建模理论、数据治理、元数据管理等等,这块是我当前工作做的事情,会重点关注
4、数据应用
数据应用就包括从数据仓库中所产出的数据报表、数据接口等,bi系统我们现在用的是superset、数据接口目前使用的是superapi
5、调度系统
调度系统是控制整个数据流动体系的调度,特别数据仓库分层后层级之间的数据流动控制,目前公司使用的是阿里云的dataworks,airflow也有一定的使用
4、技术目录
根据以上数据架构,以及hadoop生态系统,选取各类中比较有代表性的技术组件,给自己定个小目标,每部分都输出几篇博客,方便后续复习查询
- hdfs文件系统与maoreduce计算模型
理解hdfs文件系统的工作流程
理解mapreduce计算框架的工作流程
- hive数据仓库
理解hive组件的基本原理、执行计划、优化技巧
- hbase数据库
理解hbase的工作流程,理解hbase的设计原理
- spark(sql、streaming等)
理解spark基本概念、工作流程,掌握优化技巧
- 数仓建模方法论
掌握数据仓库设计方法,掌握关系模型、维度模型二者的关系和区别并能分别举例
- 机器学习相关
了解常见算法