零基础入门学习大数据开发,今天来了解Spark的基本概念。
Spark 生态系统
Spark 特点
高效
内存计算引擎,提供Cache机制来支持需要反复迭代计算或者多次数据共享,减少数据读取的IO开销,值得注意的是,spark并不是将所有的数据都写入内存,相反spark默认是将数据写入磁盘,但spark支持将数据写入内存并计算。
使用DAG(有向无环图)引擎,可以减少多次计算之间中间结果写到HDFS的开销
使用多线程池模型来减少task启动开稍,shuffle过程中避免 不必要的sort操作以及减少磁盘IO操作
易用
提供了丰富的API,支持Java,Scala,Python和R四种语言
代码量比MapReduce少2~5倍
与Hadoop完美集成
可读写HDFS/Hbase
可与YARN集成
Spark核心概念
RDD:
Resilient Distributed Datasets,弹性分布式数据集,与Java里的集合类似,但它多了两个前缀修饰词:分布式、弹性
分布式:
用户看到的是一个RDD集合,但是后台是分布在集群中不同的只读对象集合(由多个Partition构成)
弹性:
数据可以存储在磁盘或内存中(多种存储级别)
Spark 程序架构
每一个程序的main函数运行起来都由两类组件构成:Driver和Executor,main函数运行在Driver中,一个Driver可以转化为多个Task,每个Task都可被调度运行在指定的Executor中。