(轉(zhuǎn))Spark(一): 基本架構(gòu)及原理

?Apache Spark是一個圍繞速度、易用性和復(fù)雜分析構(gòu)建的大數(shù)據(jù)處理框架,最初在2009年由加州大學(xué)伯克利分校的AMPLab開發(fā),并于2010年成為Apache的開源項目之一珠移,與Hadoop和Storm等其他大數(shù)據(jù)和MapReduce技術(shù)相比,Spark有如下優(yōu)勢:

Spark提供了一個全面、統(tǒng)一的框架用于管理各種有著不同性質(zhì)(文本數(shù)據(jù)钧惧、圖表數(shù)據(jù)等)的數(shù)據(jù)集和數(shù)據(jù)源(批量數(shù)據(jù)或?qū)崟r的流數(shù)據(jù))的大數(shù)據(jù)處理的需求

官方資料介紹Spark可以將Hadoop集群中的應(yīng)用在內(nèi)存中的運行速度提升100倍暇韧,甚至能夠?qū)?yīng)用在磁盤上的運行速度提升10倍

?目標(biāo):

架構(gòu)及生態(tài)

spark 與?hadoop

運行流程及特點

常用術(shù)語

standalone模式

yarn集群

RDD運行流程

架構(gòu)及生態(tài):

通常當(dāng)需要處理的數(shù)據(jù)量超過了單機尺度(比如我們的計算機有4GB的內(nèi)存,而我們需要處理100GB以上的數(shù)據(jù))這時我們可以選擇spark集群進行計算浓瞪,有時我們可能需要處理的數(shù)據(jù)量并不大锨咙,但是計算很復(fù)雜,需要大量的時間追逮,這時我們也可以選擇利用spark集群強大的計算資源酪刀,并行化地計算,其架構(gòu)示意圖如下:

Spark Core:包含Spark的基本功能钮孵;尤其是定義RDD的API骂倘、操作以及這兩者上的動作。其他Spark的庫都是構(gòu)建在RDD和Spark Core之上的

Spark SQL:提供通過Apache Hive的SQL變體Hive查詢語言(HiveQL)與Spark進行交互的API巴席。每個數(shù)據(jù)庫表被當(dāng)做一個RDD历涝,Spark SQL查詢被轉(zhuǎn)換為Spark操作。

Spark Streaming:對實時數(shù)據(jù)流進行處理和控制漾唉。Spark Streaming允許程序能夠像普通RDD一樣處理實時數(shù)據(jù)

MLlib:一個常用機器學(xué)習(xí)算法庫荧库,算法被實現(xiàn)為對RDD的Spark操作。這個庫包含可擴展的學(xué)習(xí)算法赵刑,比如分類分衫、回歸等需要對大量數(shù)據(jù)集進行迭代的操作。

GraphX:控制圖般此、并行圖操作和計算的一組算法和工具的集合蚪战。GraphX擴展了RDD API,包含控制圖铐懊、創(chuàng)建子圖邀桑、訪問路徑上所有頂點的操作

Spark架構(gòu)的組成圖如下:

Cluster Manager:在standalone模式中即為Master主節(jié)點,控制整個集群科乎,監(jiān)控worker壁畸。在YARN模式中為資源管理器

Worker節(jié)點:從節(jié)點,負責(zé)控制計算節(jié)點茅茂,啟動Executor或者Driver捏萍。

Driver: 運行Application 的main()函數(shù)

Executor:執(zhí)行器,是為某個Application運行在worker node上的一個進程

Spark與hadoop:

Hadoop有兩個核心模塊玉吁,分布式存儲模塊HDFS和分布式計算模塊Mapreduce

spark本身并沒有提供分布式文件系統(tǒng)照弥,因此spark的分析大多依賴于Hadoop的分布式文件系統(tǒng)HDFS

Hadoop的Mapreduce與spark都可以進行數(shù)據(jù)計算,而相比于Mapreduce进副,spark的速度更快并且提供的功能更加豐富

關(guān)系圖如下:

運行流程及特點:

spark運行流程圖如下:

構(gòu)建Spark Application的運行環(huán)境,啟動SparkContext

SparkContext向資源管理器(可以是Standalone,Mesos影斑,Yarn)申請運行Executor資源给赞,并啟動StandaloneExecutorbackend,

Executor向SparkContext申請Task

SparkContext將應(yīng)用程序分發(fā)給Executor

SparkContext構(gòu)建成DAG圖矫户,將DAG圖分解成Stage片迅、將Taskset發(fā)送給Task Scheduler,最后由Task Scheduler將Task發(fā)送給Executor運行

Task在Executor上運行皆辽,運行完釋放所有資源

???? Spark運行特點:

每個Application獲取專屬的executor進程柑蛇,該進程在Application期間一直駐留,并以多線程方式運行Task驱闷。這種Application隔離機制是有優(yōu)勢的耻台,無論是從調(diào)度角度看(每個Driver調(diào)度他自己的任務(wù)),還是從運行角度看(來自不同Application的Task運行在不同JVM中)空另,當(dāng)然這樣意味著Spark Application不能跨應(yīng)用程序共享數(shù)據(jù)盆耽,除非將數(shù)據(jù)寫入外部存儲系統(tǒng)

Spark與資源管理器無關(guān),只要能夠獲取executor進程扼菠,并能保持相互通信就可以了

提交SparkContext的Client應(yīng)該靠近Worker節(jié)點(運行Executor的節(jié)點)摄杂,最好是在同一個Rack里,因為Spark Application運行過程中SparkContext和Executor之間有大量的信息交換

Task采用了數(shù)據(jù)本地性和推測執(zhí)行的優(yōu)化機制

常用術(shù)語:

Application:?Appliction都是指用戶編寫的Spark應(yīng)用程序循榆,其中包括一個Driver功能的代碼和分布在集群中多個節(jié)點上運行的Executor代碼

Driver:?Spark中的Driver即運行上述Application的main函數(shù)并創(chuàng)建SparkContext析恢,創(chuàng)建SparkContext的目的是為了準(zhǔn)備Spark應(yīng)用程序的運行環(huán)境,在Spark中有SparkContext負責(zé)與ClusterManager通信秧饮,進行資源申請氮昧、任務(wù)的分配和監(jiān)控等,當(dāng)Executor部分運行完畢后浦楣,Driver同時負責(zé)將SparkContext關(guān)閉袖肥,通常用SparkContext代表Driver

Executor:?某個Application運行在worker節(jié)點上的一個進程,? 該進程負責(zé)運行某些Task振劳, 并且負責(zé)將數(shù)據(jù)存到內(nèi)存或磁盤上椎组,每個Application都有各自獨立的一批Executor, 在Spark on Yarn模式下历恐,其進程名稱為CoarseGrainedExecutor Backend寸癌。一個CoarseGrainedExecutor Backend有且僅有一個Executor對象, 負責(zé)將Task包裝成taskRunner,并從線程池中抽取一個空閑線程運行Task弱贼, 這個每一個oarseGrainedExecutor Backend能并行運行Task的數(shù)量取決與分配給它的cpu個數(shù)

Cluter Manager:指的是在集群上獲取資源的外部服務(wù)蒸苇。目前有三種類型

Standalon : spark原生的資源管理,由Master負責(zé)資源的分配

Apache Mesos:與hadoop MR兼容性良好的一種資源調(diào)度框架

Hadoop Yarn: 主要是指Yarn中的ResourceManager

Worker:?集群中任何可以運行Application代碼的節(jié)點吮旅,在Standalone模式中指的是通過slave文件配置的Worker節(jié)點溪烤,在Spark on Yarn模式下就是NoteManager節(jié)點

Task:?被送到某個Executor上的工作單元味咳,但hadoopMR中的MapTask和ReduceTask概念一樣,是運行Application的基本單位檬嘀,多個Task組成一個Stage槽驶,而Task的調(diào)度和管理等是由TaskScheduler負責(zé)

Job:?包含多個Task組成的并行計算,往往由Spark Action觸發(fā)生成鸳兽, 一個Application中往往會產(chǎn)生多個Job

Stage:?每個Job會被拆分成多組Task掂铐, 作為一個TaskSet, 其名稱為Stage揍异,Stage的劃分和調(diào)度是有DAGScheduler來負責(zé)的全陨,Stage有非最終的Stage(Shuffle Map Stage)和最終的Stage(Result Stage)兩種,Stage的邊界就是發(fā)生shuffle的地方

DAGScheduler:?根據(jù)Job構(gòu)建基于Stage的DAG(Directed Acyclic Graph有向無環(huán)圖)衷掷,并提交Stage給TASkScheduler辱姨。 其劃分Stage的依據(jù)是RDD之間的依賴的關(guān)系找出開銷最小的調(diào)度方法,如下圖

TASKSedulter:?將TaskSET提交給worker運行棍鳖,每個Executor運行什么Task就是在此處分配的. TaskScheduler維護所有TaskSet炮叶,當(dāng)Executor向Driver發(fā)生心跳時,TaskScheduler會根據(jù)資源剩余情況分配相應(yīng)的Task渡处。另外TaskScheduler還維護著所有Task的運行標(biāo)簽镜悉,重試失敗的Task。下圖展示了TaskScheduler的作用

在不同運行模式中任務(wù)調(diào)度器具體為:

Spark on Standalone模式為TaskScheduler

YARN-Client模式為YarnClientClusterScheduler

YARN-Cluster模式為YarnClusterScheduler

將這些術(shù)語串起來的運行層次圖如下:

Job=多個stage医瘫,Stage=多個同種task, Task分為ShuffleMapTask和ResultTask侣肄,Dependency分為ShuffleDependency和NarrowDependency

Spark運行模式:

Spark的運行模式多種多樣,靈活多變醇份,部署在單機上時稼锅,既可以用本地模式運行,也可以用偽分布模式運行僚纷,而當(dāng)以分布式集群的方式部署時矩距,也有眾多的運行模式可供選擇,這取決于集群的實際情況怖竭,底層的資源調(diào)度即可以依賴外部資源調(diào)度框架锥债,也可以使用Spark內(nèi)建的Standalone模式。

對于外部資源調(diào)度框架的支持痊臭,目前的實現(xiàn)包括相對穩(wěn)定的Mesos模式哮肚,以及hadoop YARN模式

本地模式:常用于本地開發(fā)測試,本地還分別 local 和 local cluster

standalone:?獨立集群運行模式

Standalone模式使用Spark自帶的資源調(diào)度框架

采用Master/Slaves的典型架構(gòu)广匙,選用ZooKeeper來實現(xiàn)Master的HA

框架結(jié)構(gòu)圖如下:

該模式主要的節(jié)點有Client節(jié)點允趟、Master節(jié)點和Worker節(jié)點。其中Driver既可以運行在Master節(jié)點上中鸦致,也可以運行在本地Client端潮剪。當(dāng)用spark-shell交互式工具提交Spark的Job時涣楷,Driver在Master節(jié)點上運行;當(dāng)使用spark-submit工具提交Job或者在Eclips鲁纠、IDEA等開發(fā)平臺上使用”new SparkConf.setManager(“spark://master:7077”)”方式運行Spark任務(wù)時总棵,Driver是運行在本地Client端上的

運行過程如下圖:(參考至:http://blog.csdn.net/gamer_gyt/article/details/51833681

SparkContext連接到Master鳍寂,向Master注冊并申請資源(CPU Core 和Memory)

Master根據(jù)SparkContext的資源申請要求和Worker心跳周期內(nèi)報告的信息決定在哪個Worker上分配資源改含,然后在該Worker上獲取資源,然后啟動StandaloneExecutorBackend迄汛;

StandaloneExecutorBackend向SparkContext注冊捍壤;

SparkContext將Applicaiton代碼發(fā)送給StandaloneExecutorBackend;并且SparkContext解析Applicaiton代碼鞍爱,構(gòu)建DAG圖鹃觉,并提交給DAG Scheduler分解成Stage(當(dāng)碰到Action操作時,就會催生Job睹逃;每個Job中含有1個或多個Stage盗扇,Stage一般在獲取外部數(shù)據(jù)和shuffle之前產(chǎn)生),然后以Stage(或者稱為TaskSet)提交給Task Scheduler沉填,Task Scheduler負責(zé)將Task分配到相應(yīng)的Worker疗隶,最后提交給StandaloneExecutorBackend執(zhí)行;

StandaloneExecutorBackend會建立Executor線程池翼闹,開始執(zhí)行Task斑鼻,并向SparkContext報告,直至Task完成

所有Task完成后猎荠,SparkContext向Master注銷坚弱,釋放資源

yarn:?(參考:http://blog.csdn.net/gamer_gyt/article/details/51833681)

Spark on YARN模式根據(jù)Driver在集群中的位置分為兩種模式:一種是YARN-Client模式,另一種是YARN-Cluster(或稱為YARN-Standalone模式)

Yarn-Client模式中关摇,Driver在客戶端本地運行荒叶,這種模式可以使得Spark Application和客戶端進行交互,因為Driver在客戶端输虱,所以可以通過webUI訪問Driver的狀態(tài)些楣,默認是http://hadoop1:4040訪問,而YARN通過http:// hadoop1:8088訪問

YARN-client的工作流程步驟為:

Spark Yarn Client向YARN的ResourceManager申請啟動Application Master悼瓮。同時在SparkContent初始化中將創(chuàng)建DAGScheduler和TASKScheduler等戈毒,由于我們選擇的是Yarn-Client模式,程序會選擇YarnClientClusterScheduler和YarnClientSchedulerBackend

ResourceManager收到請求后横堡,在集群中選擇一個NodeManager埋市,為該應(yīng)用程序分配第一個Container,要求它在這個Container中啟動應(yīng)用程序的ApplicationMaster命贴,與YARN-Cluster區(qū)別的是在該ApplicationMaster不運行SparkContext道宅,只與SparkContext進行聯(lián)系進行資源的分派

Client中的SparkContext初始化完畢后食听,與ApplicationMaster建立通訊,向ResourceManager注冊污茵,根據(jù)任務(wù)信息向ResourceManager申請資源(Container)

一旦ApplicationMaster申請到資源(也就是Container)后樱报,便與對應(yīng)的NodeManager通信,要求它在獲得的Container中啟動CoarseGrainedExecutorBackend泞当,CoarseGrainedExecutorBackend啟動后會向Client中的SparkContext注冊并申請Task

client中的SparkContext分配Task給CoarseGrainedExecutorBackend執(zhí)行迹蛤,CoarseGrainedExecutorBackend運行Task并向Driver匯報運行的狀態(tài)和進度,以讓Client隨時掌握各個任務(wù)的運行狀態(tài)襟士,從而可以在任務(wù)失敗時重新啟動任務(wù)

應(yīng)用程序運行完成后盗飒,Client的SparkContext向ResourceManager申請注銷并關(guān)閉自己

Spark Cluster模式:

在YARN-Cluster模式中,當(dāng)用戶向YARN中提交一個應(yīng)用程序后陋桂,YARN將分兩個階段運行該應(yīng)用程序:

第一個階段是把Spark的Driver作為一個ApplicationMaster在YARN集群中先啟動逆趣;

第二個階段是由ApplicationMaster創(chuàng)建應(yīng)用程序,然后為它向ResourceManager申請資源嗜历,并啟動Executor來運行Task宣渗,同時監(jiān)控它的整個運行過程,直到運行完成

YARN-cluster的工作流程分為以下幾個步驟

Spark Yarn Client向YARN中提交應(yīng)用程序梨州,包括ApplicationMaster程序痕囱、啟動ApplicationMaster的命令、需要在Executor中運行的程序等

ResourceManager收到請求后摊唇,在集群中選擇一個NodeManager咐蝇,為該應(yīng)用程序分配第一個Container,要求它在這個Container中啟動應(yīng)用程序的ApplicationMaster巷查,其中ApplicationMaster進行SparkContext等的初始化

ApplicationMaster向ResourceManager注冊有序,這樣用戶可以直接通過ResourceManage查看應(yīng)用程序的運行狀態(tài),然后它將采用輪詢的方式通過RPC協(xié)議為各個任務(wù)申請資源岛请,并監(jiān)控它們的運行狀態(tài)直到運行結(jié)束

一旦ApplicationMaster申請到資源(也就是Container)后旭寿,便與對應(yīng)的NodeManager通信,要求它在獲得的Container中啟動CoarseGrainedExecutorBackend崇败,CoarseGrainedExecutorBackend啟動后會向ApplicationMaster中的SparkContext注冊并申請Task盅称。這一點和Standalone模式一樣,只不過SparkContext在Spark Application中初始化時后室,使用CoarseGrainedSchedulerBackend配合YarnClusterScheduler進行任務(wù)的調(diào)度缩膝,其中YarnClusterScheduler只是對TaskSchedulerImpl的一個簡單包裝,增加了對Executor的等待邏輯等

ApplicationMaster中的SparkContext分配Task給CoarseGrainedExecutorBackend執(zhí)行岸霹,CoarseGrainedExecutorBackend運行Task并向ApplicationMaster匯報運行的狀態(tài)和進度疾层,以讓ApplicationMaster隨時掌握各個任務(wù)的運行狀態(tài),從而可以在任務(wù)失敗時重新啟動任務(wù)

應(yīng)用程序運行完成后贡避,ApplicationMaster向ResourceManager申請注銷并關(guān)閉自己

Spark Client 和 Spark Cluster的區(qū)別:

理解YARN-Client和YARN-Cluster深層次的區(qū)別之前先清楚一個概念:Application Master痛黎。在YARN中予弧,每個Application實例都有一個ApplicationMaster進程,它是Application啟動的第一個容器湖饱。它負責(zé)和ResourceManager打交道并請求資源掖蛤,獲取資源之后告訴NodeManager為其啟動Container。從深層次的含義講YARN-Cluster和YARN-Client模式的區(qū)別其實就是ApplicationMaster進程的區(qū)別

YARN-Cluster模式下井厌,Driver運行在AM(Application Master)中蚓庭,它負責(zé)向YARN申請資源,并監(jiān)督作業(yè)的運行狀況旗笔。當(dāng)用戶提交了作業(yè)之后彪置,就可以關(guān)掉Client拄踪,作業(yè)會繼續(xù)在YARN上運行蝇恶,因而YARN-Cluster模式不適合運行交互類型的作業(yè)

YARN-Client模式下,Application Master僅僅向YARN請求Executor惶桐,Client會和請求的Container通信來調(diào)度他們工作撮弧,也就是說Client不能離開

思考:?我們在使用Spark提交job時使用的哪種模式?


RDD運行流程:

RDD在Spark中運行大概分為以下三步:

創(chuàng)建RDD對象

DAGScheduler模塊介入運算姚糊,計算RDD之間的依賴關(guān)系贿衍,RDD之間的依賴關(guān)系就形成了DAG

每一個Job被分為多個Stage。劃分Stage的一個主要依據(jù)是當(dāng)前計算因子的輸入是否是確定的救恨,如果是則將其分在同一個Stage贸辈,避免多個Stage之間的消息傳遞開銷

示例圖如下:

以下面一個按 A-Z 首字母分類,查找相同首字母下不同姓名總個數(shù)的例子來看一下 RDD 是如何運行起來的

創(chuàng)建 RDD? 上面的例子除去最后一個 collect 是個動作肠槽,不會創(chuàng)建 RDD 之外擎淤,前面四個轉(zhuǎn)換都會創(chuàng)建出新的 RDD 。因此第一步就是創(chuàng)建好所有 RDD( 內(nèi)部的五項信息 )秸仙?

創(chuàng)建執(zhí)行計劃 Spark 會盡可能地管道化嘴拢,并基于是否要重新組織數(shù)據(jù)來劃分 階段 (stage) ,例如本例中的 groupBy() 轉(zhuǎn)換就會將整個執(zhí)行計劃劃分成兩階段執(zhí)行寂纪。最終會產(chǎn)生一個 DAG(directed acyclic graph 席吴,有向無環(huán)圖 ) 作為邏輯執(zhí)行計劃

調(diào)度任務(wù)? 將各階段劃分成不同的 任務(wù) (task) ,每個任務(wù)都是數(shù)據(jù)和計算的合體捞蛋。在進行下一階段前孝冒,當(dāng)前階段的所有任務(wù)都要執(zhí)行完成。因為下一階段的第一個轉(zhuǎn)換一定是重新組織數(shù)據(jù)的拟杉,所以必須等當(dāng)前階段所有結(jié)果數(shù)據(jù)都計算出來了才能繼續(xù)

轉(zhuǎn)自:http://www.cnblogs.com/tgzhu/p/5818374.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庄涡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子捣域,更是在濱河造成了極大的恐慌啼染,老刑警劉巖宴合,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異迹鹅,居然都是意外死亡卦洽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門斜棚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阀蒂,“玉大人,你說我怎么就攤上這事弟蚀≡橄迹” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵义钉,是天一觀的道長昧绣。 經(jīng)常有香客問我,道長捶闸,這世上最難降的妖魔是什么夜畴? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮删壮,結(jié)果婚禮上贪绘,老公的妹妹穿的比我還像新娘。我一直安慰自己央碟,他們只是感情好税灌,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亿虽,像睡著了一般菱涤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上经柴,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天狸窘,我揣著相機與錄音,去河邊找鬼坯认。 笑死翻擒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的牛哺。 我是一名探鬼主播陋气,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼引润!你這毒婦竟也來了巩趁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎议慰,沒想到半個月后蠢古,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡别凹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年草讶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炉菲。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡堕战,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拍霜,到底是詐尸還是另有隱情嘱丢,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布祠饺,位于F島的核電站越驻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吠裆。R本人自食惡果不足惜伐谈,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一阻星、第九天 我趴在偏房一處隱蔽的房頂上張望挠日。 院中可真熱鬧唱捣,春花似錦、人聲如沸祝旷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怀跛。三九已至,卻和暖如春柄冲,著一層夾襖步出監(jiān)牢的瞬間吻谋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工现横, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留漓拾,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓戒祠,卻偏偏與公主長得像骇两,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子姜盈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Apache Spark是一個圍繞速度低千、易用性和復(fù)雜分析構(gòu)建的大數(shù)據(jù)處理框架,最初在2009年由加州大學(xué)伯克利分校...
    三萬_chenbing閱讀 634評論 0 5
  • 1.1馏颂、 分配更多資源 1.1.1示血、分配哪些資源棋傍? Executor的數(shù)量 每個Executor所能分配的CPU數(shù)...
    miss幸運閱讀 3,176評論 3 15
  • 1、 性能調(diào)優(yōu) 1.1难审、 分配更多資源 1.1.1舍沙、分配哪些資源? Executor的數(shù)量 每個Executor所...
    Frank_8942閱讀 4,531評論 2 36
  • Apache Spark 是專為大規(guī)模數(shù)據(jù)處理而設(shè)計的快速通用的計算引擎剔宪。Spark是UC Berkeley AM...
    大佛愛讀書閱讀 2,818評論 0 20
  • spark-submit的時候如何引入外部jar包 在通過spark-submit提交任務(wù)時拂铡,可以通過添加配置參數(shù)...
    博弈史密斯閱讀 2,736評論 1 14