1 Spark概述
1.1 Spark是什么
Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。(没有存储功能)
1.2 Spark and Hadoop
Spark是用Scala语言开发的快速、通用、可扩展的大数据分析引擎。
Spark Core中提供 了Spark最基础和最核心的功能。
Spark SQL是Spark用来操作结构化数据的组件,通过Spark SQL,用户可以使用SQL或者Apache Hive的SQL方言(HQL)来查询数据。
Spark Streaming 是Spark平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的API。
一次性数据计算:框架在处理数据的时候,会从存储设备中读取数据,进行逻辑操作,然后将处理的结果重新存储到介质中。
Spark是一个分布式数据快速分析项目,核心技术是弹性分布式数据集(Resilient Distributed Datasets),提供了比MapReduce丰富的模型,可以快速在内存中对数据集进行多次迭代,来支持复杂的数据挖掘算法和图形计算算法。
Spark与Hadoop的根本差异是多个作业之间的数据通信问题:Spark多个作业之间数据通信基于内存,Hadoop是基于磁盘。
SparkTask的启动时间快,Spark采用fork线程的方式,Hadoop采用创建新的进程的方式。
spark只有在shuffle的时候将数据写入磁盘,而Hadoop中多个MR作业之间的数据交互都要依赖于磁盘交互。
Spark的缓存机制比HDFS更高效。
在绝大多数数据计算场景中,spark确实会比MapReduce更有优势,但是Spark是基于内存的,所以在实际的生产环境中,由于内存的限制,可能会由于内存资源足够导致Job执行失败,此时MapReduce其实是一个更好的选择。
1.3 Spark 核心
spark core是整个框架的核心,其他功能模块是基于spark core来完善的。
spark sql是spark操作结构化数据的模块。
spark streaming是操作流数据的模块。
spark mllib是操作机器学习的。
spark GraphX 是对图形挖掘计算的模块。
2 Spark快速上手
2.1 创建Maven项目
3 Spark运行环境
Spark作为一个数据处理框架和计算引擎,在国内工作中主流的运行环境为Yarn,容器式环境也在慢慢流行。
3.1 Local模式
不需要其他任何节点资源,在本地执行Spark代码的环境,一般用于教学、调试