Spark Core:
包含Spark的基本功能,包含任务调度,内存管理,容错机制等,内部定义了RDDs(弹性分布式数据集),提供了很多APIs来创建和操作这些RDDs。为其他组件提供底层的服务。
Spark SQL:
Spark处理结构化数据的库,就像Hive SQL,Mysql一样,企业中用来做报表统计。
Spark Streaming:
实时数据流处理组件,类似Storm。Spark Streaming提供了API来操作实时流数据。企业中用来从Kafka接收数据做实时统计。
MLlib:
一个包含通用机器学习功能的包,Machine learning lib包含分类,聚类,回归等,还包括模型评估和数据导入。MLlib提供的上面这些方法,都支持集群上的横向扩展。
Graphx:
处理图的库(例如,社交网络图),并进行图的并行计算。像Spark Streaming,Spark SQL一样,它也继承了RDD API。它提供了各种图的操作,和常用的图算法,例如PangeRank算法。
Hadoop MapReduce缺点:
1 表达能力有限
2 磁盘IO开销大,任务之间的衔接涉及IO开销
3 延迟高,Map任务要全部结束,reduce任务才能开始。
Spark借鉴Hadoop MapReduce优点的同时,解决了MapReuce所面临的问题,有如下优点:
1. Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供多种数据集操作类型,编程模型比Hadoop MapReduce更灵活。
2. Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高
4. Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制。
---------------------
基本概念:
https://blog.csdn.net/zxc123e/article/details/79912343
一个Application由一个Driver和若干个Job构成,一个Job由多个Stage构成,一个Stage由多个没有Shuffle关系的Task组成。