大数据技术学习路线指南
1.前言
-
三个发展方向
- 平台搭建优化/运维/监控
- 大数据开发/设计/架构
- 数据分析/挖掘
2.大数据的发展史
-
启蒙阶段:数据仓库的出现
-
传统的数据仓库,第一次明确了数据分析的
应用场景
,并采用单独的解决方案去实现,不依赖业务数据库。 -
技术变革:Hadoop诞生
-
优势
-
完全分布式
- 可以采用廉价机器搭建集群,完全可以满足海量数据的存储需求。
-
弱化数据格式
- 数据模型和数据存储分离,可以满足对异构数据的分析需求。
-
-
-
数据工厂时代:大数据平台兴起
-
数据价值时代:阿里提出数据中台
- 避免数据的重复计算,通过数据服务化,提高数据的共享能力,赋能业务。
3.大数据方面核心技术有哪些?
大数据处理框架
数据采集与预处理、数据存储、数据清洗、数据查询分析和数据可视化。
-
数据采集
数据来源主要是两类,第一类是各个
业务系统
的关系数据库,通过sqoop
或者cannal
等工具进行定时抽取
或者实时同步
;第二类是各种埋点曰志
,通过Flume
进行实时收集。 -
数据存储
收集到数据后,下一步便是将这些数据存储在
HDFS
中,实时日志流情况下则通过Kafka
输出给后面的流式计算弓I擎。 -
数据分析
包括
离线处理
和流处理
两种方式,对应的计算引擎包括MapReduce、 Sparks、 Flink等,处理完的结果会保存到已经提前设计好的数据仓库中,或者HBase、 Redis. RDBMS等各种存储系统上。 -
数据应用
包括数据的可视化展现、业务决策、或者AI等各种数据应用场景。
大数据学习路线图
1.Java语言
- 以Java语言为基础掌握面向对象编程思想所涉及的知识,以及面向对象编程,然后主流的SSM、Spring Boot等开源框架最好也能掌握。
2.MySQL数据库
- 掌握关系型数据库的原理,主要是各种复杂SQL语句的编写,这会对后面学Hive 数仓的HQL起到事半功倍的效果。
3.Linux操作系统
- 学会shell就能看懂脚本这样能更容易理解和配置大数据集群。
4.Hadoop技术学习
-
这是现在流行的大数据处理平台几乎已经成为大数据的代名词,所以这个是必学的。Hadoop里面包括几个组件
HDFS、 MapReduce和Yarn
。- HDFS是存储数据的地方就像我们电脑的硬盘一样文件都存储在这个上面
- MapReduce是对数据进行处理计算的,它有个特点就是不管多大的数据只要给它时间它就能把数据跑完,但是时间可能不是很快所以它叫数据的批处理。
- Yarn是体现Hadoop平台概念的重要组件有了它大数据生态体系的其它软件就能在Hadoop上运行了, 这样就能更好的利用HDFS 大存储的优势和节省更多的资源,比如我们就不用再单独建一个spark的集群了, 让它直接跑在现有的HadoopYarn上面就可以了 。
-
4.1学会百度与Google
- 自己搭建Hadoop, 请使用第一步和第二步,能让它跑起来就行。建议先使用安装包命令行安装,不要使用管理工具安装。另外:Hadoop1.0知道它就行了, 现在都用Hadoop2.0。
-
4.2参考资料首选官方文档
-
4.3先让Hadoop跑起来
-
4.4试试使用Hadoop
-
4.5你该了解它们的原理了
-
4.6自己写一个MapReduce程序
5.数据仓库Hive
- Hive的底层是MapReduce, 你只要写HQL (和SQL差不了多少)就完事了!
6.数据采集Sqoop / Flume / DataX
-
sqoop
把
MysQL里的数据导入到Hadoop
里的。当然你也可以不用这个,直接把MysQL 数据表导出成文件再放到HDFS上也是一样的,当然生产环境中使用要注意MysQL的压力。 -
Flume
- 分布式的
海量日志采集和传输
框架 - Flume可以实时的从网络协议、消息系统、文件系统采集日志,并传输到
HDFS
上。因此,如果业务有这些数据源的数据,并且需要实时的采集,那么就应该考虑使用Flume。
- 分布式的
7.快一点吧Spark
- Spark SQL应运而生,它是用来弥补基于MapReduce处理数据速度上的缺点,它的特点是把数据装载到内存中计算而不是去读慢的要死进化还特别慢的硬盘。
- 特别适合做迭代运算,所以算法流们特别稀饭它。它是用scala编写的。java语言或者scala都可以操作它,因为它们都是用JVM的。
8.数据传输Kafka
- 数据多了同样也需要排队处理,这样与你协作的其它同学不会叫起来,你干吗给我这么多的数据(比如好几百G的文件) 我怎么处理得过来。
- 这时,使用Flume采集的数据,不是直接到HDFS上,而是先到Kafka, Kafka中的数据可以由多个消费者同时消费,其中一个消费者,就是将数据同步到HDFS上。
- 目前
Flume + Kafka
, 在实时流式曰志的处理非常常见,后面再通过sparkstreaming
等流式处理技术,就可完成日志的实时解析和应用。
9.任务调度Oozie
/ Azkaban
- 数据
采集
、数据交换
同样是一个个的任务 - 有的是
定时触发,
有点则需要依赖其他任务
来触发。 - 调度监控系统是整个数据平台的中枢系统,类似于
Appmaster
,负责分配和监控任务。
10.实时数据的处理Flink /Spark Streaming
需要实时指标的业务场景
- 实时基本可以分为
绝对实时
和准实时
,绝对实时的延退要求一般在毫秒级
,准实时的延退要求一般在秒、分钟级
。 - 对于需要
绝对实时
的业务场景,用的比较多的是Storm
,对于其他准实时的业务场景,可以是 Storm,也可以是 Spark Streaming,简单业务场景 Kafka Streams也能搞定,当然现在最火的是Flink
。
11..数据对外(支撑业务)
-
离线
每天将前一天的数据提供到指定的数据源(DB、FILE、FTP)等;离线数据的提供可以采用 Scoop、 Datax等离线数据交換工具。
-
实时
-
在线网站的推荐系统,需要实时从数据平台中获取给用户的推荐数据,这种要求延时非常低(50毫秒以内)。
-
根据延时要求和实时数据的查询需要,可能的方案有: Hbase、 Redis、 Mongodb、 Elasticsearch等.
分布式数据库
Hbase
,这是 Hadoop生态体系中的 NOSQL数据库,它的数据是按照key和 values的形式存储的并且key是唯一的,所以它能用来做数据的排重
,它与MSQL相比能存储的数据量大很多。所以他常被用于大数据处理完成之后的存储目的地。了解
Mongodb
及其它分布式数据库技术,能够掌握分布式数据库原理、应用场景、 Hbase 数据库的设计、操作等,能结合Hive等工具进行海量数据的存储于检索。
-
-
OLAP分析
- OLAP除了要求
底层的数据模型较规范
,另外,对查询的响应速度要求也越来越高,可能的方案有:Impala、 Presto、 SparkSQL、Kylin
。如果你的数据模型比较规模,那么Kylin是最好的选择。
- OLAP除了要求
-
即席查询
- 即席査询的数据比较随意,一般很难建立通用的数据模型,因此可能的方案有 Impala、 Presto、 Sparksql。
12.机器学习SparkMlLib
-
分类问题
- 分类和多分类,二分类就是解決了
预测
的问题,就像预测一封邮件是否垃圾邮件;多分类
解決的是文本的分类;
- 分类和多分类,二分类就是解決了
-
聚类问题
- 从用户搜索过的关键词,对用户进行大概的归类。
-
推荐问题
- 根据用户的历史览和点击行为进行相关推荐。大多数行业,使用机器学习解決的,也就是这几类问题。
4.大数据下的数仓体系架构
-
数仓系统一般采用下图所示的分层结构。
- 按照这种分层方式,我们的开发重心就在dwd层,就是明细数据层,这里主要是一些宽表,存储的还是明细数据;到了dws层,我们就会针对不同的维度,对数据进行聚合了,按道理说, dws层算是集市层,这里一般按照主题进行划分,属于维度建模的范畴;ads就是偏应用层,各种报表的输出了。