Spark主要用于大数据的计算,而Hadoop以后主要用于大数据的存储。Spark+Hadoop,是目前大数据领域最热门的组合。
1
Spark VS MapReduce
MapReduce框架局限性:
1)仅支持Map和Reduce两种操作
2)处理效率低效
Map中间结果写磁盘,Reduce写HDFS,多个MR之间通过HDFS交换数据; 任务调度和启动开销大;无法充分利用内存;Map端和Reduce端均需要排序;
3)不适合迭代计算(如机器学习、图计算等),交互式处理(数据挖掘))和流式处理(点击日志分析)
Spark相比的优势:
高效(比MapReduce快)
1)内存计算引擎,提供Cache机制来支持需要反复迭代计算或者多次数据共享,减少数据读取的IO开销
2)DAG引擎,减少多次计算之间中间结果写到HDFS的开销
3)使用多线程池模型来减少task启动开稍,shuffle过程中避免 不必要的sort操作以及减少磁盘IO操作
易用:
1)提供了丰富的API,支持Java,Scala,Python和R四种语言
2)代码量比MapReduce少
3)与Hadoop集成 读写HDFS/Hbase 与YARN集成
2
Spark SQL VS Hive
Hive是一种基于HDFS的数据仓库,并且提供了基于SQL模型的,针对存储了大数据的数据仓库,进行分布式交互查询的查询引擎。
Spark SQL并不能完全替代Hive,它替代的是Hive的查询引擎,Spark SQL由于其底层基于Spark自身的基于内存的特点,因此速度是Hive查询引擎的数倍以上,Spark本身是不提供存储的,所以不可能替代Hive作为数据仓库的这个功能。
Spark SQL相较于Hive的另外一个优点,是支持大量不同的数据源,包括hive、json、parquet、jdbc等等。Spark SQL由于身处Spark技术堆栈内,基于RDD来工作,因此可以与Spark的其他组件无缝整合使用,配合起来实现许多复杂的功能。比如Spark SQL支持可以直接针对hdfs文件执行sql语句。