大数据学习方向,从入门到精通

良多初学者在萌生向大数据标的目的生长的设法之后,不免产生一些疑问,应该若何入门?应该进修哪些手艺?进修道路又是什么?

大数据进修标的目的,从入门到精晓

所有萌生入行的设法与想要进修Java的同窗的初志是一样的。岗位很是火,就业薪资斗劲高,,前景很是可不雅观不雅观。根基都是这个缘故缘由而神驰大数据,可是对大数据却不甚体味。

若是你想进修,那么首先你必要学会编程,其次你必要把握数学,统计学的知识,末了交融应用,就可以想在数据标的目的生长,笼统来说,就是如许的。可是仅仅如许并没有什么辅佐。大数据学习扣扣群:一九九427210

如今你必要问本身几个问题:

  • 对付计较机/软件,你的乐趣是什么?

  • 是计较机专业,对把持体系、硬件、搜集、办事器感乐趣?

  • 是软件专业,对软件开发、编程、写代码感乐趣?

  • 仍是数学、统计学专业,对数据和数字特别感乐趣。

  • 你本身的专业又是什么?

若是你是金融专业,你可以进修,由于这连系起来你本身的专业,将让你在只需你专业知识的竞争者之中脱颖而出,现实了局如今AI+已经涉及到金融行业了。

说了这么多,无非就是想告诉你,大数据的三个大的生长标的目的:

  • 平台搭建/优化/运维/监控;

  • 大数据开发/ 设计/ 架构;

  • 数据分析/发掘。

请不要问我哪个随意,只能说能挣钱的都不简单。

大数据进修标的目的,从入门到精晓

说一下大数据的四个典范的特征:

  • 数据量大;

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

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

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

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

  • 文件存储: N、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

是不是目炫缭乱了,上面的这些内容,别谈精晓了,就算全数都市使用的,应该也没几个。我们接下来就大数据开发/ 设计/ 架构标的目的来体味一下进修道路。

在接下的进修中,非论碰着什么问题,先试试搜索并本身处理。Google首选,其次百度。

于入门者而言,官方文档永久是首选文档。

第一章:Hadoop

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

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

  • Hadoop 1.0、Hadoop 2.0

  • MapReduce、HDFS

  • NameNode、DataNode

  • JobTracker、TaskTracker

  • Yarn、ResourceManager、NodeManager

本身学会若何搭建Hadoop,先让它跑起来。建议先使用安装包呼吁行安装,不要使用办理工具安装。如今都用Hadoop 2.0。

大数据进修标的目的,从入门到精晓

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

以上完成之后,就应该去体味他们的事理了:

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

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

若是有适宜的进修网站,视频就去听课,若是没有或者斗劲爱好书籍,也可以啃书。固然最好的编制是先去搜索出来这些是干什么的,概略有了概念之后,然后再去听视频。

之后便是本身探求一个例子:

本身写一个(照抄也行)WordCount轨范,

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

第二章:更高效的WordCount

在这里,必定要进修SQL,它会对你的工作有很大的辅佐。

就像是你写(或者抄)的WordCount一共有几行代码?可是你用SQL就很是简单了,例如:

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

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

别的就是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合适做海量数据的数据堆栈工具,而不是数据库工具。

体味了它的浸染之后,就是安装设置装备安排Hive的环节,当可以正常进入Hive呼吁行是,就是安装设置装备安排成功了。

体味Hive是怎样工作的

学会Hive的根基呼吁:

建树、删除表;加载数据到表;下载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上。

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上同步到其他体系和应用中去呢?其实,这里的编制和第三章根基同等的。

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

HDFS API:同3.2.

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

若是你已经按照流程认真完好的走了一遍,那么你应该已经具备以动手艺和知识点:

  • 晓得若何把已有的数据网罗到HDFS上,网罗离线网罗和实时网罗;

  • 晓得sqoop是HDFS和其他数据源之间的数据交流工具;

  • 晓得flume可以用作实时的日志网罗。

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

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

第五章:SQL

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

我们今朝使用的是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。

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

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

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

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

若是你已经认真完好的进修了以上的内容,那么你应该已经具备以动手艺和知识点:

  • 为什么Spark比MapReduce快。

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

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

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

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

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

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

7.1 Apache Oozie

  • Oozie是什么?有哪些功能?

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

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

  • 安装设置装备安排Oozie。

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

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

第八章:我的数据要实时

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

8.1 Storm

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

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

  • Storm的简单安装和安排。

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

8.2 Spark Streaming

  • 什么是Spark Streaming,它和Spark是什么关系?

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

  • 使用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供给了一些封装好的算法,以及特征措置、特征选择的编制。

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

预备好接收大数据了吗?起头进修吧,进步手艺,进步焦点竞争力。也给本身的将来一个机缘。

猜你喜欢

转载自my.oschina.net/u/3804900/blog/1811235
今日推荐