Apache Spark是一个针对大规模数据的快速、统一处理引擎。
One stack rule them all
1-Stream Processing :spark Streaming
2-Ad-hoc-Queries :Spark SQL
3-Batch Processing: Spark Core(和Map-reduce一样是批处理框架)
Map-reduce慢的原因:
1-在执行Map-reduce job运行的过程中有大量的磁盘操作;
2-partition的时候和进入reduce之前会进行排序;一部分排序在map中进行,另一部分排序在reduce中进行;这里的排序使用的是归并排序;
3-额外的复制,网络传输,序列化;
Spark快的原因:
1-基于内存的计算
迭代都是在内存中计算的,shuffle过程也是在磁盘中进行的;所以spark虽然是基于内存的数据处理框架,但是并不是说所有的操作都是在内存中进行的。
2-DAG
Spark支持的是那种语言:
Scala(Excellent)
Python(good)
java(good)
spark运行模式
local :多用于测试;
Standalone:独立于Hadoop的一套运行环境,具有独立的资源管理者等组件;
Mesos:基于Mesos资源调度框架运行;
YARN:基于Yarn的资源调度框架运行;
Mesos和Yarn都是资源调度管理框架
Mesos是用C++实现的,支持细粒度和粗粒度的资源管理;
Yarn使用java实现,仅支持粗粒度的资源调度;这里的细粒度指的是自愿的弹性,用多少分多少,后面需求增加可以再分配,而Yarn的粗粒度资源调度的意思是初始画的时候分配多少就一直是多少,直到job进程消亡。