引言
最近有很多人问我如何学习大数据?我也是思考了很多时日才动笔写下此文。一方面我自己还只是大数据学习中的一个小学生,贸然动笔怕贻笑大方;另一方面大数据本身领域博大精深,其涵盖领域之广技术种类之多确实很难用一篇文章囊括。怎奈“下雨天打孩子,闲着也是闲着”,况笔者一直坚持写技术类的博客,今天也请允许我写一点务虚类的东西吧。
本文的目的是希望给所有大数据初学者规划一条比较清晰的学习路线,帮助它们开启大数据学习之旅。鉴于大数据领域内的技术绚丽繁复,每位大数据初学者都应该根据自己的实际情况制定专属的学习路径。
要说当下IT行业什么最火?ABC无出其右。所谓ABC者,AI + Big Data + Cloud也,即人工智能、大数据和云计算(云平台)。每个领域目前都有行业领袖在引领前行,今天我们来讨论下大数据这个方向。
大数据,即Big Data,关于它的定义很多,我这里不再赘述了。最权威的莫属IBM的定义,读者可以自行查阅。既然本文关注如何学习大数据,那么我们首先就要定义大数据领域内的不同角色设定。这样各位才能根据自身实际情况找准自己的定位从而开启学习过程。
大数据人工智能发展趋势与前景 戳我阅读
最全最新的大数据系统交流路径!!戳我阅读
角色
以我的愚见,当下大数据行业有两类角色:
大数据工程
大数据分析
这两类角色相互依存但又独立运作,何意?没有大数据工程,大数据分析便无从谈起;但倘若没有大数据分析,我也实在想不出大数据工程存在的理由。这就类似于结婚和谈恋爱——恋爱的目的是为了结婚,且不以结婚为目的的谈恋爱都是耍流氓。
具体来说,大数据工程需要解决数据的定义、收集、计算与保存的工作,因此大数据工程师们在设计和部署这样的系统时首要考虑的是数据高可用的问题,即大数据工程系统需要实时地为下游业务系统或分析系统提供数据服务;而大数据分析角色定位于如何利用数据——即从大数据工程系统中接收到数据之后如何为企业或组织提供有产出的数据分析,并且确实能够帮助到公司进行业务改善或提升服务水平,所以对于大数据分析师来说,他们首要解决的问题是发现并利用数据的价值,具体可能包括:趋势分析、模型建立以及预测分析等。
简单总结一下,大数据工程角色需要考虑数据的收集、计算(或是处理)和保存;大数据分析角色则是执行数据的高级计算。
我们属于哪种角色?
既然我们了解了大数据领域内的角色分类,下面自然就需要“对号入座”确定自己的定位,这样才能有的放矢地开始大数据学习。在考虑这个问题时,我们需要参考两方面的因素:
专业知识背景
行业经验
这里的专业知识背景不是指代学历、院校这种背景,而是你对某些IT技术的了解程度。即使你不是计算机专业出身,只要你对C语言有一腔热血,怕是C之父Dennis Ritchie也不敢小瞧你。因此,这里的专业知识其实就只有两个:
计算机专业知识,比如操作系统,编程语言,计算机运行原理等
数学知识,这里指代的是高等数学,比如微积分、概率统计、线性代数和离散数学等, 不是x * x + y * y = 1画出来是什么图形这样的数学
而行业经验指的是你相关领域内的工作经验,具体可以分为三档:
菜鸟
有一定经验的工程师
资深专家——现在在大数据领域有个更cool的名字:数据科学家,比如前百度首席数据科学家:吴恩达博士
Okay,现在我们就可以根据上面的分类来定义自己的角色。比如拿笔者来说,我对自己的定位是:“我是一个计算机专业毕业的工程师,有一定数学基础(特别是在微积分和线性代数方面),但数理统计和概率论部分是我的弱项。” 另外最好别打肿脸充胖子,如果之前没什么经验,承认自己是菜鸟也没事,关键是找准自己的定位。
确定自己的定位后,我们需要对应到特定的大数据角色,以下是一些基本法则:
如果您具有良好的编程基础且深入了解计算机的交互方式以及互联网底层技术原理,但数学和统计学掌握不深,那么大数据工程可能是您今后学习的方向
如果你有一定的编程基础(掌握一些高级语言,如Python等)同时又很强的数学功底,那么大数据分析是您今天努力的方向
大数据学习路线,努力追求一下。
一、Hadoop入门,了解什么是Hadoop
1、Hadoop产生背景
2、Hadoop在大数据、云计算中的位置和关系
3、国内外Hadoop应用案例介绍
4、国内Hadoop的就业情况分析及课程大纲介绍
5、分布式系统概述
6、Hadoop生态圈以及各组成部分的简介
7、Hadoop核心MapReduce例子说明
二、分布式文件系统HDFS,是数据库管理员的基础课程
1、分布式文件系统HDFS简介
2、HDFS的系统组成介绍
3、HDFS的组成部分详解
4、副本存放策略及路由规则
5、NameNode Federation
6、命令行接口
7、Java接口
8、客户端与HDFS的数据流讲解
9、HDFS的可用性(HA)
三、初级MapReduce,成为Hadoop开发人员的基础课程
1、如何理解map、reduce计算模型
2、剖析伪分布式下MapReduce作业的执行过程
3、Yarn模型
4、序列化
5、MapReduce的类型与格式
6、MapReduce开发环境搭建
7、MapReduce应用开发
8、更多示例讲解,熟悉MapReduce算法原理
四、高级MapReduce,高级Hadoop开发人员的关键课程
1、使用压缩分隔减少输入规模
2、利用Combiner减少中间数据
3、编写Partitioner优化负载均衡
4、如何自定义排序规则
5、如何自定义分组规则
6、MapReduce优化
7、编程实战
五、Hadoop集群与管理,是数据库管理员的高级课程
1、Hadoop集群的搭建
2、Hadoop集群的监控
3、Hadoop集群的管理
4、集群下运行MapReduce程序
六、ZooKeeper基础知识,构建分布式系统的基础框架
1、ZooKeeper体现结构
2、ZooKeeper集群的安装
3、操作ZooKeeper
七、HBase基础知识,面向列的实时分布式数据库
1、HBase定义
2、HBase与RDBMS的对比
3、数据模型
4、系统架构
5、HBase上的MapReduce
6、表的设计
八、HBase集群及其管理
1、集群的搭建过程讲解
2、集群的监控
3、集群的管理
九、HBase客户端
1、HBase Shell以及演示
2、Java客户端以及代码演示
十、Pig基础知识,进行Hadoop计算的另一种框架
1、Pig概述
2、安装Pig
3、使用Pig完成手机流量统计业务
十一、Hive,使用SQL进行计算的Hadoop框架
1、数据仓库基础知识
2、Hive定义
3、Hive体系结构简介
4、Hive集群
5、客户端简介
6、HiveQL定义
7、HiveQL与SQL的比较
8、数据类型
9、表与表分区概念
10、表的操作与CLI客户端演示
11、数据导入与CLI客户端演示
12、查询数据与CLI客户端演示
13、数据的连接与CLI客户端演示
14、用户自定义函数(UDF)的开发与演示
十二、Sqoop,Hadoop与rdbms进行数据转换的框架
1、配置Sqoop
2、使用Sqoop把数据从MySQL导入到HDFS中
3、使用Sqoop把数据从HDFS导出到MySQL中
十三、Storm
1、Storm基础知识:包括Storm的基本概念和Storm应用
场景,体系结构与基本原理,Storm和Hadoop的对比
2、Storm集群搭建:详细讲述Storm集群的安装和安装时常见问题
3、Storm组件介绍: spout、bolt、stream groupings等
4、Storm消息可靠性:消息失败的重发
5、Hadoop 2.0和Storm的整合:Storm on YARN
6、Storm编程实战