sparkcore, sparksql, sparkstreaming,sparkmlib

MapReduce
(1)分布式计算框架,只能用Java进行开发。
MapReduce–>Hive
(1)由于MR只有Java程序员才能开发,但是程序员大部分都会sql, 所以衍生出类sql语法HQL(Hive Query Language).
Hive其实是基于MR的一种分布式计算框架, 在MR上包了一层壳, 底层仍然是MR。
MapReduce–>sparkcore
(1)MR的shuffle过程中数据要频繁的落地到磁盘中会大大的影响性能, spark设计的目的就是为了解决该问题, spark完全基于内存进行计算,数据不落地, 虽然占用能存很高但是大大提高了效率, 可以达到MR的 10~100倍。
(2)核心数据结构为RDD(弹性式分布数据集)。
(3)spark支持多种语言开发:java, python, scala, R等。
(4)Scala是spark的开发语言,与spark的兼容性最好。java语句冗长,数据分析师不熟悉java。spark的R语言不完整。python是目前机器学习库集成最好的语言, 库比较全面。
Hive–>sparksql
(1)SparkSql的前身叫做Shark. Shark是在hive的基础上替换了其中的计算引擎, 从MR换成spark从而提升了效率但是之后 为了减少对hive的依赖 spark的设计者 放弃了Shark重新开发了SparkSql. 由于底层的Spark比mr的效率要高很多,所以SparkSql的效率也要比hive高很多。
(2)SparkSql中有一个核心的数据结构叫做DataFrame 本质上是对RDD的一个封装, 其中采用类似表的结构来存储数据。
(3)DataFrame比RDD运行时间少, 效率高。
storm–>sparkstreaming
(1)Spark Streaming是一种构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数据的能力,以吞吐量高和容错能力强著称。
(2)SparkStreaming 将输入的数据 按照时间为单位进行切片, 切出一个个的批, 称之为DStream 而DStream本质上就是Spark中的RDD 对DStream的处理最终会被翻译成对底层RDD的处理。
(3)SparkStreaming在处理DStream数据时 是按照串行化的方式进行处理的。这也就意味着上一个DStream在当前算子中未处理完成时 下一个DStream即使到来也要阻塞等待。
(4)相对于Storm SparkStreaming的优势并不体现在低延时, 而是在高吞吐量上有自己独特的优势。
Mahout–>MLib
Mahout主要是Hadoop MapReduce框架,而MLib则是Spark

==================================================================================

MapReduce可以被Spark Core替换?
是的,它会随着时间的推移被替代,而且这种替代是合理的。但是spark目前还不是特别成熟能完全替代MapReduce。此外,也没有人会完全放弃MapReduce,除非所有依赖MapReduce的工具都有可替代方案。比如说,想要在pig上运行的脚本能在spark上执行还是有些工作要做的。
Hive可以被Spark SQL替换?
是的,这又是对的。但是我们需要理解的是Spark SQL对于spark本身来说还是比较年轻的,大概要年轻1.5倍。相对于比较成熟的Hive来说它只能算是玩具了吧,我将在一年半到两年之内再回头来看Spark SQL。如果我们还记得的话,两到三年前Impala就号称要终结Hive,但是截止到目前两种技术也还是共存状态,Impala并没有终结Hive。在这里对于Spark SQL来说也是一样的。
Storm可以被Spark Streaming替换?
是的,可以替换。只不过平心而论storm并不是Hadoop生态系统中的一员,因为它是完全独立的工具。他们的计算模型并不太形同,所以我不认为storm会消失,反而仍会作为一个商业产品。
Mahout可以被MLib替换?
公平的讲,Machout已经失去了市场,而且从过去的几年来看它正在快速失去市场。对于这个工具,我们可以说这里是Spark真正可以替换Hadoop生态系统中的地方。

你可能感兴趣的:(spark)