什么是spark?
Spark是基于内存计算大数据分析引擎,提高了在大数据环境下数据处理的实时性。Spark目前来说仅仅只涉及到数据的计算,并没有涉及到数据的存储。
- spark的优点以及多余MapReduce的优势
MapReduce存在的问题
1. MapReduce框架局限性
1)仅支持Map和Reduce两种操作
2)处理效率低效。
a)Map中间结果写磁盘,Reduce写HDFS,多个MR之间通过HDFS交换数据; 任务调度和启动开销大;
b)无法充分利用内存
c)Map端和Reduce端均需要排序
3)不适合迭代计算(如机器学习、图计算等),交互式处理(数据挖掘) 和流式处理(点击日志分析)
2. MapReduce编程不够灵活
1)尝试scala函数式编程语言
- Spark的特点及优势
1. 高效(比MapReduce快10~100倍)
1)内存计算引擎,提供Cache机制来支持需要反复迭代计算或者多次数据共享,减少数据读取的IO开销
2)DAG引擎,减少多次计算之间中间结果写到HDFS的开销
3)使用多线程池模型来减少task启动开稍,shuffle过程中避免 不必要的sort操作以及减少磁盘IO操作
2. 易用
1)提供了丰富的API,支持Java,Scala,Python和R四种语言
2)代码量比MapReduce少2~5倍
- 兼容性
可与Hadoop集成 读写HDFS/Hbase/Cassandra 与YARN集成
- 通用性
Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)