Spark定义
Spark是一个通用的大规模数据快速处理分析引擎,它是由scala语言开发的,是基于内存计算的大数据并行计算框架。它在提高数据处理的速度同时也能保证高容错性和高可伸缩性。
Spark构成
Spark包含SparkCore、SparkSQL、Spark Streaming、MLlib、Graph,这些技术结合到一块,可以解决大数据中的Batch Processing、Stream Processing、Ad-hocQuery等三大核心问题。
Spark特点
计算速度快 内存计算速度是MR的100倍,磁盘计算的速度是MR的10倍。
Spark采用DAG(有向无环图)执行引擎。
提供一个强大的技术栈,包括查询语言SparkSQL、实时流处理工具Spark Streaming、机器学习工具MLlib、图计算工具GraphX。
集成Hadoop,Spark可运行在YARN上,可读取Hadoop的HDFS,HBase等一切Hadoop的数据。
Spark有自己的资源管理和调度器Standalone。
建立在RDD(分布式内存抽象)之上。
Spark HA高可用
Spark Standalone集群是Master/Slaves架构的集群,是存在master单点故障问题,它可以利用zookeeper的来实现高可用。
Spark的重点概念
a.Application:Spark的应用程序,包含一个Driver Program 和 若干个Executor。
b.SparkContext:Spark应用程序的入口,负责调度各个运算资源,协调各个Worker Node上的Executor。
c.Driver Progarm(驱动程序):运行Application的main()函数并且创建SparkContext。
d.Executor:是Application运行在Worker Node上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上。每个Application都会申请各自的Executors来处理任务。
e.Cluster Manager:在集群上获取资源的外部服务(YANR|Standalone|Mesos)。
f.Worker Node:集群中任何可以运行Application代码的节点,运行一个或者多个Executor进程。
g.Task:运行在Executor上的工作单元。
h.Job:SparkContext提交的具体的Action操作,常和Action对应。
i.Stage:每个Job会被拆分很多任务(task),每组任务被称为Stage,也称TaskSet。
j.RDD:Resilient Distributed Datasets,弹性分布式数据集,是Spark最核心的模块和类。
k.DAGScheduler:根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler。
l.TaskScheduler:将Taskset提交给Worker Node集群运行并返回结果。
m.Transformations/Action:Spark API的两种类型,Transformations的返回值还是一个RDD,Action的返回值不是一个RDD,而是一个Scala集合,所有的Transformation都是采用懒策略,如果只是将Transformation提交是不会执行计算的,计算只有在Action被提交时才被触发。
领取专属 10元无门槛券
私享最新 技术干货