大數(shù)據(jù)培訓(xùn)Module04Spark架構(gòu)原理課件_第1頁(yè)
大數(shù)據(jù)培訓(xùn)Module04Spark架構(gòu)原理課件_第2頁(yè)
大數(shù)據(jù)培訓(xùn)Module04Spark架構(gòu)原理課件_第3頁(yè)
大數(shù)據(jù)培訓(xùn)Module04Spark架構(gòu)原理課件_第4頁(yè)
大數(shù)據(jù)培訓(xùn)Module04Spark架構(gòu)原理課件_第5頁(yè)
已閱讀5頁(yè),還剩51頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

版權(quán)所有?

2015

華為技術(shù)有限公司Spark架構(gòu)原理版權(quán)所有?2015華為技術(shù)有第1頁(yè)前言版權(quán)所有?

2015

華為技術(shù)有限公司第1頁(yè)

本章主要對(duì)Spark組件的應(yīng)用場(chǎng)景,功能和架構(gòu)以及在FusionInsight平臺(tái)中的使用等進(jìn)行簡(jiǎn)單介紹前言版權(quán)所有?2015華為技術(shù)有限公司第1頁(yè) 本章主要目標(biāo)版權(quán)所有?

2015

華為技術(shù)有限公司第2頁(yè)

學(xué)完本課程后,您將能夠:

理解Spark應(yīng)用場(chǎng)景,了解Spark特點(diǎn)

了解Spark計(jì)算能力及其技術(shù)架構(gòu)了解Spark組件在FusionInsight

平臺(tái)中的使用目標(biāo)版權(quán)所有?2015華為技術(shù)有限公司第2頁(yè) 學(xué)完本課目錄版權(quán)所有?

2015

華為技術(shù)有限公司第3頁(yè)Spark

應(yīng)用場(chǎng)景Spark應(yīng)用場(chǎng)景Spark特點(diǎn)2. Spark基本功能和技術(shù)架構(gòu)3. Spark組件介紹目錄版權(quán)所有?2015華為技術(shù)有限公司第3頁(yè)SparkSpark適用場(chǎng)景版權(quán)所有?

2015

華為技術(shù)有限公司第4頁(yè)

是什么

Spark系統(tǒng)是分布式批處理系統(tǒng)和分析挖掘引擎Spark

是AMP

LAB貢獻(xiàn)到Apache社區(qū)的開(kāi)源項(xiàng)目,是AMP大數(shù)據(jù)棧的基礎(chǔ)組件

做什么

數(shù)據(jù)處理(Data

Processing):可以用來(lái)快速處理數(shù)據(jù),兼具容錯(cuò)性和可擴(kuò)展性

迭代計(jì)算(Iterative

Computation):支持迭代計(jì)算,有效應(yīng)對(duì)多步的數(shù)據(jù)處理邏輯

數(shù)據(jù)挖掘(Data

Mining):在海量數(shù)據(jù)基礎(chǔ)上進(jìn)行復(fù)雜的挖掘分析,可支持各種數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)算法Spark適用場(chǎng)景版權(quán)所有?2015華為技術(shù)有限公司第4Spark適用場(chǎng)景

大多數(shù)現(xiàn)有集群計(jì)算框架如Hadoop等基于從穩(wěn)定存儲(chǔ)(文件系統(tǒng))到穩(wěn)定存儲(chǔ)的非循環(huán)數(shù)據(jù)流---應(yīng)對(duì)數(shù)據(jù)集重用型應(yīng)用時(shí)低效,與傳統(tǒng)的MR任務(wù)的頻繁讀寫(xiě)磁盤(pán)數(shù)據(jù)相比,基于內(nèi)存計(jì)算的Spark則更適合應(yīng)用與迭代計(jì)算,交互式分析等場(chǎng)景iter.1iter.2...HDFSreadHDFSwriteHDFSreadHDFSwriteInputInput...DataSharing

in

MapReduceresult1result2result3...InputInput...query1DataSharing

in

Spark版權(quán)所有?

2015

華為技術(shù)有限公司第5頁(yè)One-timeprocessingDistributed

memoryquery2HDFSreadquery3iter.1iter.2query1query2query3Spark適用場(chǎng)景 大多數(shù)現(xiàn)有集群計(jì)算框架如Hadoop等Spark特點(diǎn)版權(quán)所有?

2015

華為技術(shù)有限公司第6頁(yè)

輕:Spark核心代碼有3萬(wàn)行。

Scala語(yǔ)言的簡(jiǎn)潔和豐富表達(dá)力巧妙利用了Hadoop和Mesos的基礎(chǔ)設(shè)施

快:Spark對(duì)小數(shù)據(jù)集可達(dá)到亞秒級(jí)的延遲

對(duì)大數(shù)據(jù)集的迭代機(jī)器學(xué)習(xí)即席查詢(xún)、圖計(jì)算等應(yīng)用,Spark

版本比基于MapReduce、Hive和Pregel的實(shí)現(xiàn)快

內(nèi)存計(jì)算、數(shù)據(jù)本地性和傳輸優(yōu)化、調(diào)度優(yōu)化Spark特點(diǎn)版權(quán)所有?2015華為技術(shù)有限公司第6頁(yè)Spark特點(diǎn)版權(quán)所有?

2015

華為技術(shù)有限公司第7頁(yè)

靈:Spark提供了不同層面的靈活性

Scala語(yǔ)言trait動(dòng)態(tài)混入策略(如可更換的集群調(diào)度器、序列化庫(kù))

允許擴(kuò)展新的數(shù)據(jù)算子、新的數(shù)據(jù)源、新的language

bindings

Spark支持內(nèi)存計(jì)算、多迭代批量處理、即席查詢(xún)、流處理和圖計(jì)算等多種范式

巧:巧妙借力現(xiàn)有大數(shù)據(jù)組件Spark借Hadoop之勢(shì),與Hadoop無(wú)縫結(jié)合圖計(jì)算借用Pregel和PowerGraph的API以及PowerGraph的點(diǎn)分割思想Spark特點(diǎn)版權(quán)所有?2015華為技術(shù)有限公司第7頁(yè)本節(jié)總結(jié)版權(quán)所有?

2015

華為技術(shù)有限公司第8頁(yè)

本章主要對(duì)Spark的產(chǎn)生背景和應(yīng)用場(chǎng)景給予簡(jiǎn)單介紹,同時(shí)介紹了spark的特點(diǎn)。本節(jié)總結(jié)版權(quán)所有?2015華為技術(shù)有限公司第8頁(yè) 本章目錄版權(quán)所有?

2015

華為技術(shù)有限公司第9頁(yè)Spark應(yīng)用場(chǎng)景2. Spark技術(shù)架構(gòu)和基本功能Spark系統(tǒng)架構(gòu)Spark基本概念

任務(wù)運(yùn)行過(guò)程

任務(wù)調(diào)度3. Spark基本功能和技術(shù)架構(gòu)目錄版權(quán)所有?2015華為技術(shù)有限公司第9頁(yè)Spark應(yīng)Spark技術(shù)架構(gòu)版權(quán)所有?

2015

華為技術(shù)有限公司第10頁(yè)Spark架構(gòu)采用了分布式計(jì)算中的Master-Slave模型。Master是對(duì)應(yīng)集群中的含有Master進(jìn)程的節(jié)點(diǎn)(ClusterManager),Slave是集群中含有Worker進(jìn)程的節(jié)點(diǎn)。Master作為整個(gè)集群的控制器,負(fù)責(zé)整個(gè)集群的正常運(yùn)行;Worker相當(dāng)于是計(jì)算節(jié)點(diǎn),接收主節(jié)點(diǎn)命令與進(jìn)行狀態(tài)匯報(bào);Executor負(fù)責(zé)任務(wù)的執(zhí)行,運(yùn)行在Worker節(jié)點(diǎn)(在FI集群中,Master節(jié)點(diǎn)即為Resourcemanager節(jié)點(diǎn),Slave節(jié)點(diǎn)即為NodeManager節(jié)點(diǎn));Spark的任務(wù)流程:Client作為客戶(hù)端提交應(yīng)用,Master找到一個(gè)Worker

啟動(dòng)Driver(或者本地啟動(dòng)Driver),Driver向Master申請(qǐng)資源,之后將應(yīng)用轉(zhuǎn)化為RDD

Graph,再由DAGScheduler將RDD

Graph轉(zhuǎn)化為Stage后提交給TaskScheduler,由TaskScheduler提交給Executor執(zhí)行。Spark技術(shù)架構(gòu)版權(quán)所有?2015華為技術(shù)有限公司第1Spark

Application基本概念版權(quán)所有?

2015

華為技術(shù)有限公司第11頁(yè)Application:

Spark用戶(hù)程序,提交一次應(yīng)用為一個(gè)App,一個(gè)App會(huì)啟動(dòng)一個(gè)SparkContext,也就是app的driver,驅(qū)動(dòng)整個(gè)App的運(yùn)行Job:

一個(gè)App可能包含多個(gè)Job,每個(gè)action算子對(duì)應(yīng)一個(gè)Job;action算子有collect,count等。Stage:

每個(gè)Job可能包含多層Stage,劃分標(biāo)記為shuffle過(guò)程;Stage按照依賴(lài)關(guān)系依次執(zhí)行。

Task:

具體執(zhí)行任務(wù)的基本單位,被發(fā)到executor上執(zhí)行。SparkApplication基本概念版權(quán)所有?201Spark基本概念版權(quán)所有?

2015

華為技術(shù)有限公司第12頁(yè)

Cluster

Manager:

集群資源管理服務(wù),通常包含主節(jié)點(diǎn)(主備)和多個(gè)運(yùn)行節(jié)點(diǎn);支持運(yùn)行模式有Standalone模式、on

Mesos模式、on

Yarn模式(FI環(huán)境中使用Yarn作為spark任務(wù)調(diào)度的資源管理器)。

Driver:運(yùn)行App的大腦,負(fù)責(zé)job的初始化,將job轉(zhuǎn)換成task并提交執(zhí)行DAGScheduler:是一個(gè)面向Stage層面的調(diào)度器,把Job分解成Stage

,按照Stage提交TaskSet給TaskScheduler。TaskScheduler:提交Task給Executor運(yùn)行,并管理執(zhí)行結(jié)果。

BlockManager:管理App運(yùn)行周期的中間數(shù)據(jù),比如存在內(nèi)存、本地。

Executor:

是App運(yùn)行在work

節(jié)點(diǎn)上的一個(gè)進(jìn)程,該進(jìn)程負(fù)責(zé)運(yùn)行task,生命周期和App相同。Spark基本概念版權(quán)所有?2015華為技術(shù)有限公司第1Spark核心概念

RDD(ResilientDistributed

Datasets)

定義:只讀的,可分區(qū)的分布式數(shù)據(jù)集;數(shù)據(jù)集可全部或部分緩存在內(nèi)存中,在一個(gè)App多次計(jì)算間重用,RDD是Spark的核心。

血統(tǒng)容錯(cuò):根據(jù)血統(tǒng)(父子間依賴(lài)關(guān)系)重計(jì)算恢復(fù)丟失數(shù)據(jù)RDD操作:

Transformation算子和Action算子。原生數(shù)據(jù)空間存儲(chǔ)(e.g.

HDFS)Scala集合

數(shù)據(jù)類(lèi)型Scala標(biāo)量

類(lèi)型輸入算子變換算子緩存算子行動(dòng)算子Spark

RDD

空間版權(quán)所有?

2015

華為技術(shù)有限公司第13頁(yè)Spark核心概念–RDD(Resilient 定義:RDD父子依賴(lài)關(guān)系:窄(Narrow)依賴(lài)和寬(Wide)依賴(lài)。窄依賴(lài)指父RDD的每一個(gè)分區(qū)最多被一個(gè)子RDD的分區(qū)所用。寬依賴(lài)指子RDD的分區(qū)依賴(lài)于父RDD的所有分區(qū)。Spark核心概念

寬依賴(lài)和窄依賴(lài)Narrow

Dependencies:map,filterunionjoin

withinputsco-partitionedWideDependencies:groupByKeyjoin

withinputsnotco-partitioned版權(quán)所有?

2015

華為技術(shù)有限公司第14頁(yè)unionStage

2Stage

3

A: B:G:Stage

1 groupByC: D: F:mapE: joinRDD父子依賴(lài)關(guān)系:窄(Narrow)依賴(lài)和寬(Wide)依Spark核心概念

Transformation和Action版權(quán)所有?

2015

華為技術(shù)有限公司第15頁(yè)Transformation有如下幾種:map(f:

T

=>

U):

RDD[T]=>RDD[U]?lter(f:

T

=>

Bool):

RDD[T]=>RDD[T]?atMap(f:

T

=>

Seq[U]):

RDD[T]=>RDD[U]groupByKey():

RDD[(K,V)]=>RDD[(K,Seq[V])]reduceByKey(f:

(V,V)

=>

V):

RDD[(K,V)]=>RDD[(K,V)]union():

(RDD[T],RDD[T])=>RDD[T]join():

(RDD[(K,V)],RDD[(K,W)])=>RDD[(K,(V,W))]mapValues(f:

V

=>

W):

RDD[(K,V)]=>RDD[(K,W)]partitionBy(p:

Partitioner[K]):

RDD[(K,V)]=>RDD[(K,V)]Action有如下幾種:count():

RDD[T]

=>

Longcollect():

RDD[T]

=>Seq[T]reduce(

f:

(T,T)

=>

T):

RDD[T]

=>

Tlookup(k:

K):

RDD[(K,

V)]

=>Seq[V]Transformation是懶操作,用于定義新的

RDD;而Action啟動(dòng)計(jì)算操作,并向用戶(hù)程序返回值或向外部存儲(chǔ)寫(xiě)數(shù)據(jù)。Spark核心概念–Transformation和版權(quán)所運(yùn)行過(guò)程構(gòu)建Spark

Application的運(yùn)行環(huán)境(啟動(dòng)SparkContext)SparkContext向資源管理器(Standalone、Mesos、Yarn)申請(qǐng)運(yùn)行Executor資源,并啟動(dòng)StandaloneExecutorBackend

Executor向SparkContext注冊(cè)SparkContext啟動(dòng)應(yīng)用程序DAG調(diào)度、Stage劃分,TaskSet生成Task

Scheduler調(diào)度Taskset,將task發(fā)放給Executor運(yùn)行。Task在Executor上運(yùn)行,運(yùn)行完畢釋放所有資源。Task

Schedule提交和監(jiān)控Task資源管理器分配并監(jiān)控資源使用狀況資源匯報(bào)資源使用狀況啟動(dòng)StandaloneExeutorBackendSparkContextTask1:注冊(cè)并申請(qǐng)資源2:分配資源3:注冊(cè)并申請(qǐng)Task版權(quán)所有?

2015

華為技術(shù)有限公司第16頁(yè)4:注銷(xiāo)RDD

Objects構(gòu)建DAG圖DAG圖DAG

Scheduler將DAG圖分解成StageTaskset運(yùn)行過(guò)程構(gòu)建SparkApplication的運(yùn)行環(huán)境(Cluster模式:Spark

Driver啟動(dòng)在集群中,

ResourceManager在集群中分配一個(gè)container來(lái)啟動(dòng)Spark

Driver驅(qū)動(dòng)整個(gè)應(yīng)用。Spark

OnYarn模式App運(yùn)行過(guò)程N(yùn)odeManagerContainnerExecutorCACHEspark-submitNodeResourceManager1:提交Application2:RM為Application分配資源啟動(dòng)Container3:SparkContext向RM申請(qǐng)運(yùn)行Executor資源

NodeManager4:SparkContext啟動(dòng)StandaloneExecutorBackend并等待Task(SparkContext分配Task給Executor)5:Executor報(bào)告Task狀態(tài)直至完成6:注銷(xiāo)Application,歸還資源ContainerSparkContextRDDGraphContainerExecutorCACHE版權(quán)所有?

2015

華為技術(shù)有限公司第17頁(yè)ClientApplicationjarTASKTASKScheduler...TASKTASKCluster模式:SparkDriver啟動(dòng)在集群中,Spark應(yīng)用調(diào)度BlockmanagerRDDObjectsDAGSchedulerTaskSchedulerWorkerCluster版權(quán)所有?

2015

華為技術(shù)有限公司第18頁(yè)rdd1.join(rdd2).groupBy(...).filter(...)buildoperatorDAGsplitgraph

intostagesoftasksstageasreadylaunchtasksviaclustermanagerstragglingtasksexecutetasksblocksDAGTaskSetTaskSpark應(yīng)用調(diào)度BlockmanagerRDDObje本章總結(jié)版權(quán)所有?

2015

華為技術(shù)有限公司第19頁(yè)

本章主要介紹了Spark的基本概念,技術(shù)架構(gòu),著重介紹了

Spark任務(wù)的進(jìn)程運(yùn)行,On

Yarn模式,以及Spark

的應(yīng)用調(diào)度。本章總結(jié)版權(quán)所有?2015華為技術(shù)有限公司第19頁(yè) 本目錄版權(quán)所有?

2015

華為技術(shù)有限公司第20頁(yè)1. Spark應(yīng)用場(chǎng)景2. Spark

基本功能和技術(shù)架構(gòu)Spark組件介紹Spark在FI界面呈現(xiàn)Spark常用進(jìn)程Spark維護(hù)關(guān)鍵點(diǎn)目錄版權(quán)所有?2015華為技術(shù)有限公司第20頁(yè)1. Sp1.服務(wù)狀態(tài)信息、角色信息以及開(kāi)放的配置項(xiàng)2.管理操作:?jiǎn)⑼park、下載spark客戶(hù)端、同步配置3.服務(wù)總體概況4.角色的顯示和健康狀況,點(diǎn)擊相應(yīng)角色可查看角色下的實(shí)例FusionInsight平臺(tái)為Spark服務(wù)提供了管理監(jiān)控的可視化界面,通過(guò)Web

UI界面,可完成以下動(dòng)作:Spark的WebUI呈現(xiàn)版權(quán)所有?

2015

華為技術(shù)有限公司第21頁(yè)1.服務(wù)狀態(tài)信息、角色信息以及開(kāi)放的配置項(xiàng)FusionInSpark與其他組件交互版權(quán)所有?

2015

華為技術(shù)有限公司第22頁(yè)在FI集群中,Spark主要與以下組件進(jìn)行交互:1)HDFS:Spark在HDFS文件系統(tǒng)中讀寫(xiě)數(shù)據(jù)(必選)2)YARN:Spark任務(wù)的運(yùn)行以來(lái)Yarn來(lái)進(jìn)行資源的調(diào)度管理(必選)3)DBService:Spark-sql的表存儲(chǔ)在Dbservice的數(shù)據(jù)庫(kù)中(必選)4)Zookeeper,JDBCServer的HA的實(shí)現(xiàn)依賴(lài)于Zookeeper的協(xié)調(diào)(必選)5)Kafka:Spark可以接收Kafka發(fā)送的數(shù)據(jù)流(可選)6)Hbase:Spark可以操作Hbase的表(可選)Spark與其他組件交互版權(quán)所有?2015華為技術(shù)有限公Spark常用進(jìn)程版權(quán)所有?

2015

華為技術(shù)有限公司第23頁(yè)JDBCServer

實(shí)際上是一個(gè)長(zhǎng)駐的spark應(yīng)用,通過(guò)shell_start-thriftserver.sh腳本啟動(dòng)。用戶(hù)可以通過(guò)執(zhí)行beeline腳本,連接JDBCServer,執(zhí)行sql語(yǔ)句JobHistory是一個(gè)單節(jié)點(diǎn)進(jìn)程,通過(guò)shell_start-history-server.sh腳本啟動(dòng)

該進(jìn)程用于提供HistoryServer頁(yè)面,展示歷史應(yīng)用的執(zhí)行信息Spark常用進(jìn)程版權(quán)所有?2015華為技術(shù)有限公司第2服務(wù)維護(hù)關(guān)鍵點(diǎn)版權(quán)所有?

2015

華為技術(shù)有限公司第24頁(yè)Spark在FusionInsight平臺(tái)中主要有三個(gè)角色,其中SparkResource主要為Spark任務(wù)執(zhí)行提供必要的資源,JobHistory

和JDBCServer這兩個(gè)角色提供服務(wù)。當(dāng)spark角色異常時(shí),可到對(duì)應(yīng)節(jié)點(diǎn)的/var/log/Bigdata/spark/路徑下查看相關(guān)日志;

當(dāng)Spark任務(wù)運(yùn)行失敗時(shí),可通過(guò)FI的鏈接在yarn原生界面查看對(duì)應(yīng)任務(wù)的日志信息或者到y(tǒng)arn.nodemanager.log-dirs的位置查看相應(yīng)的container日志;如果任務(wù)已經(jīng)運(yùn)行完畢,且yarn上開(kāi)啟日志歸集功能(通過(guò)yarn.log-aggregation-enable配置),則日志應(yīng)到hdfs文件系統(tǒng)中查看。服務(wù)維護(hù)關(guān)鍵點(diǎn)版權(quán)所有?2015華為技術(shù)有限公司第24頁(yè)本章總結(jié)版權(quán)所有?

2015

華為技術(shù)有限公司第25頁(yè)本章主要介紹了Spark組件再FusionInsight平臺(tái)中的使用和日志的記錄的查詢(xún)讀取。本章總結(jié)版權(quán)所有?2015華為技術(shù)有限公司第25頁(yè)本章主學(xué)習(xí)推薦版權(quán)所有?

2015

華為技術(shù)有限公司第26頁(yè)華為L(zhǎng)earning網(wǎng)站/learning/Index!toTrainIndex華為Support案例庫(kù)/enterprise/servicecenter?lang=zh學(xué)習(xí)推薦版權(quán)所有?2015華為技術(shù)有限公司第26頁(yè)華為L(zhǎng)www.huawe謝謝謝謝第28頁(yè)版權(quán)所有?

2015

華為技術(shù)有限公司Spark架構(gòu)原理版權(quán)所有?2015華為技術(shù)有第29頁(yè)前言版權(quán)所有?

2015

華為技術(shù)有限公司第1頁(yè)

本章主要對(duì)Spark組件的應(yīng)用場(chǎng)景,功能和架構(gòu)以及在FusionInsight平臺(tái)中的使用等進(jìn)行簡(jiǎn)單介紹前言版權(quán)所有?2015華為技術(shù)有限公司第1頁(yè) 本章主要目標(biāo)版權(quán)所有?

2015

華為技術(shù)有限公司第2頁(yè)

學(xué)完本課程后,您將能夠:

理解Spark應(yīng)用場(chǎng)景,了解Spark特點(diǎn)

了解Spark計(jì)算能力及其技術(shù)架構(gòu)了解Spark組件在FusionInsight

平臺(tái)中的使用目標(biāo)版權(quán)所有?2015華為技術(shù)有限公司第2頁(yè) 學(xué)完本課目錄版權(quán)所有?

2015

華為技術(shù)有限公司第3頁(yè)Spark

應(yīng)用場(chǎng)景Spark應(yīng)用場(chǎng)景Spark特點(diǎn)2. Spark基本功能和技術(shù)架構(gòu)3. Spark組件介紹目錄版權(quán)所有?2015華為技術(shù)有限公司第3頁(yè)SparkSpark適用場(chǎng)景版權(quán)所有?

2015

華為技術(shù)有限公司第4頁(yè)

是什么

Spark系統(tǒng)是分布式批處理系統(tǒng)和分析挖掘引擎Spark

是AMP

LAB貢獻(xiàn)到Apache社區(qū)的開(kāi)源項(xiàng)目,是AMP大數(shù)據(jù)棧的基礎(chǔ)組件

做什么

數(shù)據(jù)處理(Data

Processing):可以用來(lái)快速處理數(shù)據(jù),兼具容錯(cuò)性和可擴(kuò)展性

迭代計(jì)算(Iterative

Computation):支持迭代計(jì)算,有效應(yīng)對(duì)多步的數(shù)據(jù)處理邏輯

數(shù)據(jù)挖掘(Data

Mining):在海量數(shù)據(jù)基礎(chǔ)上進(jìn)行復(fù)雜的挖掘分析,可支持各種數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)算法Spark適用場(chǎng)景版權(quán)所有?2015華為技術(shù)有限公司第4Spark適用場(chǎng)景

大多數(shù)現(xiàn)有集群計(jì)算框架如Hadoop等基于從穩(wěn)定存儲(chǔ)(文件系統(tǒng))到穩(wěn)定存儲(chǔ)的非循環(huán)數(shù)據(jù)流---應(yīng)對(duì)數(shù)據(jù)集重用型應(yīng)用時(shí)低效,與傳統(tǒng)的MR任務(wù)的頻繁讀寫(xiě)磁盤(pán)數(shù)據(jù)相比,基于內(nèi)存計(jì)算的Spark則更適合應(yīng)用與迭代計(jì)算,交互式分析等場(chǎng)景iter.1iter.2...HDFSreadHDFSwriteHDFSreadHDFSwriteInputInput...DataSharing

in

MapReduceresult1result2result3...InputInput...query1DataSharing

in

Spark版權(quán)所有?

2015

華為技術(shù)有限公司第5頁(yè)One-timeprocessingDistributed

memoryquery2HDFSreadquery3iter.1iter.2query1query2query3Spark適用場(chǎng)景 大多數(shù)現(xiàn)有集群計(jì)算框架如Hadoop等Spark特點(diǎn)版權(quán)所有?

2015

華為技術(shù)有限公司第6頁(yè)

輕:Spark核心代碼有3萬(wàn)行。

Scala語(yǔ)言的簡(jiǎn)潔和豐富表達(dá)力巧妙利用了Hadoop和Mesos的基礎(chǔ)設(shè)施

快:Spark對(duì)小數(shù)據(jù)集可達(dá)到亞秒級(jí)的延遲

對(duì)大數(shù)據(jù)集的迭代機(jī)器學(xué)習(xí)即席查詢(xún)、圖計(jì)算等應(yīng)用,Spark

版本比基于MapReduce、Hive和Pregel的實(shí)現(xiàn)快

內(nèi)存計(jì)算、數(shù)據(jù)本地性和傳輸優(yōu)化、調(diào)度優(yōu)化Spark特點(diǎn)版權(quán)所有?2015華為技術(shù)有限公司第6頁(yè)Spark特點(diǎn)版權(quán)所有?

2015

華為技術(shù)有限公司第7頁(yè)

靈:Spark提供了不同層面的靈活性

Scala語(yǔ)言trait動(dòng)態(tài)混入策略(如可更換的集群調(diào)度器、序列化庫(kù))

允許擴(kuò)展新的數(shù)據(jù)算子、新的數(shù)據(jù)源、新的language

bindings

Spark支持內(nèi)存計(jì)算、多迭代批量處理、即席查詢(xún)、流處理和圖計(jì)算等多種范式

巧:巧妙借力現(xiàn)有大數(shù)據(jù)組件Spark借Hadoop之勢(shì),與Hadoop無(wú)縫結(jié)合圖計(jì)算借用Pregel和PowerGraph的API以及PowerGraph的點(diǎn)分割思想Spark特點(diǎn)版權(quán)所有?2015華為技術(shù)有限公司第7頁(yè)本節(jié)總結(jié)版權(quán)所有?

2015

華為技術(shù)有限公司第8頁(yè)

本章主要對(duì)Spark的產(chǎn)生背景和應(yīng)用場(chǎng)景給予簡(jiǎn)單介紹,同時(shí)介紹了spark的特點(diǎn)。本節(jié)總結(jié)版權(quán)所有?2015華為技術(shù)有限公司第8頁(yè) 本章目錄版權(quán)所有?

2015

華為技術(shù)有限公司第9頁(yè)Spark應(yīng)用場(chǎng)景2. Spark技術(shù)架構(gòu)和基本功能Spark系統(tǒng)架構(gòu)Spark基本概念

任務(wù)運(yùn)行過(guò)程

任務(wù)調(diào)度3. Spark基本功能和技術(shù)架構(gòu)目錄版權(quán)所有?2015華為技術(shù)有限公司第9頁(yè)Spark應(yīng)Spark技術(shù)架構(gòu)版權(quán)所有?

2015

華為技術(shù)有限公司第10頁(yè)Spark架構(gòu)采用了分布式計(jì)算中的Master-Slave模型。Master是對(duì)應(yīng)集群中的含有Master進(jìn)程的節(jié)點(diǎn)(ClusterManager),Slave是集群中含有Worker進(jìn)程的節(jié)點(diǎn)。Master作為整個(gè)集群的控制器,負(fù)責(zé)整個(gè)集群的正常運(yùn)行;Worker相當(dāng)于是計(jì)算節(jié)點(diǎn),接收主節(jié)點(diǎn)命令與進(jìn)行狀態(tài)匯報(bào);Executor負(fù)責(zé)任務(wù)的執(zhí)行,運(yùn)行在Worker節(jié)點(diǎn)(在FI集群中,Master節(jié)點(diǎn)即為Resourcemanager節(jié)點(diǎn),Slave節(jié)點(diǎn)即為NodeManager節(jié)點(diǎn));Spark的任務(wù)流程:Client作為客戶(hù)端提交應(yīng)用,Master找到一個(gè)Worker

啟動(dòng)Driver(或者本地啟動(dòng)Driver),Driver向Master申請(qǐng)資源,之后將應(yīng)用轉(zhuǎn)化為RDD

Graph,再由DAGScheduler將RDD

Graph轉(zhuǎn)化為Stage后提交給TaskScheduler,由TaskScheduler提交給Executor執(zhí)行。Spark技術(shù)架構(gòu)版權(quán)所有?2015華為技術(shù)有限公司第1Spark

Application基本概念版權(quán)所有?

2015

華為技術(shù)有限公司第11頁(yè)Application:

Spark用戶(hù)程序,提交一次應(yīng)用為一個(gè)App,一個(gè)App會(huì)啟動(dòng)一個(gè)SparkContext,也就是app的driver,驅(qū)動(dòng)整個(gè)App的運(yùn)行Job:

一個(gè)App可能包含多個(gè)Job,每個(gè)action算子對(duì)應(yīng)一個(gè)Job;action算子有collect,count等。Stage:

每個(gè)Job可能包含多層Stage,劃分標(biāo)記為shuffle過(guò)程;Stage按照依賴(lài)關(guān)系依次執(zhí)行。

Task:

具體執(zhí)行任務(wù)的基本單位,被發(fā)到executor上執(zhí)行。SparkApplication基本概念版權(quán)所有?201Spark基本概念版權(quán)所有?

2015

華為技術(shù)有限公司第12頁(yè)

Cluster

Manager:

集群資源管理服務(wù),通常包含主節(jié)點(diǎn)(主備)和多個(gè)運(yùn)行節(jié)點(diǎn);支持運(yùn)行模式有Standalone模式、on

Mesos模式、on

Yarn模式(FI環(huán)境中使用Yarn作為spark任務(wù)調(diào)度的資源管理器)。

Driver:運(yùn)行App的大腦,負(fù)責(zé)job的初始化,將job轉(zhuǎn)換成task并提交執(zhí)行DAGScheduler:是一個(gè)面向Stage層面的調(diào)度器,把Job分解成Stage

,按照Stage提交TaskSet給TaskScheduler。TaskScheduler:提交Task給Executor運(yùn)行,并管理執(zhí)行結(jié)果。

BlockManager:管理App運(yùn)行周期的中間數(shù)據(jù),比如存在內(nèi)存、本地。

Executor:

是App運(yùn)行在work

節(jié)點(diǎn)上的一個(gè)進(jìn)程,該進(jìn)程負(fù)責(zé)運(yùn)行task,生命周期和App相同。Spark基本概念版權(quán)所有?2015華為技術(shù)有限公司第1Spark核心概念

RDD(ResilientDistributed

Datasets)

定義:只讀的,可分區(qū)的分布式數(shù)據(jù)集;數(shù)據(jù)集可全部或部分緩存在內(nèi)存中,在一個(gè)App多次計(jì)算間重用,RDD是Spark的核心。

血統(tǒng)容錯(cuò):根據(jù)血統(tǒng)(父子間依賴(lài)關(guān)系)重計(jì)算恢復(fù)丟失數(shù)據(jù)RDD操作:

Transformation算子和Action算子。原生數(shù)據(jù)空間存儲(chǔ)(e.g.

HDFS)Scala集合

數(shù)據(jù)類(lèi)型Scala標(biāo)量

類(lèi)型輸入算子變換算子緩存算子行動(dòng)算子Spark

RDD

空間版權(quán)所有?

2015

華為技術(shù)有限公司第13頁(yè)Spark核心概念–RDD(Resilient 定義:RDD父子依賴(lài)關(guān)系:窄(Narrow)依賴(lài)和寬(Wide)依賴(lài)。窄依賴(lài)指父RDD的每一個(gè)分區(qū)最多被一個(gè)子RDD的分區(qū)所用。寬依賴(lài)指子RDD的分區(qū)依賴(lài)于父RDD的所有分區(qū)。Spark核心概念

寬依賴(lài)和窄依賴(lài)Narrow

Dependencies:map,filterunionjoin

withinputsco-partitionedWideDependencies:groupByKeyjoin

withinputsnotco-partitioned版權(quán)所有?

2015

華為技術(shù)有限公司第14頁(yè)unionStage

2Stage

3

A: B:G:Stage

1 groupByC: D: F:mapE: joinRDD父子依賴(lài)關(guān)系:窄(Narrow)依賴(lài)和寬(Wide)依Spark核心概念

Transformation和Action版權(quán)所有?

2015

華為技術(shù)有限公司第15頁(yè)Transformation有如下幾種:map(f:

T

=>

U):

RDD[T]=>RDD[U]?lter(f:

T

=>

Bool):

RDD[T]=>RDD[T]?atMap(f:

T

=>

Seq[U]):

RDD[T]=>RDD[U]groupByKey():

RDD[(K,V)]=>RDD[(K,Seq[V])]reduceByKey(f:

(V,V)

=>

V):

RDD[(K,V)]=>RDD[(K,V)]union():

(RDD[T],RDD[T])=>RDD[T]join():

(RDD[(K,V)],RDD[(K,W)])=>RDD[(K,(V,W))]mapValues(f:

V

=>

W):

RDD[(K,V)]=>RDD[(K,W)]partitionBy(p:

Partitioner[K]):

RDD[(K,V)]=>RDD[(K,V)]Action有如下幾種:count():

RDD[T]

=>

Longcollect():

RDD[T]

=>Seq[T]reduce(

f:

(T,T)

=>

T):

RDD[T]

=>

Tlookup(k:

K):

RDD[(K,

V)]

=>Seq[V]Transformation是懶操作,用于定義新的

RDD;而Action啟動(dòng)計(jì)算操作,并向用戶(hù)程序返回值或向外部存儲(chǔ)寫(xiě)數(shù)據(jù)。Spark核心概念–Transformation和版權(quán)所運(yùn)行過(guò)程構(gòu)建Spark

Application的運(yùn)行環(huán)境(啟動(dòng)SparkContext)SparkContext向資源管理器(Standalone、Mesos、Yarn)申請(qǐng)運(yùn)行Executor資源,并啟動(dòng)StandaloneExecutorBackend

Executor向SparkContext注冊(cè)SparkContext啟動(dòng)應(yīng)用程序DAG調(diào)度、Stage劃分,TaskSet生成Task

Scheduler調(diào)度Taskset,將task發(fā)放給Executor運(yùn)行。Task在Executor上運(yùn)行,運(yùn)行完畢釋放所有資源。Task

Schedule提交和監(jiān)控Task資源管理器分配并監(jiān)控資源使用狀況資源匯報(bào)資源使用狀況啟動(dòng)StandaloneExeutorBackendSparkContextTask1:注冊(cè)并申請(qǐng)資源2:分配資源3:注冊(cè)并申請(qǐng)Task版權(quán)所有?

2015

華為技術(shù)有限公司第16頁(yè)4:注銷(xiāo)RDD

Objects構(gòu)建DAG圖DAG圖DAG

Scheduler將DAG圖分解成StageTaskset運(yùn)行過(guò)程構(gòu)建SparkApplication的運(yùn)行環(huán)境(Cluster模式:Spark

Driver啟動(dòng)在集群中,

ResourceManager在集群中分配一個(gè)container來(lái)啟動(dòng)Spark

Driver驅(qū)動(dòng)整個(gè)應(yīng)用。Spark

OnYarn模式App運(yùn)行過(guò)程N(yùn)odeManagerContainnerExecutorCACHEspark-submitNodeResourceManager1:提交Application2:RM為Application分配資源啟動(dòng)Container3:SparkContext向RM申請(qǐng)運(yùn)行Executor資源

NodeManager4:SparkContext啟動(dòng)StandaloneExecutorBackend并等待Task(SparkContext分配Task給Executor)5:Executor報(bào)告Task狀態(tài)直至完成6:注銷(xiāo)Application,歸還資源ContainerSparkContextRDDGraphContainerExecutorCACHE版權(quán)所有?

2015

華為技術(shù)有限公司第17頁(yè)ClientApplicationjarTASKTASKScheduler...TASKTASKCluster模式:SparkDriver啟動(dòng)在集群中,Spark應(yīng)用調(diào)度BlockmanagerRDDObjectsDAGSchedulerTaskSchedulerWorkerCluster版權(quán)所有?

2015

華為技術(shù)有限公司第18頁(yè)rdd1.join(rdd2).groupBy(...).filter(...)buildoperatorDAGsplitgraph

intostagesoftasksstageasreadylaunchtasksviaclustermanagerstragglingtasksexecutetasksblocksDAGTaskSetTaskSpark應(yīng)用調(diào)度BlockmanagerRDDObje本章總結(jié)版權(quán)所有?

2015

華為技術(shù)有限公司第19頁(yè)

本章主要介紹了Spark的基本概念,技術(shù)架構(gòu),著重介紹了

Spark任務(wù)的進(jìn)程運(yùn)行,On

Yarn模式,以及Spark

的應(yīng)用調(diào)度。本章總結(jié)版權(quán)所有?2015華為技術(shù)有限公司第19頁(yè) 本目錄版權(quán)所有?

2015

華為技術(shù)有限公司第20頁(yè)1. Spark應(yīng)用場(chǎng)景2. Spark

基本功能和技術(shù)架構(gòu)Spark組件

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論