数据开发学习路线整理
参考博客:
⼤数据的4V特征:
1.数据量⼤,TB->PB
2.数据类型繁多,结构化、⾮结构化⽂本、⽇志、视频、图⽚、地理位置等;
3.商业价值⾼,但是这种价值需要在海量数据之上,通过数据分析与机器学习更快速的挖掘出来;
4.处理时效性⾼,海量数据的处理需求不再局限在离线计算当中。
常见的⼤数据的开源框架
沙桐个人资料简介
l⽂件存储:Hadoop HDFS、Tachyon、KFS
l离线计算:Hadoop MapReduce、Spark
l流式、实时计算:Storm、Spark Streaming、S4、Heron
l K-V、NOSQL数据库:HBase、Redis、MongoDB
l资源管理:YARN、Mesos
l⽇志收集:Flume、Scribe、Logstash、Kibana邓亚萍的个人资料
l消息系统:Kafka、StormMQ、ZeroMQ、RabbitMQ
l查询分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid
l分布式协调服务:Zookeeper
l集管理与监控:Ambari、Ganglia、Nagios、Cloudera Manager
l数据挖掘、机器学习:Mahout、Spark MLLib
l数据同步:Sqoop
l任务调度:Oozie
l……
四年级下册语文期末试卷答案
第⼀章:初识Hadoop
魏大勋李沁恋情坐实1.1 学会百度与Google
不论遇到什么问题,先试试搜索并⾃⼰解决。Google⾸选,翻不过去的,就⽤百度吧。
1.2 参考资料⾸选官⽅⽂档
特别是对于⼊门来说,官⽅⽂档永远是⾸选⽂档。
1.3 先让Hadoop跑起来
Hadoop可以算是⼤数据存储和计算的开⼭⿐祖,现在⼤多开源的⼤数据框架都依赖Hadoop或者与它能很好的兼容。
关于Hadoop,你⾄少需要搞清楚以下是什么:
l Hadoop 1.0、Hadoop 2.0(Hadoop1.0知道它就⾏了,现在都⽤Hadoop 2.0.)
l MapReduce、HDFS
l NameNode、DataNode
l JobTracker、TaskTracker
l Yarn、ResourceManager、NodeManager
l⾃⼰搭建Hadoop,请使⽤第⼀步和第⼆步,能让它跑起来就⾏。(建议先使⽤安装包命令⾏安装,不要使⽤管理⼯具安装。)1.4 试试使⽤Hadoop
l HDFS⽬录操作命令;
l上传、下载⽂件命令;
l提交运⾏MapReduce⽰例程序;
l打开Hadoop WEB界⾯,查看Job运⾏状态,查看Job运⾏⽇志。祖尔法拉克怎么去
l知道Hadoop的系统⽇志在哪⾥。
1.5了解Hadoop原理
l MapReduce:如何分⽽治之;
l HDFS:数据到底在哪⾥,什么是副本;
l Yarn到底是什么,它能⼲什么;
l NameNode到底在⼲些什么;
l ResourceManager到底在⼲些什么;
1.6 ⾃⼰写⼀个MapReduce程序
l请仿照WordCount例⼦,⾃⼰写⼀个(照抄也⾏)WordCount程序,
l打包并提交到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的基本命令
l创建、删除表;
l加载数据到表;
晚安图片大全l下载Hive表的数据;
l请参考1.2,学习更多关于Hive的语法和命令。
如果你已经按照《写给⼤数据开发初学者的话》中第⼀章和第⼆章的流程认真完整的⾛了⼀遍,那么你应该已经具备以下技能和知识点:
l Hadoop1.0和Hadoop2.0的区别;
l MapReduce的原理(还是那个经典的题⽬,⼀个10G⼤⼩的⽂件,给定1G⼤⼩的内存,如何使⽤Java程序统计出现次数最多的10个单词及次数);
l HDFS读写数据的流程;向HDFS中PUT数据;从HDFS中下载数据;
l⾃⼰会写简单的MapReduce程序,运⾏出现问题,知道在哪⾥查看⽇志;
l会写简单的SELECT、WHERE、GROUP BY等SQL语句;
l Hive SQL转换成MapReduce的⼤致流程;
l 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等。
l  建议了解原理,会写Demo。
3.3 Sqoop
Sqoop是⼀个主要⽤于Hadoop/Hive与传统关系型数据库Oracle/MySQL/SQLServer等之间进⾏数据交换的开源框架。
就像Hive把SQL翻译成MapReduce⼀样,Sqoop把你指定的参数翻译成MapReduce,提交到Hadoop运⾏,完成Hadoop与其他数据库之间的数据交换。
l  ⾃⼰下载和配置Sqoop(建议先使⽤Sqoop1,Sqoop2⽐较复杂)。
l  了解Sqoop常⽤的配置参数和⽅法。
l  使⽤Sqoop完成从MySQL同步数据到HDFS;
l  使⽤Sqoop完成从MySQL同步数据到Hive表;
PS:如果后续选型确定使⽤Sqoop作为数据交换⼯具,那么建议熟练掌握,否则,了解和会⽤Demo即可。
3.4 Flume
Flume是⼀个分布式的海量⽇志采集和传输框架,因为“采集和传输框架”,所以它并不适合关系型数据库的数据采集和传输。
Flume可以实时的从⽹络协议、消息系统、⽂件系统采集⽇志,并传输到HDFS上。
因此,如果你的业务有这些数据源的数据,并且需要实时的采集,那么就应该考虑使⽤Flume。
l  下载和配置Flume。
l  使⽤Flume监控⼀个不断追加数据的⽂件,并将数据传输到HDFS;
PS:Flume的配置和使⽤较为复杂,如果你没有⾜够的兴趣和耐⼼,可以先跳过Flume。
3.5 阿⾥开源的DataX
之所以介绍这个,是因为我们这边⼀个⽼师⽬前就职的公司使⽤的Hadoop与关系型数据库数据交换的⼯具,就是之前基于DataX开发的,⾮常好⽤。
现在DataX已经是3.0版本,⽀持很多数据源。
你也可以在其之上做⼆次开发。
PS:有兴趣的可以研究和使⽤⼀下,对⽐⼀下它与Sqoop。
如果你认真完成了上⾯的学习和实践,此时,你的”⼤数据平台”应该是这样的:
第四章:把Hadoop上的数据搞到别处去
前⾯介绍了如何把数据源的数据采集到Hadoop上,数据到Hadoop上之后,便可以使⽤Hive和MapReduce进⾏分析了。那么接下来的问题是,分析完的结果如何从Hadoop上同步到其他系统和应⽤中去呢?
其实,此处的⽅法和第三章基本⼀致的。
4.1 HDFS GET命令
l  把HDFS上的⽂件GET到本地。需要熟练掌握。
4.2 HDFS API
同3.2.
4.3 Sqoop
同3.3.
l  使⽤Sqoop完成将HDFS上的⽂件同步到MySQL;
l  使⽤Sqoop完成将Hive表中的数据同步到MySQL;
4.4 DataX
同3.5.
如果你认真完成了上⾯的学习和实践,此时,你的”⼤数据平台”应该是这样的:
如果你已经按照这个路线⾛了⼀遍,那么你接下来就应该具备以下技能和知识点:
l  知道如何把已有的数据采集到HDFS上,包括离线采集和实时采集;
l  你已经知道sqoop(或者还有DataX)是HDFS和其他数据源之间的数据交换⼯具;
l  你已经知道flume可以⽤作实时的⽇志采集。
l  搭建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
l  什么是Spark,什么是SparkSQL。
l  Spark有的核⼼概念及名词解释。
l  SparkSQL和Spark是什么关系,SparkSQL和Hive是什么关系。
l  SparkSQL为什么⽐Hive跑的快。
5.2 如何部署和运⾏SparkSQL
l  Spark有哪些部署模式?
l  如何在Yarn上运⾏SparkSQL?
l  使⽤SparkSQL查询Hive中的表。
PS: Spark不是⼀门短时间内就能掌握的技术,因此建议在了解了Spark之后,可以先从SparkSQL⼊⼿,循序渐进。
关于Spark和SparkSQL,可参考 lxw1234/archives/category/spark
如果你认真完成了上⾯的学习和实践,此时,你的”⼤数据平台”应该是这样的:
第六章:⼀次采集、多次消费
在实际业务场景下,特别是对于⼀些监控⽇志,想即时的从⽇志中了解⼀些指标(关于实时计算,后⾯章节会有介绍),这时候,从HDFS 上分析就太慢了,尽管是通过Flume采集的,但Flume也不能间隔很短就往HDFS上滚动⽂件,这样会导致⼩⽂件特别多。
为了满⾜数据的⼀次采集、多次消费的需求,这⾥要说的便是Kafka。
6.1 关于Kafka
l  什么是Kafka?
l  Kafka的核⼼概念及名词解释。