阿里大数据工程师告诉你如何高效的学习大数据

虽然网上也有很多的学习路线,很多的方法建议,各类不同的工具,但是找到属于自己的才是最好的。下面我就来详细说下我的学习路线吧。

我还是要推荐下我自己创建的大数据资料分享群142973723,这是大数据学习交流的地方,不管你是小白还是大牛,小编都欢迎,不定期分享干货,包括我整理的一份适合零基础学习大数据资料和入门教程。

一、基础阶段

1、开始大数据学习之前,首先要把基础打好。我在学习大数据的过程中,学习的准备部分主要包括Java,Linux和MySQL的学习。具体的学习时间,就因人而异了。比如我有很好的C语言基础,我虽然第一次学习面向对象编程,但是编程的思路方面我还是很熟悉的。因此,我学习Java的时间,只需要2个星期即可。如果有经验的话,你会发现,学习Java的目的,主要包括以下这些方面:

a、熟悉编程思路,面向对象思想;

b、增加对集合,多线程,I/O,设计模式的理解

c、熟练使用类,接口,为后续各类自定义编程打下基础。

2、Linux的学习。作为开发人员,就要有开发人员的样子,你要是还天天玩windows,那就比较low了。因此,黑窗口才是真爱。作为开发人员主要使用的操作系统,linux是一切的基础。很多大数据的软件,操作,都是基于linux的。有余力的朋友,建议linux的学习时间可以定为3周左右,当然学的越好以后帮助越大。Linux的学习主要包括了以下方面:

a、Linux的基本命令,这个是跑不掉的。命令的查询,软件的解压缩,安装,各类操作的基本命令。

b、Shell脚本的编写。很多时候,命令不是自己一行行去敲的。作为一个程序员,必须尊重效率。能机器去做的事情,坚决不自己动手。脚本的编写,不仅是解放手写代码的开始,更是一个程序员的基本素养。

3、数据库的学习。不会数据库的程序员,就等于耍流氓。天天和数据打交道,你告诉我你不会数据库,这不是开玩笑嘛!当然作为大数据工程师,我们会接触各种各样的数据库,MySQL,oracle,DB2,等。作为初期的学习,MySQL是最佳的选择,装个客服端软件,简单上手。一两天就可以建立起你对数据库的认识。而作为大数据工程师,在数据库上的学习则要深刻的多,建议没接触过数据库的朋友,花上2至少两周,把MySQL玩到手软。作为前期基础准备阶段,你首先需要了解以下方面:

a、数据库的基本操作,增删改查,条件过滤,连表查询,窗口函数等。

b、JDBC的连接,扩展数据库的功能。

c、数据库的扩展知识,存储结构,要学好大数据,数据库能学多好就学多好。

二、核心阶段

大数据的学习,都是从对分布式思想的认识开始的。而目前最好的认识分布式思想的方法,就是对hadoop的深刻理解。hadoop的核心组件分为四大部分,分别为:HDFS,Yarn,Mapreduce和COMMON。下面大概介绍下这几个组件的学习。

1、HDFS的学习,核心思想就是对分布式的理解。详细的来说,要做到以下几个方面的认识:HDFS的架构;HDFS的读写流程;HDFS的容错机制;心跳机制;机架感应;数据块等。对以上流程,不仅要了解为什么,最好还能通过源码去分析,了解其设计原理,源码的阅读,不仅可以提高你的认识,更可以让你在后期的学习中,工作中,轻松通过修改源码解决各类问题。

2、Mapreduce的学习。分布式的计算框架,后期学习到的很多分布式计算都是借鉴了mapreduce的思想。mapreduce的计算分为map和reduce阶段。其学习可以从一个简单的wordcount程序开始。mapreduce的学习要深入分析源码,对其map,shuffle,reduce阶段进行深刻的理解。其中涉及到的各类组件,包括输入输出组件,combiner,mapper,reducer,shuffle,partitioner都要深入的学习。这里面涉及到的知识很多都会在工作的业务中碰到。如topN问题,自定义输入输出,二次排序问题,分区的使用等。

3、Yarn的学习。分布式资源调度组件。其核心是各类调度器,包括FIFO,Capacity,和 Fair调度器。了解其架构,增进对resourcemaneger和nodemanager,container,applicationmaster的理解等。后台启动线程jobtracter,testtracter等了解。

4、common组件,网上资源较少,用的也不错。主要是提供底层支持和工具。大概看看就好。

以上三大核心,就是hadoop原生最主要的部分。关于其起源,有时间的话,建议阅读下google的三篇开源论文-bigtable,GFS,和mapreduce。该阶段的学习尤为重要,对于思想的转变,对大数据学习的认识,以及后续学习的支持都至关重要。因此,建议多花些时间,4-5周的时间深刻的理解。通过以上的学习,就能够搭建起一个简单的分布式集群了。对于更高层次的要求,请继续往下看。

三、HA集群的搭建及其工具支持

完成对大数据的学习,研究hadoop的核心组件是最完美的路径。但是要提升自己的认识,满足企业的用人要求,就必须更进一步的深入。没有那个企业是搭一个伪分布,或者分布式集群就开始搞大数据的。因此,我们需要继续往下研究。

为了,保障集群的安全,企业中至少搭建的也是HA-高可用集群。2个至多个(hadoop3.0特性)主节点。HA集群的搭建,就设计到选主的问题,这就需要引入zookeeper。而大数据存储的问题,又引出了HBase,实时高效查询引出了redis。开发效率的需要,引出了Hive-基于mapreduce的sql数据仓库,azkaban任务流调度,sqoop数据迁移工具等。围绕着hadoop,衍生出的各类技术和工具,只要是业务中用的上的,作为大数据工程师,我们都需要去了解。下面我就从学习的角度,大概介绍下这些工具的使用。

1、zookeeper–分布式应用程序协调服务。

在聊到zookeeper的时候,很多初学者会以为zookeeper只是一个普通的应用程序协调服务,其实不然。虽然zookeeper学习起来比较简单,主要了解下他的znode节点,选举机制,了解下zookeeper的监听机制,锁机制。但是zookeeper确实hadoop生态中唯一无法被取代的模块。其最主要原因就是他是整个生态体系的协调者,只要需要监听,需要选主,都需要借助zookeeper的力量。分布式系统的容错机制,高可用机制,全都依靠的是zookeeper的力量。因此,对于zookeeper的学习,需要对其所有功能做到理解的十分透彻,对之后的学习将会产生极大的帮助。对于zookeeper的学习,请花上一周的时间。

2、Hive-基于mapreduce的类sql操作。极大的简化mapreduce的学习。通过几十行代码编写的mapreduce程序,经常只需要几个sql语句就可以搞定。这对程序员来说绝对是充满了诱惑的。想要成为一名大数据工程师,总不能先累死在mapreduce的编写上吧。所以hive是必须学好的一门技术。后期的数据清洗,将会大量的用到hive。hive学的好的朋友,直接就可以靠它吃饭。后期学习中,诸如HBase,mysql等,很多数据库中的东西,都需要导入到hive中进行处理。hive算是数据库与分布式计算之间的一个高速桥梁。常规的学习,一周时间即可。建议两周的学习时间,以达到企业的用人标准。

3、HBase的学习–高可用,分布式,基于列,适用于结构化和非结构化数据的存储系统。HBase的列式存储,非常的有意思。其基于rowkey,和列簇的存储与其表设计,极大的提高了查询效率和存储效率。HBase的存在,将数据库存储的容量从几百万行提高到了数十亿行,数百万列。真正的满足了大数据中大量数据的存储问题。Hbase存储也是分布式的,以Hregion为单位,会事先变现HLog。细分的话,每个Hregion包含多个hstore,memstore等。其架构包括zookeeper,Hmaster和Hregionserver。对HBase的学习,可以极大的拓宽你对数据库的了解,加深对分布式存储的理解。建议有时间的朋友可以学习1周,深刻理解下。

4、SQOOP的学习。—数据迁移工具。通常数据的存储是根据其特点,存储在不同的数据库中。工作中经常会遇到数据,大量数据之间的迁移。这时候,sqoop是我们最佳的选择。sqoop能够完成数据在hive,mysql,hbase,hdfs之间的迁移。通过直接的导入,或者编写api的方式,都能够完成。建议学习大数据的朋友,不想在工作中因为数据的出库入库而头疼的话,花上几天时间看看SQOOP。

5、flume–日志收集系统。数据的重要来源之一,就是收集日志。这一点在各大电商平台,尤为突出(当然花钱买也是土豪的不错选择)。flume软件的使用,能够解决你的数据来源问题。对于flume的学习,请从agent开始了解,去解析其每一个source,channel和sink的原理,及多个agent的组合方式。主要都是通过配置文件的方式进行配置。花上一两天,在自己的集群上演示一两次,十分的有必要。

6、kafka–消息中间件,高吞吐量的消息分布式订阅系统。kafka的架构虽简单,分为消费者,生产者和kafka集群。但是其作用巨大。比如电商的日志收集系统中,某些高峰时段,日志的收集和处理往往因为无法同步而造成数据丢失。kafka能够很好的解决这个问题。通过消息的发布订阅模式,能够很好的保持消息的可靠性,提供多个结构,多种消息消费模式。

7、redis基于内存存储的数据库。能够高效的进行数据的增删改查。当然也支持数据的持久化。在实时的读写环境中,效果极其显著。作为一个高性能的key-value数据库,其操作简单的,快速的特性,十分的受程序员的喜爱。而且还支持发布定于哦。后续对spark有兴趣的同学,一定愿意花时间学习学习redis。我相信一两天的学习,就会让你对redis爱不释手。

8、Azkaban–任务流调度工具。主要通过编写脚本你的方式,让你的工作更轻松。因为在企业中用的到,所以建议想要成为大数据工程师的朋友们还是花时间学习下。有编写shell脚本基础的朋友,azkaban的学习就小菜一碟了。当然简单的任务流调度,请用crontab就好。杀鸡就不要用牛刀了。否者你也可以上oozie。

9、Maven–项目搭建工具。简单的为节省你的时间。其依靠依赖方式导入jar,可以大大的减少因jat带来的问题,让你的项目搭建更加的随心所欲。一天时间,从此不再担心jar包问题。

10、git/svn–版本控制系统。这是为了让作为外行的你,显得更加专业而加入的学习内容。但是要注意的是,两者之间是存在较大的区别的。大概聊下两者之间的区别,方便朋友的选择。git是分布式的,而svn不是。git没有全局的版本号,svn有。git按元数据方式存储,而svn存储文件。svn不适合分支中再开分支,否者影响全世界,一个分支就是一个完整目录。而git中可以在自己的本地库无线开启分支。

以上就是我对大数据离线数据分析学习路线的一个认识。大体上,想学习大数据的朋友,按照上面的方式学习的话, 可以建立一个对大数据工程师的基本认识,达到一个初级大数据工程师的标准-当然,请把里面的关键部分都理解的深刻,技术操练到极致。学习加上实战,通过一两个项目的实战,相信大家都可以很好的掌握大数据基本技术。加油啦!

最后提一点,大数据的学习,最重要的是两点:

一、兴趣。如何判断自己是否有兴趣呢?当你看完我写的这一大段,发现自己口水直流的时候,就代表你是有兴趣的啦。

二、学习能力,这其中最重要的就是收集信息的能力。不懂的知识点,就多查网络资料。一个人讲得你听不懂,你就听另外一个人讲得。网络资源这么多,总有一个你喜欢的。

猜你喜欢

转载自www.cnblogs.com/AD321/p/9978668.html