大数据之路:非科班、零基础、转行大数据开发

文章略长,重点较多,建议收藏。

一、笔者背景

1、本科阶段
专业自动化,主要学习C语言、嵌入式、硬件等,拿过电设、飞思卡尔等国奖,没刷过算法、对软件几乎零基础
2、研究生阶段
硕士985,控制专业,研一开始,从零基础学习了Java基础、算法、大数据框架等。
3、收获offer
春招实习拿到了蚂蚁金服、拼多多、华为(终端)、远景能源、华泰证券(Java)等。
大数据之路:非科班、零基础、转行大数据开发_第1张图片

二、我为什么转行大数据开发

1、大家都选择Java开发,那我有什么优势?

当我决定转行时,身边的同学几乎都是Java,但是我想走一个与众不同的路线,当时可以选择算法或者大数据开发,感觉算法岗应该是神仙打架,而且一堆公式看不懂,所以最终选择了大数据开发,因为这个岗位既要学Java基础,也要学大数据框架,虽然学的比较多,但是,就算大数据学的不理想,也可以直接转向Java开发岗,两手准备,最后事实证明,我选择大数据开发是对的,当然中间也经历了痛苦和迷茫,差点放弃。

2、未来的职业规划
如果做Java的话,每天可能是针对不同的业务CURD,这样感觉好无聊啊,于是,希望做一些有挑战性的工作,比如组件优化、中间件、流计算、大数据存储等工作,所以,希望未来工作是少一些业务、多一些技术,这样可以帮助我技术提升和积累,未来技术路线走的更加长远。
3、未来是DATA时代
网上很多人说:互联网的后半程应该是数据时代,谁掌握数据,谁就能创造价值。我暂且相信了这句话,数据时代需要什么技术人才呢?数据可靠存储、数据计算、数据挖掘等等,感觉大数据开发还是有未来的。

三、学习计划与过程

大数据之路:非科班、零基础、转行大数据开发_第2张图片

1、第一阶段:深入Java体系
(1)Java语法基础:跟着毕向东老师的视频敲了一遍,看了《Java核心技术卷I》和《Java编程思想》这两本书,刚开始看编程思想是有点难度的,不懂的地方标记出来,后面学了一段时间,回过头再看,这样的话,Java的语法基础基本过关;
(2)数据库:看了《MySQL必知必会》,学会了sql语法,刷了几十到牛客上SQL题目,最后看了《MySQL技术内幕:InnoDB 存储引擎》中的索引部分(有点难),数据库基本过关;
(3)JVM和并发:开始学习《深入理解java虚拟机》、《Java高并发程序设计》这两本书,刚开始看,真心不知道再讲什么,但当后面学了多了,看了一些源码后,再看就明白了,前期看不懂是正常的;
(4)计算机基础:毕竟非科班,需要看的挺多的,看了《现代操作系统》、《图解TCP/IP》,重点掌握了一些关于内存、IO、TCP/IP、HTTP等方面的知识;
(5)Linux部分:看了《鸟哥Linux私房菜:基础篇》,然后自己装个Linux,练习指令操作,多多总结常见指令。
(6)缓存:看了《Redis设计与实现》 和《Redis深度历险》两本书,缓存基本过关;
(7)源码:推荐学习Java集合和并发包的部分源码,面试必问;
(8)架构:推荐看下《大型网站技术架构》,扩展自己的知识广度。
2、分水岭第二阶段:需要选择是Java后端还是大数据开发了
Java后端方向:要开始学习Spring框架那一套了,并做一个后端的项目,深入理解数据库、缓存、并发、spring底层等原理,在项目中体现这些基础,面试时可以表现出你学习的深度,不只是会用。
大数据开发方向:开始学习hadoop全家桶、spark、storm等流计算,下面第3点重点讲述。
3、第三阶段:深入大数据体系
(1)入门:个人感觉视频入门最快,我看了一个关于大数据组件的介绍、安装和使用的视频课程,了解了大数据中各个组件是干嘛的,视频需要的话,联系我。
(2)Hadoop原理:先后看了《Hadoop权威指南》、《Hadoop技术内幕:Yarn》、《HBase权威指南》,掌握了hadoop中的Mapreduce、YARN、HBASE、HDFS、Hive的基本原理;
(3)流计算:先后看了《Spark大数据处理技术》、《Storm分布式实时计算模式》和Flink官网介绍,分析了三者的优点和缺点,学了他们的计算调度原理、容错机制、语义等方面;
(4)分布式协议:主要学了《从paxos到zookeeper分布式一致性协议》 这本书,并根据网上博客学习Raft协议,将这些协议进行总结,并对zk进行深入学习;
(5)深入源码:我选择深入的是HDFS源码,结合《Hadoop 2.X HDFS源码剖析》书籍,看了大概3个月左右,中途看到怀疑人生,甚至想放弃大数据了,还好坚持了下来。也可以选择其他源码,只要是用Java写的就好。
(6)消息队列:这个对于Java后端的同学也是需要的,我主要学习时Kafka,根据网上总结一些常见面试题,看了官网的介绍,基本可以应付面试;
4、第四阶段:简历、算法与项目
这些点,根据自己情况进行发挥,后面单独写个文章讲解。
我自己大概花了2个月,完成了一个大数据项目,博客里面有:项目地址

你可能感兴趣的:(大数据学习之路)