每个人也存在学习上的低谷点,笔者也是芸芸众生,自然也有一些只能通过码字才能释怀的情景。在校外毕设时候接触了一些大数据的知识点,但是在学习上因为其偏于底层而没有深入进去,但很明显,有些时候还是需要硬着头皮学下去。特此,在一年前看了阿里封神的一篇对于“Hadoop学习之路”的讲解,今天也将其分享出来,也是自己学习的一个起点。
转载地址:阿里封神谈hadoop学习之路
1. 引言
当前,越来越多的同学进入大数据行业,有的是底层的技术,有的是工程,有的是算法,有的是业务。每个产品、都需要工程化的实现,以前,工程师都是操练着
java/python/c等各种语言操纵中各类的软件,比如jquery,spring、mysql,实现产品的业务逻辑。
在大数据时代,要想个性化实现业务的需求,还是得操纵各类的大数据软件,如:hadoop、hive、spark、hbase、jstorm等。笔者(阿里封神)混迹Hadoop圈子多年,
经历了云梯1、ODPS等项目,目前base在E-Mapreduce。在这,笔者尽可能梳理下,本文是围绕hadoop的。
注意:对于算法、机器学习是另一个范畴,本篇不涉及,不过从事机器学习算法的研发,能力最好在中级之上。
要想成为专家,并未一朝一夕,需要自己在业余时间花费较多的时间,我们一起加油!
2. 初级
开始接触hadoop,最好还是有语言工程等相关的基础。如果工程能力、思维能力比较强,其实学习起来很快的。
- 自己直接写一些mapreduce、spark相关的代码去解决一些业务问题(WorldCount经典例子)
- 熟悉hadoop的基本理论知识
- 多看看官方的文档(可以试着独立搭建一下单节点或者集群)
- 知晓大体的hadoop体系架构,每个角色能解决的问题
- 最好能体系的看下《Hadoop权威指南》 (这本书本人也是买了一本,但是只看了前面基础的一部分)
3. 中级
这个阶段,基本就是想进一步了解hadoop本身的(可能这一步还是笔者很欠缺的地方,初级有了一部分进展,这部分无论对于编程能力还是理论基础都是一方面的挑战)
- 前提开发能力较强,比如: java能力
- 熟悉ETL/流失计算/图计算/机器学习各种原理
- 看一些社区hadoop的代码,出现问题能直接看源码解决
- 能去优化hadoop的一些性能问题,知晓大体性能的瓶颈点
- 可以改造内核,或者参与社区开发
- 有较多的大数据的项目经验,做过复杂项目
- 可以看下更多的1-2个计算引擎
4. 高级
在这个阶段,一般书籍就没有太多的用处,一般需要看看paper
- 修改各种引擎的核心代码,这些包括:hadoop/spark/flink/strom/hive/hbase/kafka/等
- 学习力强,可以迅速看清楚各种框架
- 有较强的分布式理论知识
- 能触类旁通,创新出一套新的大数据引擎,比如:spark
- 能前瞻性预测未来引擎发展方向
5. 建议
- 最好的学习方式是:动手,动手写code
- 多参加技术会议,融入hadoop圈子,如:hadoop submit,spark submit,有时候一些城市会有一些交流会
- 关注Cloudera、databricks、阿里云E_MapReduce 等博客
- 多关注一些群,可以加笔者的微信(fengshenwukong),笔者拉下
- 多关注一些圈子内的微博号或者同学,可以从笔者的微博关注里面找
- 关注你关注的软件的邮件列表
- 多写写博客,分享自己的心得,把知识沉淀下来
- 多关注社区的发展
6. 推荐的资料
hadoop生态资料太多,google一下一大把,笔者这里列出的都是基本的:(有些链接可能失效了,因此可以去转载地址中查看)
首先推荐《hadoop权威指南》,基本会讲述hadoop生态的各个组件,是不错的书籍。
再次就是各个软件的官方文档,例如:hadoop、spark、kafka、
Hadoop基础及ETL
主要包括Hadoop Yarn、HDFS、Hadoop MapReudce、Hive、Spark SQL等
再次就是各个软件的官方文档,例如:hadoop、spark、kafka、
Hadoop基础及ETL
主要包括Hadoop Yarn、HDFS、Hadoop MapReudce、Hive、Spark SQL等
- 书籍:《Spark大数据处理技术》
- 书籍:《Hive编程指南》
- 书籍:《Hadoop技术内幕:深入解析YARN架构设计与实现原理》
- 书籍:《Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理》
- 书籍:《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》
- 论文:Bigtable: A Distributed Storage System for Structured Data
- 论文:MapReduce: Simplified Data Processing on Large Clusters
- 论文:The Google File System
- 论文:Spark: Cluster Computing with Working Sets
- 论文:Spark SQL: Relational Data Processing in Spark
- 博客:Spark源码分析
主要包括
Jstorm、Spark Streaming
- 官方文档:JStorm Chinese Documentation
- 官方文档:Spark Streaming
主要包括的是Hbase、Impala
- 书籍: 《HBase权威指南》
- 官方文档:Apache Impala