• Spark 运行时相关概念


    Spark 运行时相关概念

    一些主要的名词概念

    从集群的物理层面

    • Master 节点:部署 Cluster Manager的节点

    • Slave 节点:部署 Worker 的节点,每个节点可以有多个 Worker 进程

    从进程层面(与所执行的应用无关)

    • Cluster Manager:管理集群的 CPU、内存等资源,为不同的应用分配所需的资源

    • Worker: 接受 Cluster Manager 的调度安排,分配具体的资源给应用程序,生成 Executor。每个Worker可以有多个Executor,但默认值为1

    具体的APP执行

    • Driver:向集群提交 Application, 执行其中创建 SparkContext 的 mian 函数的进程
    • Executor:执行切分好的 task ,并把结果缓存在节点的内存和磁盘上。每个 Executor 上可以有多个 task

    APP 执行概念的划分

    • job:每一个 action 算子会生成一个 job
    • stage:每个 job 会被划分为多个 stage,划分依据是否发生了 shuffle(或者说宽窄依赖)
    • task:被分配到 Executor 上执行的单位工作内容,一般有多少个 partition 就会有多少个task

    Spark 程序的一些对象

    SparkConf、SparkContext、SparkSession 和 StreamingContext

    • SparkConf:Spark运行的配置对象
    • SparkContext:Driver 和集群进行连接和通信的上下文,RDD 编程的入口,Spark 中使用的大多数操作/方法或函数都来自 SparkContext,例如累加器、广播变量、并行化等等
    • SparkSession:Spark 新的入口,内部封装了 SparkContext,其实计算也都由 SparkContext 完成,当需要使用 Spark SQL、Hive、DataFream、DataSet 时应使用 SparkSession 为入口
    • StreamingContext:Spark Streming 的入口,内部封装了 SparkContext,Stream 相当于 unbound 的 RDD

    Spark 运行模式

    本地模式

    • 本地启动多线程 模拟集群工作,提供单机测试坏境,用于验证逻辑的正确性
    • 提交时用参数--master local[N]启动

    本地集群模式

    • 本地启动多进程 模拟集群工作
    • 提交时用--master local-cluster[num_excutors, excutor_cores, excutor_memory]启动

    StandAlone 模式

    • 自带的集群部署模式,不依赖其他资源调度框架,但资源的调度上不够灵活,适用于项目早期快速部署
    • 提交参数 --master spark://ip:port

    Spark On Yarn(Mesos与之类似)

    • 集群部署模式,借助 Yarn 进行资源管理
    • --master yarn

    在使用集群部署时还可以使用参数--deploy-mode clientcluster设置选用client还是cluster模式,

    • client 模式:在提交App的节点启动 driver,App运行过程中该节点不可离线且应该能够与集群正常通信。此模式下可以在提交任务的终端上看到输出,应该只在调试和测试时使用此模式
    • cluster 模式:driver 启动在集群中的某一节点,App 提交后节点可以离线,正常生产中使用此模式

    参考资料

    - [1] Spark 应用提交指南
    - [2] Cluster vs Client: Execution modes for a Spark application

  • 相关阅读:
    Spring Cloud (八):服务调用追踪 sleuth & zipkin
    Spring Cloud (七):API 网关
    Spring Cloud (六):声明式 REST 请求 Feign
    maven 下载 jar 包到本地
    K8S 设置 Pod 使用 host 网络、配置 DNS
    Spring Cloud (五):容错处理 Hystrix
    Spring Cloud (四):客户端实现负载均衡
    [数仓]数据仓库设计方案
    [知识图谱]Neo4j知识图谱构建(neo4j-python-pandas-py2neo-v3)
    [Pandas]利用Pandas处理excel数据
  • 原文地址:https://www.cnblogs.com/DavonC/p/14471128.html
Copyright © 2020-2023  润新知