抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >
image

1. 第1部分

任务的提交:

(1). run-example SparkPi 100
(2). spark-shell
(3). spark-submit

--master:

1
2
3
local local[2] local[*]
spark://hadoop02:7077, hadoop04:7077
yarn

HDFS 处理 myha01 这个 nameservice 的方式非常的暴力:

所有的请求,其实都会给每个 namenode 都发送, 但是只有 active 的 namenode才会进行处理,进行回复
if (namenode.getServiceStage() == “standby”) {} else : …

2. 第2部分

核心功能: SparkContext, 存储体系, 执行引擎 DAGScheduler, 部署模式

扩展功能: SQL, Streaming, GraphX, MLlib, SparkR, Pyspark

核心概念:

Application
Job 切分标准: 从前往后找action的算子
Stage 切分标准: 从后往前找宽依赖的算子
Task

在spark中,Task的类型分为2种:ShuffleMapTask 和 ResultTask;简单来说,DAG的最后一个阶段会为每个结果的 partition 生成一个 ResultTask, 即每个Stage里面的Task的数量是由该Stage中最后一个RDD的Partition的数量所决定的!

而其余所有阶段都会生成ShuffleMapTask;之所以称之为ShuffleMapTask是因为它需要将自己的计算结果通过shuffle到下一个stage中。

image

Driver Application: 客户端驱动程序, 也可以理解为客户端应用程序,用于将任何程序转换为 RDD 和 DAG, 并与 Cluster Manager 进行通信与调度.

ClusterManager
Driver
Executor
Master, Worker, Client

deploy-mode 主要针对 yarn: client cluster

基本架构:

编程模型:

1). 获取编程入口 ---> SparkContext

2). 通过编程入口使用不同的方式加载数据得到一个数据抽象 ---> RDD

3). 针对加载得到的数据抽象调用不同的算子进行处理 ---> Transformation + Action

4). 针对结果数据进行处理 RDD/Scala 对象 或 集合 ---> print / save 存储

5). 关闭编程入口 ---> sparkContext.stop()

sparkSQL
sparkStreaming
&
sparkCore 一模一样
唯一不相同的地方就是: 编程入口, 数据抽象, 算子

RDD 摘要1:

(1) 概念: 弹性分布式数据集, 不可变的, 可分区的分布式集合
(2) 属性:

  • A list of partitions
  • A function for computing on other RDDs
  • A list of dependencies on other RDDs
  • Optionally, a Partition for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
  • Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)

RDD 摘要2:

(1). 概念

弹性分布式数据集
不可变的,可分区的分布式集合

(2). 五大属性

分区 (A list of partitions)
作用在每个分区之上的一个函数
依赖: 宽依赖 & 窄依赖
KeyValueRDD 分区器
RDD 优先位置列表

(3). 官方, 创建 RDD 的2种方式

1
2
parallelize() makeRDD()
parallelizing an existing collextion in your driver program
1
2
textFile()  引用一个外部存储系统 
referencing a dataset in an external storage systemHDFS

作用在每个RDD之上的算子:

  1. Transformation. RDD —> RDD
  2. Action. RDD —> Scala 对象 or 集合

WordCount 各种流程的划分

WorCount 各种流程划分
WorCount 各种流程划分

WordCount DAG 有向无环图

WorCount DAG有向无环图
WorCount DAG有向无环图

Reference