Spark
RDD.png MAINSPARK COMPONENTS.pngMapReduce's shortcomings
尽管Hadoop是当今大数据革命的基础,并且得到了积极的使用和维护,但它仍然存在缺点,它们主要与MapReduce组件有关。 MapReduce作业结果需要存储在HDFS中才能被其他作业使用。 出于这个原因,MapReduce在迭代算法中本身就很糟糕。
此外,许多类型的问题都不容易适应MapReduce的两步范式,并且将每个问题分解为一系列这两个操作可能很困难。
Spark集群是一组互连的进程,通常在不同的机器上以分布式方式运行。
Spark运行的主要集群类型是YARN,Mesos和Spark独立。
另外两个运行时选项,本地模式local mode和本地集群模式local cluster mode,尽管设置Spark的最简单,最快捷的方法主要用于测试目的。 local mode是在单个计算机上运行的伪集群(pseudo-cluster),本地集群模式是Spark独立集群(spark standalone cluster),也仅限于单个计算机。
描述适用于所有Spark集群类型的Spark运行时体系结构的常见元素。
例如,驱动程序(driver)和执行程序(executor process)进程以及Spark上下文(spark context)和调度程序(scheduker objects)对象对所有Spark运行时模式都是通用的。
作业(jobs scheduling)和资源调度(resource scheduling)在所有集群类型上的功能也类似,Spark Web UI的用法和配置也用于监视Spark作业的执行。(monitor the exexution of spark's jobs)
executor和driver进程的物理位置取决于集群类型及其配置。 例如,其中一些进程可以共享一台物理机器,或者它们都可以运行在不同的物理机器上。 上图仅显示了集群部署模式中的逻辑组件。
CLIENT-PROCESS COMPONENT
client process启动驱动程序(driver program)。 client process可以是用于运行应用程序的spark-submit脚本,spark-shell脚本或使用Spark API的自定义应用程序。
client process为Spark应用程序准备class path和所有configuration选项。 它还将应用程序参数(如果有)传递给在driver中运行的应用程序。
THE DRIVER COMPONENT
driver program 安排并见识spark application的执行,每个Spark应用程序总有一个driver,driver和其子组件(spark context and scheduler)主要负责
- 从cluster managers 请求cpu资源和内存
- 将应用程序按逻辑分解为阶段(stages)和任务(tasks)
- 将tasks发送给executor
- 收集结果
cluster-deploy mode
spark-cluster-deploy.png
在cluster-deploy模式下,driver进程在集群中作为单独的JVM进程运行,并且管理集群资源(主要是JVM堆内存)。
client-deploy mode
spark-client-deploy.png
在client-deploy模式下,driver在客户端的JVM进程中运行,并与集群管理的执行程序进行通信。
THE EXECUTORS
executor是jvm进程,接受来自driver的tasks,执行这tasks,并将结果返回给driver
上两张图的示例driver只使用两个executor,可以更多,这里只是示例
每个executor有多个任务槽,用于并行执行tasks,可以将任务槽的数量设置为cpu内核数量的2~3倍,task实现为线程,不必与机器上的物理CPU内核数相对应
CREATION OF THE SPARK CONTEXT
一旦driver启动,它将启动并配置SparkContext实例,运行spark-shell时,shell就是driver,shell的上下文已经预先配置并可用作sc变量,通过
网友评论