spark是一个与Hadoop数据兼容的快速通用处理引擎。
它可以通过集群或spark的独立模式在Hadoop集群中运行特点:
1、速度快:ApacheSPark使用最新的DAG调度程序、查询优化器和物理执行引擎(基于内存处理数据),实现了批处理和流数据的高性能
2、易用性:Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。
3、通性用:Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)
4、兼容性:Spark可以非常方便地与其他的开源产品进行融合
启动流程:
1、启动master进程
2、Master开始解析conf目录的slaves配置文件,找到相应的Worker节点
3、开始启动Worker进程
4、worker向master发送注册信息(id,cpu,内存,核数等)
5、Master接受到Worker的注册信息后并保 存到内存和磁盘里,然后向Worker发送注册成功信息
6、worker周期性地向master发送心跳,Master更新worker的最后一次心跳时间
7、master删除超时的worker信息
任务提交流程完整流程:
1、Driver端首先启动SparkSubmit进程,启动后开始与Master进行通信,此时创建了一个非常重要的对象(SparkContext),接着向Master发送任务信息
2、Master接收到任务信息后,开始资源调度,此时会和所有的Worker进行通信。找到比较空闲的Worker,并通知Worker来取任务和启动相应的Excecutor
3、Executor启动后,开始与Driver进行反向注册,接下来Driver开始把任务发送给相应的Executor,Executor开始计算任务
RDD
RDD:resilient Distributed Dataset 弹性分布式数据集
RDD特点:自动容错,位置感知调度和可伸缩,并行处理
产生方式:
a、文件系统中加入
b、已有的scala集合
c、从RDD=>RDD
(RDD只支持粗粒度变换,即只记录单个块上执行的单个操作,然后创建某个RDD的变换序列存储下来,这个变换序列就是RDD的血统)
五大属性(也称数据结构):
是一个分区链表;有函数对其进行分区;
每个RDD都有依赖;
hash分区;
最优位置
内容 :
1、源数据切分后的数据块,源代码中的split变量
2、关于血统的信息,源码中的dependency变量
3、一个计算函数(一个rdd如何通过父rdd得到)
4、一些关于如何分块和数据存放的元信息
分区
为什么分区?
为了并行处理分析