Spark入门(二)

这是我参与8月更文挑战的第13天,活动详情查看:8月更文挑战

二、基础

2. 集群管理模式

image.png

图自官网介绍

  1. Standalone:单机模式,测试等非生产环境下使用;
  2. Apache Mesos:支持运行 MapReduce 的集群管理工具;
  3. Hadoop YARN:使用 Hadoop 组件管理资源的工具;
  4. K8S:支持自动部署、扩缩容的开源容器管理工具;

3. 监控&安全

(1)Standalone mode only
From To Default Port Purpose Configuration Setting Notes
Browser Standalone Master 8080 Web UI spark.master.ui.port / SPARK_MASTER_WEBUI_PORT Jetty-based. Standalone mode only.
Browser Standalone Worker 8081 Web UI spark.worker.ui.port / SPARK_WORKER_WEBUI_PORT Jetty-based. Standalone mode only.
Driver / Standalone Worker Standalone Master 7077 Submit job to cluster / Join cluster SPARK_MASTER_PORT Set to "0" to choose a port randomly. Standalone mode only.
External Service Standalone Master 6066 Submit job to cluster via REST API spark.master.rest.port Use spark.master.rest.enabledto enable/disable this service. Standalone mode only.
Standalone Master Standalone Worker (random) Schedule executors SPARK_WORKER_PORT Set to "0" to choose a port randomly. Standalone mode only.
(2)All cluster managers
From To Default Port Purpose Configuration Setting Notes
Browser Application 4040 Web UI spark.ui.port Jetty-based
Browser History Server 18080 Web UI spark.history.ui.port Jetty-based
Executor / Standalone Master Driver (random) Connect to application / Notify executor state changes spark.driver.port Set to "0" to choose a port randomly.
Executor / Driver Executor / Driver (random) Block Manager port spark.blockManager.port Raw socket via ServerSocketChannel

4. 运行流程

  1. Driver 创建一个 SparkContext,进行资源的申请、任务的分配和监控;
  2. Executor 分配资源并启动 Executor 进程;
  3. SparkContext 根据 RDD 的依赖关系,构建 DAG,提交给 DAGScheduler 解析成 Stage。将 TaskSet 提交给底层调度器 TaskScheduler 处理;
  4. Executor 向 SparkContext 申请 Task,TaskScheduler 将 Task 分配给 Executor 运行,并提供应用程序代码;
  5. Executor 执行 Task,并将执行结果反馈给 TaskScheduler、DAGScheduler,运行完毕后写入数据并释放所有资源。

5. RDD 依赖

  1. 窄依赖:一个 父RDD 的分区对应于一个 子RDD 的分区 || 多个 父RDD 的分区对应于一个 子RDD 的分区;
  2. 宽依赖:存在一个 父RDD 的一个分区 对应 一个 子RDD 的多个分区;
  3. Stage 划分:将窄依赖尽量划分到同一个 Stage 中,可以实现流水线计算;