大数据技术 - 学习之路(一)

大学的时候,记得班里好多同学学习Android、iOS开发,那时候客户端开发非常火,并且工作后工资也很高。但是我并没有心动,我觉得这么多人去学并不一定是件好事,很可能跟网站开发一样,一段时间市场饱和后就不会有那么大的需求量,现在看来这个判断是正确的。我想学习一门技术现在处于起步期,但是未来比较长的一段时间里发展前景比较好。那个时候是大四,正在跟同学做一个小创业项目,我在里面负责网站方面的建设,没事的时候经常上网,偶然发现大数据相关的文章。我觉得这可能是个新方向,移动互联网时代,我们上网的频率更高,时间更长,会有更多的数据产生,从而需要大数据技术做存储和计算。自从那以后就开始找大数据相关的资料,然后知道有 Hadoop 这么个东西,刚开始在网上找了几节入门级的免费视频,看完之后还是云里雾里,对大数据技术没有任何感知。并且那个时候(14年)大数据方面的工作机会比较小,小公司基本没有相关的技术,我还担心学了之后不好找工作。为了避免翻车,就买了付费的视频开始学习。每天睁开眼就开始学,一直学到半夜12点。坚持了俩月,最后找了大数据岗位的实习工作,算是正式上车了。到目前为止从事大数据相关的工作已经快4年了,技术方面接触了 Flume、Kafka、Hadoop、Spark、Hbase、Hive、Kylin 等框架,业务方面接触过定位数据、视频数据、搜索数据。觉得在大数据方面有一些积累,因此想做一个大数据技术方面的教程,供初学者参考。

学习路线

现在关于大数据入门教程很多,如果时间比较充裕可以找一套视频慢慢跟着学,毕竟听别人讲比自己看书学的要快。现在比较知名的一些培训网站应该都有免费的入门视频,可以找找看。如果没有大块的时候,可以看书或者看博客。学习大数据一般是先学 Hadoop,Hadoop在大数据领域的地位就不用在强调了。有些人可能会说是不是 Hadoop 已经过时了,其实并没有。一方面,Hive、Kylin等框架计算层面对 Hadoop 有依赖,并且 Spark 等新兴的框架也是基于Hadoop 的思想;另一方面,目前不少企业数据存储用的是 HDFS,数据处理仍然用 MapReduce,对于一些实时性要求不高的任务,MapReduce跑起来还是很稳的。

学习Hadoop 核心在于学习分布式存储和计算。学习大数据技术一个比较高的门槛就是要理解分布式。以前我们写的程序都是单机的,最多也就是个多线程。但大数据框架都是分布式的,需要学习数据如何分布式存储、如何保证可靠、机器之间如何通信、数据如何分散到不同的机器计算等,这是思维方式的转变。初学者可以在网上先找一些评论比较高的入门资料,也可以跟着本教程学习,先整体理解分布式的概念。有了点基础之后再学习《Hadoop权威指南》,学完之后基本上对Hadoop框架有了深入理解,能够熟练的写 MapReduce 做数据处理。

掌握 Hadoop 之后,再往下走有两个方向。一个方向是做实时计算,需要学习 Spark 和 Flink 等框架,这两个框架都是批流统一分布式计算框架。Spark 目前比较主流,社区也比较完善,但是开发语言用 Scala,并且分布式计算的思想在 Hadoop 之上又抽象了许多概念,因此入门有些门槛,一旦入门口后再开发就很顺手了。Spark的书可以看看《Spark技术内幕》。Flink 之前生态不如 Spark,但最近阿里将 Blink 贡献给 Flink 社区,相信以后 Flink 的发展会更好,社区会更强大。Flink 做更适合做硬实时的计算。另一个方向就是数据仓库建设,用到 Hive、Kylin 等框架。基本上每个公司都有数仓建设团队,Hive 适合离线大数据计算,使用SQL语言开发。SQL语言门槛比较低,所有有些公司会培养业务人员或者产品经理写SQL,而程序员更专注数仓的建设。Kylin主要是满足交互式查询,适合做多维分析。多维分析的框架除了Kylin还有很多,大家可以自行上网查阅对比。这个方向更加侧重数据建模,相关的的书推荐《Hive权威指南》、《维度建模工具箱》、《阿里巴巴大数据之路》。

工具以及技术掌握熟练之后,再往下走就是数据分析。数据最终是要提供决策,所以,数据分析的能力很重要。如果只是写个SQL、跑个数,长期下去并不利于我们的成长。我们要经常对数据作分析,培养数据的敏感度,能够通过数据对产品提出指导意见。这个过程可能会用到数据挖掘相关的技术。做大数据相关的工作跟其他的程序员还是有比较大的区别。 一方面我们能够掌握所有的数据,另一方面我们可以通过数据分析指导决策。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgjyj.html