文章标题

Spark基本概念
1) SparkContext:Spark 应用程序的入口,负责调度各个运算资源,协调各个Worker Node 上的Executor。
2) Driver Program:运行Application的main()函数并创建SparkContext。
3) RDD:RDD是Spark的核心数据结构,可以通过一系列算子进行操作。当RDD遇到Action算子时,将之前的所有算子形成一个有向无环图(DAG)。再在Spark中转化为,提交到集群执行。一个App中可以包含多个Job。
4) Worker Node:集群中任何可以运行Application代码的节点,运行一个或多个Executor进程。
5) Executor:为Application运行在Worker Node上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上。每个Application都会申请各自的Executor来处理任务。

Spark组件
Client:提交应用的客户端
Driver:执行application中的main函数,创建Spark Context
Cluster Manager:在Yarn模式中为资源管理器,在Standalone模式中为控制整个集群的Master节点
Worker:从节点,负责控制计算节点。启动executor或者driver,在Yarn模式中为nodemanager
Executor:计算节点上执行任务的组件
SparkContext:应用的上下文,控制应用的生命周期
RDD:弹性分布式数据集,Spark的基本计算单元
DAG Schedule:根据应用构建基于Stage的DAG,并提交给Task schedule
Task Schedule:将task分发给executor
SparkEnv:线程级别的上下文

Spark运行逻辑
当RDD遇见Action算子之后,触发Job提交。提交后的Job在Spark中形成了RDD DAG有向无环图(Directed Acyclic Graph)。RDD DAG经过DAG Scheduler调度之后,根据RDD依赖关系被切分为一系列的Stage。每个Stage包含一组task集合,再经过Task Scheduler之后,task被分配到Worker节点上的Executor线程池执行。如前文所述,RDD中的每一个逻辑分区对应一个物理的数据块,同时每个分区对应一个Task,因此Task也有自己对应的物理数据块,使用用户定义的函数来处理。Spark出于节约内存的考虑,采用了延迟执行的策略,如前文所述,只有Action算子才可以触发整个操作序列的执行。另外,Spark对于中间计算结果也不会重新分配内存,而是在同一个数据块上流水线操作。
Spark使用BlockManager管理数据块,在内存或者磁盘进行存储,如果数据不在本节点,则还可以通过远端节点复制到本机进行计算。在计算时,Spark会在具体执行计算的Worker节点的Executor中创建线程池,Executor将需要执行的任务通过线程池来并发执行。
Spark运行逻辑—在client端
用户启动Client端,在Client端启动Driver进程。在Driver中启动或实例化DAGS-
cheduler等组件。
1)Driver向Master注册。
2)Worker向Master注册,Master通过指令让Worker启动Executor。
3)Worker通过创建ExecutorRunner线程,进而ExecutorRunner线程启动Executor-Backend进程。
4)ExecutorBackend启动后,向Client端Driver进程内的SchedulerBackend注册,因此Driver进程就可以发现计算资源。
5)Driver的DAGScheduler解析应用中的RDD DAG并生成相应的Stage,每个Stage包含的TaskSet通过TaskScheduler分配给Executor。在Executor内部启动线程池并行化执行Task。
Spark运行逻辑—在worker端
用户启动客户端,客户端提交应用程序给Master。
1)Master调度应用,指定一个Worker节点启动Driver,即Scheduler-Backend。
2)Worker接收到Master命令后创建DriverRunner线程,在DriverRunner线程内创建SchedulerBackend进程。Driver充当整个作业的主控进程。
3)Master指定其他Worker节点启动Exeuctor,此处流程和上面相似,Worker创建ExecutorRunner线程,启动ExecutorBackend进程。
4)ExecutorBackend启动后,向Driver的SchedulerBackend注册,这样Driver获取了计算资源就可以调度和将任务分发到计算节点执行。
SchedulerBackend进程中包含DAGScheduler,它会根据RDD的DAG切分Stage,生成TaskSet,并调度和分发Task到Executor。对于每个Stage的TaskSet,都会被存放到TaskScheduler中。TaskScheduler将任务分发到Executor,执行多线程并行任务。
Spark运行逻辑—执行RDD Graph
这里写图片描述
Spark与Hadoop—-企业级大数据集群架构
这里写图片描述

集群搭建步骤
1、下载解压
2 环境变量Vi /etc/profie
export SPARK_HOME=/home/[user]/xxx/spark-1.6.2-bin-hadoop2.6
export PATH= PATH: {SPARK_HOME}/bin
3 spark-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64 /
export SCALA_HOME=/home/[user]/xxx/scala-2.11.8 export SPARK_WORKER_MEMORY=4g
export SPARK_MASTER_IP=101.X.XX.XX0
export MASTER=spark://101.X.XX.XX0:7077
export HADOOP_CONF_DIR=/home/[user]/xxxx/hadoop-2.7.2/etc/hadoop
4 slaves

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值