1.自我介绍
二本学校毕业5年,在某已倒闭手机厂商做安卓开发3年,到银行外包写SQL1年,现在在某大厂做大数据开发工作即将一年,月处理数据量PB级别。
2.为什么要转型
转型有两个原因,一个是技术相关的,刚毕业心态没调整好,没有把心思放在技术上,然后做的工作技术要求也不高,就这么混了几年;一个是工资相关的,工资真尼玛低,都快混不下去了。
3.转型的心态和行动
16年公司内部培训的时候了解到大数据,那时候还没放心思去学。因为以上说的原因开始专心搞大数据,每天晚上8点准时学习到12点。从Hadoop开始,到Hive、Spark、Hbase、Redis、Mongodb,storm、zookeeper,把大数据常见的组件都学了一遍。
4.转型过程
那时候基本上是按照每个月一个组件,然后上网找视频,对着视频边看边敲代码。
最大的困难有几个:
一是大数据领域组件太多,相应的知识点就很多,学了前面忘了后面;
二是没有实战经验,没有真实的应用场景,不知道每个组件在生产中具体是怎么应用的,心里没底。
还有一个,就是公司倒闭了,顿时陷入了失业的状态。19年初的时候公司招聘很少,要招都是招高级的,这种就是实打实的考验功力了,所以基本上是面一个挂一个。那时候只剩下一个信念,相信自己一定能成功,每天脑子里都在想着知识点,吃饭想,走路想,睡觉想。
中间实在没办法了,就去银行外包先做起,做传统数据仓库相关的。主要就是用hql写SQL,框架有人定好了,就是按照模板往里填SQL。为了生活走到了这一步,心里一直想着几个月后一定要往前迈一步,可以去一个小厂做有技术含量的大数据开发,更好的就是能去大厂做大数据开发了。
每天的状态就是,早上六点起床坐一个小时公交到公司上班,白天做公司的事情,晚上下班马上自己学习大数据视频,一边跟着敲代码,一边脑子里面想面试题,就是要把知识点刻在脑子里。反正每天都在想着怎么学更多的东西,中间向公司比较有经验的人咨询,说实话没有得到什么帮助。
然后又关注了很多大数据的公众号,加了很多大数据的群,了解大数据从业者平时工作是做什么,然后中间有幸和好几位公众号作者交流了,他们都很无私的帮助了我。从写简历,到面试,到大数据知识点,学了很多,很感谢这一路帮助过我的人。
5.学习过程
首先先把Java相关的复习了一遍,然后学习大数据的东西。
Java方面(一个半月)
由于之前一直在写业务代码,然后业余时间也没有专研,导致好多Java知识都忘了,所以先从Java开始学习。学习目标是先只要求把JavaSE复习完,不然时间不够。
学习手段是看《Java编程思想》刷了一遍,重点关注数组和并发两个章节,中间也会找各大厂的面试题,边看知识点,边敲代码,然后刷题,做到一看到相关的题目,脑子里面就会有完整的知识体系。
接着是算法和数据结构方面,就刷《剑指offer》和Leecode上面的题目,每天刷两到三道题,做到看到题目脑子里面有大概的思路。
大数据方面(五个月)
在网上报了个培训班,跟着他们学。现在想起来,那个培训班很坑,好几个老师分别讲不通的大数据组件,没有连贯性,讲的也很浅。那时候报的目的也是说自己摸索太慢,想花钱找捷径,最终目的勉强算达到了吧。
它的课程是先Linux基础知识,Hadoop,hive,HBASE,redis,MongoDB,storm,辅助框架,Scala,kafka,spark,最后两个项目(电商和交通相关的)。
如果现在让我去学,是数据仓库或者离线实时业务代码开发方向,首先会先去学Hadoop,这个是基础,大数据很多东西都是基于Hadoop延伸出来的。Hadoop里面,最重要的肯定是MR整个流程,包括map端做了什么,shuffle做了什么,reduce做了什么,中间还把源码看了一遍,然后在源码里面找到MR流程的每一个对应点。
然后是hdfs的原理,包括数据的读写原理,数据副本之前的协作等等。最后就是yarn了,yarn是作为资源调度的,这个没有太多内容。
如果是数仓的,可以再学习hive,花半个月了解hive语法,组成原理,再了解点数据仓库知识,就可以去面试了,问到啥不懂的,马上学,这个是学习最快的方式。现在才知道,不要等到自己认为准备好了再去做,因为从来没有准备好的时候,做着做着你也就做成了,一边面试一边学习。
如果是做离线实时业务开发的,那要多学点。花两个星期看下kafka,目标是kafka会用而且常见的原理能解释,如kafka的producer、consumer的使用,topic和partition这些,ISR等等。花两个星期看下HBASE,了解读写原理,数据存储方式,rowkey设计以及热点问题等等。
接着就是