Spark学习笔记5:Spark集群架构

  Spark的一大好处就是可以通过增加机器数量并使用集群模式运行,来扩展计算能力。Spark可以在各种各样的集群管理器(Hadoop YARN , Apache Mesos , 还有Spark自带的独立集群管理器)上运行,所以Spark应用既能够适应专用集群,又能用于共享的云计算环境。

  • Spark运行时架构

Spark在分布式环境中的架构如下图:

  在分布式环境下,Spark集群采用的是主/从结构。在Spark集群,驱动器节点负责中央协调,调度各个分布式工作节点。执行器节点是工作节点,作为独立的Java进行运行,可以和大量的执行器节点进行通信,作为独立的Java进程运行。驱动器节点和所有的执行器节点一起被称为一个Spark应用。

  Spark应用通过一个叫做集群管理器的外部服务在集群上的机器上启动。Spark自动的集群管理器称为独立集群管理器。Spark也能运行在Hadoop YARN和Apache Mesos两大开源集群管理器上。

  详细说明驱动器节点和执行器节点的作用:

1、驱动器节点

Spark驱动器是执行程序中main()方法的进程。它执行用户编写的用来创建SparkContext ,创建RDD,以及进行RDD转化操作和行动操作的代码。

驱动器进程在Spark应用中有以下两个职责:

  • 把用户程序转为任务

Spark驱动器程序负责把用户程序转为多个物理执行的单元,这些单元称为任务。任务是Spark中最小的工作单元,用户程序通常要启动成百上千的独立任务。

  • 为执行器节点调度任务

Spark驱动器在各执行器进程间协调任务的调度,驱动器进程对应用中所有的执行器节点有完整的记录。每个执行器节点代表一个能够处理任务和存储RDD数据的进程。

2、执行器节点

Spark执行器节点是一种工作进程,负责在Spark作业中运行任务,任务间相互独立。执行器节点在Spark应用启动时启动,伴随着整个Spark应用的生命周期而存在。

执行器节点负责运行组成Spark应用的任务,并将结果返回给驱动器进程。

执行器节点通过自身的块管理器为用户程序中要求缓存的RDD提供内存式存储。

  • spark-submit部署应用

使用Spark提供的统一脚本spark-submit将应用提交到集群管理器上。

spark-submit提供了各种选项可以控制应用每次运行的各项细节。这些选项分为两类:第一类是调度信息,比如你希望为作业申请的资源量。第二类是应用的运行时依赖,比如需要部署到所有工作节点的库和文件。

spark-submit的一般格式:

  bin/spark-submit [options]  <app jar | python file>  [app options]

[options]是要传给spark-submit的标记列表,运行spark-submit --help 可以列出所有可以接收的标记。

<app jar | python file>表示包含应用入口的JAR包或Python脚本。

[app options]是传给应用的选项。

spark-submit一些常用的标记如下:

  • 使用Maven依赖
<properties>
        <scala.version>2.10.4</scala.version>
        <spark.version>1.6.3</spark.version>
        <hadoop.version>2.6.0</hadoop.version>
    </properties>

    <dependencies>
        <!--         scala        -->
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>${scala.version}</version>
        </dependency>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-compiler</artifactId>
            <version>${scala.version}</version>
        </dependency>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-reflect</artifactId>
            <version>${scala.version}</version>
        </dependency>

        <!--         spark        -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.10</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_2.10</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.10</artifactId>
            <version>${spark.version}</version>
        </dependency>

        <!--         hive        -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_2.10</artifactId>
            <version>${spark.version}</version>
        </dependency>

        <!--       hadoop      -->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>${hadoop.version}</version>
        </dependency>

       <!--    JDBC     -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.35</version>
        </dependency>
    </dependencies>
  •   Spark应用内与应用间调度

在调度多用户集群时,Spark主要依赖集群管理器来在Saprk应用间共享资源。Spark内部的公平调度器会让长期运行的应用定义调度任务的优先级队列。

时间: 2024-12-25 17:03:49

Spark学习笔记5:Spark集群架构的相关文章

spark学习笔记总结-spark入门资料精化

Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用.减少了延时处理,提高性能效率实用灵活性.也可以与hadoop切实相互结合. spark核心部分分为RDD.Spark SQL.Spark Streaming.MLlib.GraphX.Spark R等核心组件解决了很多的大数据问题,其完美的框架日受欢迎.其相应的生态环境包括zepplin等可视化方面

rabbitmq系统学习(三)集群架构

RabbitMQ集群架构模式 主备模式 实现RabbitMQ的高可用集群,一般在并发和数据量不高的情况下,这种模型非常的好用且简单.主备模式也称为Warren模式 HaProxy配置 listen rabbitmq_cluster bind 0.0.0.0:5672 # 配置TCP模式 mode tcp #简单的轮询 balance roundrobin #主节点 server bhz76 192.168.11.76:5672 check inter 5000 rise 2 fall 3 ser

Spark学习笔记—01 Spark集群的安装

一.概述 关于Spark是什么.为什么学习Spark等等,在这就不说了,直接看这个:http://spark.apache.org, 我就直接说一下Spark的一些优势: 1.快 与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上.Spark实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流. 2.易用 Spark支持Java.Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用.而且Sp

Elasticsearch学习笔记-03.1集群健康

本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸. 原文出处:https://www.elastic.co/guide/en/elasticsearch/reference/current/_cluster_health.html 让我们以一个基础的健康检查开始,用这个检查我们可以得知我们的集群工作状态如何.咱们来使用curl做这个检查,不过你也可以使用任何能发起HTTP/REST请求的工具来做这个练习.假设我们仍旧在启动E

Elasticsearch学习笔记-03探索集群

本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸.原文出处:https://www.elastic.co/guide/en/elasticsearch/reference/current/_exploring_your_cluster.html REST API现在咱们已经成功让Elasticsearch的节点(和集群)运行良好了,下一步来了解一下如何与之通信.得之吾幸,Elasticsearch提供了非常广泛切强大的RES

Hadoop学习笔记—13.分布式集群中的动态添加与下架

开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如何动态(不关机且正在运行的情况下)地添加一个Hadoop节点与下架一个Hadoop节点. 一.实验环境结构 本次试验,我们构建的集群是一个主节点,三个从节点的结构,其中三个从节点的性能配置各不相同,这里我们主要在虚拟机中的内存设置这三个从节点分别为:512MB.512MB与256MB.首先,我们暂时只设置两个从节点,另外一个作为动态添加节点的时候使用.主节点与

Spark学习笔记-使用Spark History Server

在运行Spark应用程序的时候,driver会提供一个webUI给出应用程序的运行信息,但是该webUI随着应用程序的完成而关闭端口,也就是 说,Spark应用程序运行完后,将无法查看应用程序的历史记录.Spark history server就是为了应对这种情况而产生的,通过配置,Spark应用程序在运行完应用程序之后,将应用程序的运行信息写入指定目录,而Spark history server可以将这些运行信息装载并以web的方式供用户浏览. 要使用history server,对于提交应用

Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如何动态(不关机且正在运行的情况下)地添加一个Hadoop节点与下架一个Hadoop节点. 一.实验环境结构 本次试验,我们构建的集群是一个主节点,三个从节点的结构,其中三个从节点的性能配置各不相同,这里我们主要在虚拟机中的内存设置这三个从节点分别为:512MB.512MB与256MB.首先,我们暂时只设置两个从节点,另外一个作为动态添加节点的时候使用.主节点与

Spark 学习笔记之 Spark history Server 搭建

在hdfs上建立文件夹/directory hadoop fs -mkdir /directory 进入conf目录  spark-env.sh 增加以下配置 export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=7777 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://bjsxt/directory" spark-defaults