1、什么是spark:
产生背景:mr,hive批处理、离线处理 存在一些局限性
计算引擎【不关注数据存储】
2、spark的特点:
Batch/streaming data =》 批流一体
SQL analytics => SQL
Data science at scale => 科学
Machine learning => 机器学习
速度快:
基于内存进行计算
易用性:
可选多种开发语言
支持多种外部数据源
通用性:
子模块
sparkcore => 离线计算
sparksql => 离线计算
sparkstreaming、structstreaming => 实时计算
mllib => 机器学习
图计算 => 图处理
3、spark运行作业的地方:
1、yarn
2、meson
3、k8s
4、standalone[spark本身集群]
4、spark作业和执行流程:
作业:
核心概念:
Application:
1.a driver program =》 driver
2.executors on the cluster =》 executors
spark作业:
1.sparkcontext
2. web ui
Application jar:
spark作业生成的jar包 =》 spark作业 main方法 =》 部署服务器上
Driver program:
1.main 方法
2.创建sparkcontext
Cluster manager:
An external service for acquiring resources
Deploy mode:spark jar 提交服务器去运行 =》 yarn
cluster:
driver inside of the cluster driver跑在yarn所在的机器里面
client
driver 运行在cluster之外
Worker node:
can run application code
补充:
spark作业 yarn
nodemanager node
Executor:
container: 容器
mem、cpu
1.runs tasks
2.keeps data in memory or disk storage
Each application has its own executors:
application1: 1driver + 2executor
application2: 1driver + 2executor
Task:
rdd: partitions
tasks
Job:
action => job执行
spark作业 =》 Application
job =》 Application 的jobs
Stage:
1.Each job gets divided into smaller sets of tasks => stage
2. depend on each other
总结:
一个application :包含 1 到n 个job
一个job: 包含 1到n个stage
rdda => rddb =>rddc action => 一个job
01stage 02stage
一个stage:包含 1个到n个task
task 和 partition 一一对应
application :
1.driver
2.n executor
执行流程:
1、spark作业运行在集群上 有一系列进程
2、SparkContext 去协调这些进程
进程 : driver 1
executors
3、运行spark作业:
1.sc 去连接 cluster manager
2.cluster manager 给spark作业分配资源
3.spark一旦连接上cluster
1.启动executor
2.executor =》 计算和存储数据
4.
sc 发送代码 给executor
sc 发送task 去executor 运行
4.spark执行架构补充:
每个spark作业有自己的executor进程
app1:
executors 1
app2:
executors 1
好处:
1.资源隔离
2.调度的隔离