Spark入门(二)

549 阅读2分钟

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

二、基础

2. 集群管理模式

image.png

图自官网介绍

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

3. 监控&安全

(1)Standalone mode only
FromToDefault PortPurposeConfiguration SettingNotes
BrowserStandalone Master8080Web UIspark.master.ui.port / SPARK_MASTER_WEBUI_PORTJetty-based. Standalone mode only.
BrowserStandalone Worker8081Web UIspark.worker.ui.port / SPARK_WORKER_WEBUI_PORTJetty-based. Standalone mode only.
Driver / Standalone WorkerStandalone Master7077Submit job to cluster / Join clusterSPARK_MASTER_PORTSet to "0" to choose a port randomly. Standalone mode only.
External ServiceStandalone Master6066Submit job to cluster via REST APIspark.master.rest.portUse spark.master.rest.enabledto enable/disable this service. Standalone mode only.
Standalone MasterStandalone Worker(random)Schedule executorsSPARK_WORKER_PORTSet to "0" to choose a port randomly. Standalone mode only.
(2)All cluster managers
FromToDefault PortPurposeConfiguration SettingNotes
BrowserApplication4040Web UIspark.ui.portJetty-based
BrowserHistory Server18080Web UIspark.history.ui.portJetty-based
Executor / Standalone MasterDriver(random)Connect to application / Notify executor state changesspark.driver.portSet to "0" to choose a port randomly.
Executor / DriverExecutor / Driver(random)Block Manager portspark.blockManager.portRaw 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 中,可以实现流水线计算;