目录
一、Spark概述
二、为什么要学习Spark
三、Spark 四大特性
1、速度快
2、易用性
3、通用性
4、兼容性
一、Spark概述
Apache Spark™ is a unified analytics engine for large-scale data processing.
spark是基于内存计算的大数据处理框架,由于基于内存计算,处理数据非常快。这里仅仅只涉及到数据的计算,并没有涉及到数据的存储,后期就需要对接各种不同的外部数据源,比如处理HDFS上的数据。
官方网址:
https://spark.apache.org/
二、为什么要学习Spark
就是因为spark处理速度比mapreduce快很多,提高任务运行的速度,很受企业青睐。
spark不在是一个简单的框架,而是发展成一个生态系统,它里面有很多不同的子项目
sparksql
sparkStreaming
Graphx
Mlib
三、Spark 四大特性
1、速度快
spark比mapreduce在内存中快100倍,比mapreduce在磁盘中快10倍。
spark比mapreduce快的主要2个原因
1)mapreduce的任务每一个job它的输出结果只能够保存在磁盘,后续有其他的job需要依赖于前面job的输出结果,这个时候需要进行大量的磁盘io操作。 spark的任务每一个job它的输出结果可以保存在内存中,后续有其他的job需要依赖于前面job的输出结果,这个时候就可以直接在内存中获取得到,大大减少磁盘io操作,最后提升了性能。
例如: select name,age from (select * from user where age >30 and age <40)
2) mapreduce的任务它是以进程的方式运行在yarn集群中,比如一个job有100个MapTask,这个时候就需要开启100个进程去处理这个100个task。spark的任务它是以线程的方式运行在进程中,比如一个job有100个MapTask,这个时候就可以极端一点:只启动一个进程,在这个进程运行100个线程。这里开启一个进程和开启一个线程代价是不一样,开启一个进程需要的时间和资源比线程要大大增加。spark中可以减少大量的时间资源调度,提升性能。
2、易用性
可以快速开发一个spark应用程序,通过java、scala、python、R、sql不同语言开发代码程序
3、通用性
spark框架是一个生态系统,可以通过不同子项目sparksql、sparkStreaming、Mlib、Graphx应用到不同的应用场景。
4、兼容性
spark任务就是一个计算程序,哪里可以给当前这个程序提供对应的计算资源,我们就可以把程序提交到哪里去。
yarn
spark程序可以提交到yarn中去运行,整个任务的资源分配由resourcemanager去负责standalone
standalone
它是spark自带的集群模式,整个任务的资源分配由Master去负责
mesos
它是一个apache开源类似于yarn的资源管理平台