大数据学习路线
一、大数据介绍
大数据本质也是数据,但是又有了新的特征,包括数据来源广、数据格式多样化(结构化数据、非结构化数据、excel文件、文本文件等)、数据量大(最少也是tb级别的、甚至可能是pb级别)、数据增长速度快等。
针对以上主要的4个特征我们需要考虑以下问题:
-
数据来源广,该如何采集汇总?,对应出现了sqoop,cammel,datax等工具。
-
数据采集之后,该如何存储?,对应出现了gfs,hdfs,tfs等分布式文件存储系统。
-
由于数据增长速度快,数据存储就必须可以水平扩展。
-
数据存储之后,该如何通过运算快速转化成一致的格式,该如何快速运算出自己想要的结果?
对应的mapreduce这样的分布式运算框架解决了这个问题;但是写mapreduce需要java代码量很大,所以出现了hive,pig等将sql转化成mapreduce的解析引擎;
普通的mapreduce处理数据只能一批一批地处理,时间延迟太长,为了实现每输入一条数据就能得到结果,于是出现了storm/jstorm这样的低时延的流式计算框架;
但是如果同时需要批处理和流处理,按照如上就得搭两个集群,hadoop集群(包括hdfs+mapreduce+yarn)和storm集群,不易于管理,所以出现了spark这样的一站式的计算框架,既可以进行批处理,又可以进行流处理(实质上是微批处理)。
-
而后lambda架构,kappa架构的出现,又提供了一种业务处理的通用架构。
-
为了提高工作效率,加快运速度,出现了一些辅助工具:
- ozzie,azkaban:定时任务调度的工具。
- hue,zepplin:图形化任务执行管理,结果查看工具。
- scala语言:编写spark程序的最佳语言,当然也可以选择用python。
- python语言:编写一些脚本时会用到。
- allluxio,kylin等:通过对存储的数据进行预处理,加快运算速度的工具。
以上大致就把整个大数据生态里面用到的工具所解决的问题列举了一遍,知道了他们为什么而出现或者说出现是为了解决什么问题,进行学习的时候就有的放矢了。
二、大数据相关工作介绍
大数据方向的工作目前主要分为三个主要方向:
- 大数据工程师
- 数据分析师
- 大数据科学家
- 其他(数据挖掘等)
【必须掌握的技能】
- linux 基本操作
- hadoop(hdfs+mapreduce+yarn )
- hbase(javaapi操作+phoenix )
- hive(hql基本操作和原理理解)
- kafka
- storm/jstorm
- scala
- python
- spark (core+sparksql+spark streaming )
- 辅助小工具(sqoop/flume/oozie/hue等)
【高阶技能】
- 机器学习算法以及mahout库加mllib
- r语言
- lambda 架构
- kappa架构
- kylin
- alluxio
三、学习路径
1)linux学习(鸟哥教材)
2)java 高级学习(《深入理解java虚拟机》、《java高并发实战》)
3)zookeeper学习
4)hadoop (《hadoop 权威指南》)