hadoop和Spark是两种不同的大数据生态系统,Hadoop框架比较侧重离线大批量计算,而spark框架则侧重于内存和实时计算。
在这些基础上,衍生出了一些常用的附属组件,比如Hadoop生态下的HBASE、hive、HDFS等,HDFS可用于数据存储,MR可用于分布式计算框架。同样,在spark的基础上也衍生出了很多组件,比如spark streaming、spark SQL、mllib等。其中spark score完全可以代替MR,spark中不仅可以有reduce操作,同时也提供了其他诸如filter sortby等操作,要比MR方便很多,同时,spark SQL可以直接把hive上的文件映射成一张表,来进行表操作。
各自的组件都非常丰富,往往也不容易学。
Hadoop
大数据是一个概念,hadoop是来实现这个概念的工具、技术,它们之间并没有绝对的联系。Hadoop作为一代分布式系统的基础,特别是第二代Hadoop YARN推出以后,这个位置更加牢固。目前在市面上并没有可以与之相匹敌的系统存在。
1.编程基础,比如Java,C,python,linux,有这些基础学起来就会很快上手。零基础到项目实战欢迎加入
2.详细研究,现在大型网站包括Sina,腾讯网(门户),Weibo(微博),天猫,京东(电商)的架构与实现,先从自己的角度去理解,然后去跟实际情况做比对,提升自己对数据和技术的敏感程度。
3.熟悉并理解,目前阿里,腾讯,百度内部的系统或多或少都是借鉴于Hadoop的。运用Hadoop对于你以后在大型计算机公司任职非常重要。
4.理解分布式系统设计中的原则以及方法,例如负载均衡,故障恢复,并发程序设计,并发数据结构,等等。理解这些设计原理,并走入底层读懂每一行Hadoop的源码更加的重要。
Spark
Spark只是分布式计算平台,而hadoop已经是分布式计算、存储、管理的生态系统。与Spark相对应的是Hadoop MapReduce。
Spark相对于Hadoop的优势,分布式计算仅仅是hadoop的一部分。从内容上来说,还是有些对比:
1、更快
2、更加容易使用
配置起来超级方便。除支持JAVA外,支持scala、python、R。特别是scala,简直是太适合写数据分析的程序了,mapreduce用JAVA实在是太蛋疼了。而且RDD自带的函数
3、巨好用的库能解决90%问题的四大组件,无论是SQL、还是流数据处理、机器学习库、图计算,相当好用。当然,hadoop相关的库也不少,不过spark是原生包含,用起来方便点。 4、运行方便
Spark是可以脱离hadoop运行的,比如数据可以从数据库或者本地文件里面抽取。不过毕竟大数据时代,大家都习惯于将Spark和hadoop通过mesos或者yarn结合起来用;主要用Hadoop的HDFS,当然HBASE或者HIVE这种HDFS之上的组件,Spark也支持。
具体的学习:
1、熟悉如何去写spark的程序;
2、实践到一定程度之后,逐渐的通过spark运行日志对spark的运行机制和原理有了解。
看架构、源码。试试看一些解读源码的图书, Spark的相关知识就已经开始沉淀了。
3、了解spark的各个调度器如何实现,之前总是出现在眼睛里的那个宽依赖窄依赖、和stage的切分,task首选位置的确定等。随着不断深入,尝试看底层的block如何读如何写,之间如何协调通讯等等。
想系统了解学习大数据的可以私信我,获得大数据的学习资料。
大家多多关注哦,你的关注是我最大的动力,会不定期有干货哦。