0基础怎么学习大数据?成为大数据构架师入门到精通的学习路线

近几年我们经常听到AI人工智能、大数据、机械进修等等,似乎良多企业都已经涉足这些行业停止研究,那么想体味、想进入这些行业我们应该怎样做呢?科多大数据带你来进修一下。

经常有初学者问我,本身想往大数据标的目的生长,该学哪些手艺,进修道路是什么样的,感受大数据很火,就业很好,薪资很高。若是本身很迷茫,为了这些缘故缘由想往大数据标的目的生长,也可以,那么我就想问一下,你的专业是什么,对付计较机/软件,你的乐趣是什么?是计较机专业,对把持体系、硬件、搜集、办事器感乐趣?是软件专业,对软件开发、编程、写代码感乐趣?仍是数学、统计学专业,对数据和数字特别感乐趣。

大数据学习群:716581014

其实这就是想告诉你的大数据的三个生长标的目的,平台搭建/优化/运维/监控、大数据开发/ 设计/ 架构、数据分析/发掘。请不要问我哪个随意,哪个前景好,哪个钱多。

先扯一下大数据的4V特征:

·数据量大,TB->PB

·数据类型繁多,构造化、非构造化文本、日志、视频、图片、地舆位置等;

·商业价值高,可是这种价值必要在海量数据之上,经由过程数据分析与机械进修更快速的发掘出来;

·措置时效性高,海量数据的措置需求不再局限在离线计较傍边。

现如今,正式为了应对大数据的这几个特点,开源的大数据框架越来越多,越来越强,先列举一些常见的:

·文件存储:Hadoop HDFS、Tachyon、KFS

·离线计较:Hadoop MapReduce、Spark

·流式、实时计较:Storm、Spark Streaming、S4、Heron

·K-V、NOSQL数据库:HBase、Redis、MongoDB

·资源办理:YARN、Mesos

·日志搜集:Flume、Scribe、Logstash、Kibana

·消息体系:Kafka、StormMQ、ZeroMQ、RabbitMQ

·查询分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid

·分布式和谐办事:Zookeeper

·集群办理与监控:Ambari、Ganglia、Nagios、Cloudera Manager

·数据发掘、机械进修:Mahout、Spark MLLib

·数据同步:Sqoop

·使命调度:Oozie

目炫了吧,上面的有30多种吧,别说精晓了,全数都市使用的,估量也没几个。就我小我而言,首要经历是在第二个标的目的(开发/设计/架构),且听听我的建议吧。

第一章:初识Hadoop

1.1 学会百度与Google

非论碰着什么问题,先试试搜索并本身处理。Google首选,翻不外去的,就用百度吧。

1.2 参考质料首选官方文档

特别是对付入门来说,官方文档永久是首选文档。信托搞这块的大多是文化人,英文拼集就行,其实看不下去的,请参考第一步。

1.3 先让Hadoop跑起来

Hadoop可以算是大数据存储和计较的开山开山祖师,如今大多开源的大数据框架都依靠Hadoop或者与它能很好的兼容。

关于Hadoop,你至少必要搞清楚以下是什么:

·Hadoop 1.0、Hadoop 2.0

·MapReduce、HDFS

·NameNode、DataNode

·JobTracker、TaskTracker

·Yarn、ResourceManager、NodeManager

本身搭建Hadoop,请使用第一步和第二步,能让它跑起来就行。建议先使用安装包呼吁行安装,不要使用办理工具安装。别的:Hadoop1.0晓得它就行了,如今都用Hadoop 2.0.

1.4 试试使用Hadoop

HDFS目录把持呼吁;上传、下载文件呼吁;提交运转MapReduce示例轨范;翻开Hadoop WEB界面,检察Job运转状态,检察Job运转日志。晓得Hadoop的体系日志在哪里。

1.5 你该体味它们的事理了

MapReduce:若何分而治之;HDFS:数据到底在哪里,什么是副本;

Yarn到底是什么,它能干什么;NameNode到底在干些什么;Resource Manager到底在干些什么;

1.6 本身写一个MapReduce轨范

请模仿WordCount例子,本身写一个(照抄也行)WordCount轨范,

打包并提交到Hadoop运转。你不会Java?Shell、Python都可以,有个工具叫Hadoop Streaming。若是你认真完成了以上几步,恭喜你,你的一只脚已经进来了。

第二章:更高效的WordCount

2.1 学点SQL吧

你晓得数据库吗?你会写SQL吗?若是不会,请学点SQL吧。

2.2 SQL版WordCount

在1.6中,你写(或者抄)的WordCount一共有几行代码?给你看看我的:

SELECT word,COUNT(1) FROM wordcount GROUP BY word;

这便是SQL的魅力,编程必要几十行,甚至上百行代码,我这一句就搞定;使用SQL措置分析Hadoop上的数据,便当、高效、易上手、更是趋向。非论是离线计较仍是实时计较,越来越多的大数据措置框架都在积极供给SQL接口。

2.3 SQL On Hadoop之Hive

什么是Hive?官方给的诠释如下:The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax.

为什么说Hive是数据堆栈工具,而不是数据库工具呢?有的伴侣可能不晓得数据堆栈,数据堆栈是逻辑上的概念,底层使用的是数据库,数据堆栈中的数据有这两个特点:最全的历史数据(海量)、相对不变的;所谓相对不变,指的是数据堆栈不合于业务体系数据库,数据经常会被更新,数据一旦进入数据堆栈,很少会被更新和删除,只会被大量查询。而Hive,也是具备这两个特点,是以,Hive合适做海量数据的数据堆栈工具,而不是数据库工具。

2.4 安装设置装备安排Hive

请参考1.1 和 1.2 完成Hive的安装设置装备安排。可以正常进入Hive呼吁行。

2.5 试试使用Hive

请参考1.1 和 1.2 ,在Hive中建树wordcount表,并运转2.2中的SQL语句。

在Hadoop WEB界面中找到适才运转的SQL使命。看SQL查询成效是否和1.4中MapReduce中的成效同等。

2.6 Hive是怎样工作的

明明写的是SQL,为什么Hadoop WEB界面中看到的是MapReduce使命?

2.7 学会Hive的根基呼吁

建树、删除表;加载数据到表;下载Hive表的数据;请参考1.2,进修更多关于Hive的语法和呼吁。

若是你已经按照《写给大数据开发初学者的话》中第一章和第二章的流程认真完好的走了一遍,那么你应该已经具备以动手艺和知识点:

·MapReduce的事理(仍是阿谁经典的问题问题,一个10G巨细的文件,给定1G巨细的内存,若何使用Java轨范统计出现次数最多的10个单词及次数);

·HDFS读写数据的流程;向HDFS中PUT数据;从HDFS中下载数据;

·本身会写简单的MapReduce轨范,运转出现问题,晓得在哪里检察日志;

·会写简单的SELECT、WHERE、GROUP BY等SQL语句;

·Hive SQL转换成MapReduce的大抵流程;

·Hive中常见的语句:建树表、删除表、往表中加载数据、分区、将表中数据下载到本地;

从上面的进修,你已经体味到,HDFS是Hadoop供给的分布式存储框架,它可以用来存储海量数据,MapReduce是Hadoop供给的分布式计较框架,它可以用来统计和分析HDFS上的海量数据,而Hive则是SQL On Hadoop,Hive供给了SQL接口,开发人员只必要编写简单易上手的SQL语句,Hive担任把SQL翻译成MapReduce,提交运转。

此时,你的”大数据平台”是如许的:那么问题来了,海量数据若何到HDFS上呢?

第三章:把别处的数据搞到Hadoop上

这里也可以叫做数据网罗,把各个数据源的数据网罗到Hadoop上。

3.1 HDFS PUT呼吁

这个在前面你应该已经使用过了。put呼吁在实际情形中也斗劲常用,通常配合shell、python等剧本说话来使用。建议谙练把握。

3.2 HDFS API

HDFS供给了写数据的API,本身用编程说话将数据写入HDFS,put呼吁本身也是使用API。

实际情形中一样平常本身较少编写轨范使用API来写数据到HDFS,通常都是使用其他框架封装好的编制。比如:Hive中的INSERT语句,Spark中的saveAsTextfile等。建议体味事理,会写Demo。

3.3 Sqoop

Sqoop是一个首要用于Hadoop/Hive与传统关系型数据库,Oracle、MySQL、SQLServer等之间停止数据交流的开源框架。就像Hive把SQL翻译成MapReduce一样,Sqoop把你指定的参数翻译成MapReduce,提交到Hadoop运转,完成Hadoop与其他数据库之间的数据交流。

本身下载和设置装备安排Sqoop(建议先使用Sqoop1,Sqoop2斗劲复杂)。体味Sqoop常用的设置装备安排参数和编制。

使用Sqoop完成从MySQL同步数据到HDFS;使用Sqoop完成从MySQL同步数据到Hive表;若是后续选型确定使用Sqoop作为数据交流工具,那么建议谙练把握,不然,体味和会用Demo即可。

3.4 Flume

Flume是一个分布式的海量日志网罗和传输框架,由于“网罗和传输框架”,所以它并不合适关系型数据库的数据网罗和传输。Flume可以实时的从搜集和谈、消息体系、文件体系网罗日志,并传输到HDFS上。

是以,若是你的业务有这些数据源的数据,并且必要实时的网罗,那么就应该考虑使用Flume。

下载和设置装备安排Flume。使用Flume监控一个不竭追加数据的文件,并将数据传输到HDFS;Flume的设置装备安排和使用较为复杂,若是你没有充足的乐趣和耐心,可以先跳过Flume。

3.5 阿里开源的DataX

之所以引见这个,是由于我们公司今朝使用的Hadoop与关系型数据库数据交流的工具,就是之前基于DataX开发的,很是好用。

可以参考我的博文《异构数据源海量数据交流工具-Taobao DataX 下载和使用》。如今DataX已经是3.0版本,支撑很多数据源。你也可以在其之上做二次开发。有乐趣的可以研究和使用一下,比力一下它与Sqoop。

第四章:把Hadoop上的数据搞到别处去

Hive和MapReduce停止分析了。那么接下来的问题是,分析完的成效若何从Hadoop上同步到其他体系和应用中去呢?其实,这里的编制和第三章根基同等的。

4.1 HDFS GET呼吁

把HDFS上的文件GET到本地。必要谙练把握。

4.2 HDFS API

同3.2.

4.3 Sqoop

同3.3.使用Sqoop完成将HDFS上的文件同步到MySQL;使用Sqoop完成将Hive表中的数据同步到MySQL。

4.4 DataX

同3.5. 若是你认真完成了上面的进修和理论,此时,你的”大数据平台”应该是如许的:

若是你已经按照《写给大数据开发初学者的话2》中第三章和第四章的流程认真完好的走了一遍,那么你应该已经具备以动手艺和知识点:

晓得若何把已有的数据网罗到HDFS上,网罗离线网罗和实时网罗;你已经晓得sqoop(或者还有DataX)是HDFS和其他数据源之间的数据交流工具;你已经晓得flume可以用作实时的日志网罗。

已经面的进修,对付大数据平台,你已经把握的不少的知识和手艺,搭建Hadoop集群,把数据网罗到Hadoop上,使用Hive和MapReduce来分析数据,把分析成效同步到其他数据源。

接下来的问题来了,Hive使用的越来越多,你会创造良多不爽的地方,特别是速度慢,大多情形下,明明我的数据量很小,它都要申请资源,启动MapReduce来实行。

第五章:快一点吧,我的SQL

其实大师都已经创造Hive后台使用MapReduce作为实行引擎,其实是有点慢。是以SQL On Hadoop的框架越来越多,按我的体味,最常用的按照流行度依次为SparkSQL、Impala和Presto.这三种框架基于半内存或者全内存,供给了SQL接口来快速查询分析Hadoop上的数据。关于三者的斗劲,请参考1.1.

我们今朝使用的是SparkSQL,至于为什么用SparkSQL,缘故缘由概略有以下吧:使用Spark还做了其他工作,不想引入过多的框架;Impala对内存的需求太大,没有过多资源安排。

5.1 关于Spark和SparkSQL

什么是Spark,什么是SparkSQL。

Spark有的焦点概念及名词诠释。

SparkSQL和Spark是什么关系,SparkSQL和Hive是什么关系。

SparkSQL为什么比Hive跑的快。

5.2 若何安排和运转SparkSQL

Spark有哪些安排形式?

若安在Yarn上运转SparkSQL?

使用SparkSQL查询Hive中的表。Spark不是一门短时辰内就能把握的手艺,是以建议在体味了Spark之后,可以先从SparkSQL动手,按部就班。

关于Spark和SparkSQL,若是你认真完成了上面的进修和理论,此时,你的”大数据平台”应该是如许的。

第六章:一夫多妻制

请不要被这个名字所勾引。其实我想说的是数据的一次网罗、屡次斲丧。

在实际业务场景下,特别是对付一些监控日志,想即时的从日志中体味一些目标(关于实时计较,后面章节会有引见),这时辰,从HDFS上分析就太慢了,虽然是经由过程Flume网罗的,但Flume也不能间隔很短就往HDFS上滚动文件,如许会导致小文件特别多。

为了满够数据的一次网罗、屡次斲丧的需求,这里要说的便是Kafka。

6.1 关于Kafka

什么是Kafka?Kafka的焦点概念及名词诠释。

6.2 若何安排和使用Kafka

使用单机安排Kafka,并成功运转自带的消费者和斲丧者例子。使用Java轨范本身编写并运转消费者和斲丧者轨范。Flume和Kafka的集成,使用Flume监控日志,并将日志数据实时发送至Kafka。

若是你认真完成了上面的进修和理论,此时,你的”大数据平台”应该是如许的。

这时,使用Flume网罗的数据,不是直接到HDFS上,而是先到Kafka,Kafka中的数据可以由多个斲丧者同时斲丧,其中一个斲丧者,就是将数据同步到HDFS。

若是你已经按照《写给大数据开发初学者的话3》中第五章和第六章的流程认真完好的走了一遍,那么你应该已经具备以动手艺和知识点:

·为什么Spark比MapReduce快。

·使用SparkSQL庖代Hive,更快的运转SQL。

·使用Kafka完成数据的一次搜集,屡次斲丧架构。

·本身可以写轨范完成Kafka的消费者和斲丧者。

已经面的进修,你已经把握了大数据平台中的数据网罗、数据存储和计较、数据交流等大局部手艺,而这其中的每一步,都必要一个使命(轨范)来完成,各个使命之间又存在必定的依靠性,比如,必需等数据网罗使命成功完成后,数据计较使命才能起头运转。若是一个使命实行失败,必要给开发运维人员发送告警,同时必要供给完好的日志来便当查错。

第七章:越来越多的分析使命

不仅仅是分析使命,数据网罗、数据交流同样是一个个的使命。这些使命中,有的是按时触发,有点则必要依靠其他使命来触发。当平台中有几百上千个使命必要维护和运转时辰,仅仅靠crontab远远不够了,这时便必要一个调度监控体系来完成这件事。调度监控体系是整个数据平台的中枢体系,近似于AppMaster,担任分配和监控使命。

7.1 Apache Oozie

1. Oozie是什么?有哪些功能?

2. Oozie可以调度哪些类型的使命(轨范)?

3. Oozie可以支撑哪些使命触发编制?

4. 安装设置装备安排Oozie。

7.2 其他开源的使命调度体系

Azkaban,light-task-scheduler,Zeus,等等。别的,我这边是之前零丁开发的使命调度与监控体系,详细请参考《大数据平台使命调度与监控体系》。若是你认真完成了上面的进修和理论,此时,你的”大数据平台”应该是如许的:

第八章:我的数据要实时

在第六章引见Kafka的时辰提到了一些必要实时目标的业务场景,实时根基可以分为绝对实时和准实时,绝对实时的耽误要求一样平常在毫秒级,准实时的耽误要求一样平常在秒、分钟级。对付必要绝对实时的业务场景,用的斗劲多的是Storm,对付其他准实时的业务场景,可所以Storm,也可所以Spark Streaming。固然,若是可以的话,也可以本身写轨范来做。

8.1 Storm

1. 什么是Storm?有哪些可能的应用场景?

2. Storm由哪些焦点组件构成,各自担当什么脚色?

3. Storm的简单安装和安排。

4. 本身编写Demo轨范,使用Storm完成实时数据流计较。

8.2 Spark Streaming

1. 什么是Spark Streaming,它和Spark是什么关系?

2. Spark Streaming和Storm斗劲,各有什么优错误错误?

3. 使用Kafka + Spark Streaming,完成实时计较的Demo轨范。

至此,你的大数据平台底层架构已经成型了,其中网罗了数据网罗、数据存储与计较(离线和实时)、数据同步、使命调度与监控这几大模块。接下来是时辰考虑若何更好的对外供给数据了。

第九章:我的数据要对外

通常对外(业务)供给数据访谒,大要上包含以下方面。

·离线:比如,天天将前一天的数据供给到指定的数据源(DB、FILE、FTP)等;离线数据的供给可以接纳Sqoop、DataX等离线数据交流工具。

·实时:比如,在线网站的保举体系,必要实时从数据平台中获取给用户的保举数据,这种要求延时很是低(50毫秒以内)。按照延时要乞降实时数据的查询必要,可能的方案有:HBase、Redis、MongoDB、ElasticSearch等。

·OLAP分析:OLAP除了要求底层的数据模子斗劲标准,别的,对查询的相应速度要求也越来越高,可能的方案有:Impala、Presto、SparkSQL、Kylin。若是你的数据模子斗劲规模,那么Kylin是最好的选择。

·即席查询:即席查询的数据斗劲随意,一样平常很难建立通用的数据模子,是以可能的方案有:Impala、Presto、SparkSQL。

这么多斗劲成熟的框架和方案,必要连系本身的业务需求及数据平台手艺架构,选择适宜的。准绳只需一个:越简单越不变的,就是最好的。

若是你已经把握了若何很好的对外(业务)供给数据,那么你的“大数据平台”应该是如许的:

第十章:牛逼高峻上的机械进修

关于这块,我这个外行人也只能是简单引见一下了。数学专业毕业的我很是忸捏,很悔怨那时没有好勤学数学。在我们的业务中,碰着的能用机械进修处理的问题概略这么三类:

·分类问题:网罗二分类和多分类,二分类就是处理了预测的问题,就像预测一封邮件是否垃圾邮件;多分类处理的是文本的分类;

·聚类问题:从用户搜索过的关头词,对用户停止概略的归类。

·保举问题:按照用户的历史阅读和点击举动停止相干保举。

大多数行业,使用机械进修处理的,也就是这几类问题。入门进修线路,数学根本;机械进修实战,懂Python最好;SparkMlLib供给了一些封装好的算法,以及特征措置、特征选择的编制。

机械进修确实牛逼高峻上,也是我进修的方针。那么,可以把机械进修局部也加进你的“大数据平台”了。

大数据学习加群:716581014

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据科学与人工智能

【大数据框架】Hadoop和Spark的异同

谈到大数据,相信大家对 Hadoop 和 Apache Spark 这两个名字并不陌生。但我们往往对它们的理解只是提留在字面上,并没有对它们进行深入的思考,下面...

3088
来自专栏企鹅号快讯

如何成为大数据Spark高手

Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台,它立足于内存计算,性能超过Hadoop百倍,从多迭代批量处理出发,兼收并蓄数据仓库、流处理和...

2506
来自专栏Hadoop实操

Impala升级为Apache顶级项目

五年前,Cloudera向全世界分享了一个愿景,将通过一个新的SQL引擎Apache Impala(全球第一个也是Hadoop之上最快的MPP SQL引擎)将数...

4179
来自专栏MixLab科技+设计实验室

全栈设计师技术Wiki之Hadoop

Apache Hadoop : 是 Apache 开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目 ( HDFS ) 和支持 MapReduc...

3303
来自专栏大数据技术学习

Storm与Spark、Hadoop三种框架对比

Storm与Spark、Hadoop这三种框架,各有各的优点,每个框架都有自己的最佳应用场景。所以,在不同的应用场景下,应该选择不同的框架。

2442
来自专栏北京马哥教育

Hadoop家族学习路线图

Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zook...

3978
来自专栏CSDN技术头条

浅谈Apache Spark的6个发光点

【编者按】Spark是一个基于内存计算的开源集群计算系统,目的是更快速的进行数据分析。Spark由加州伯克利大学AMP实验室Matei为主的小团队使用Scala...

1869
来自专栏华章科技

2分钟读懂大数据框架Hadoop和Spark的异同

谈到大数据,相信大家对 Hadoop 和 Apache Spark 这两个名字并不陌生。但我们往往对它们的理解只是提留在字面上,并没有对它们进行深入的思考,下面...

1043
来自专栏腾讯大数据的专栏

一文教你看懂大数据的技术生态圈 Hadoop,hive,spark

大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需要的各种工具。锅碗...

2775
来自专栏Spark学习技巧

干货 | 如何成为大数据Spark高手

Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台,它立足于内存计算,性能超过Hadoop百倍,从多迭代批量处理出发,兼收并蓄数据仓库、流处理和...

3168

扫码关注云+社区