spark

rdd 特點(diǎn)
* - A list of partitions
* - A function for computing each split
* - A list of dependencies on other RDDs
* - Optionally, a Partitioner 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)

sparkContext 是通向spark集群的入口
可在不在集群中的機(jī)器上調(diào)用spark-submit或者spark shell

spark-submit腳本提供了提供應(yīng)用到集群最直接的方式。對于Standalone模式而言舶赔,Spark目前支持兩種部署模式半哟。在Client模式中批糟,Driver程序在提交命令的機(jī)器上。在Cluster模式中膘茎,Driver從集群中的worker節(jié)點(diǎn)中任取一個運(yùn)行驅(qū)動程序。
http://blog.csdn.net/liyaohhh/article/details/50753745

yarn-cluster和yarn-client模式的區(qū)別其實就是Application Master進(jìn)程的區(qū)別,yarn-cluster模式下壁却,driver運(yùn)行在AM(Application Master)中,它負(fù)責(zé)向YARN申請資源裸准,并監(jiān)督作業(yè)的運(yùn)行狀況展东。當(dāng)用戶提交了作業(yè)之后,就可以關(guān)掉Client狼速,作業(yè)會繼續(xù)在YARN上運(yùn)行琅锻。然而yarn-cluster模式不適合運(yùn)行交互類型的作業(yè)。而yarn-client模式下向胡,Application Master僅僅向YARN請求executor恼蓬,client會和請求的container通信來調(diào)度他們工作,也就是說Client不能離開僵芹〈τ玻看下下面的兩幅圖應(yīng)該會明白(上圖是yarn-cluster模式,下圖是yarn-client模式):

image.png
image.png

------------------
standalone master管理worker拇派,進(jìn)而負(fù)責(zé)資源調(diào)度
worker管理當(dāng)前計算節(jié)點(diǎn)荷辕,worker會啟動executor來完成真正的計算

standalone基本配置master上只需要配兩個文件,sparkenv 中寫3個東西 ma?s?te?r ip件豌,master port 這個用于rpc和worker疮方,jdk path
slaves寫worker ip

worker機(jī)器上只需要sparkenv不用slaves。
在master上startall茧彤,在其他worker機(jī)器上startall起不來master骡显。master節(jié)點(diǎn)通過ssh 命令在其他機(jī)器上啟動worker。之后worker與master的通信如注冊,heartbeat通過rpc tcp協(xié)議發(fā)送消息惫谤。

啟動worker壁顶,worker主動向master報告自己的cores和memory大小

standalone模式下,sparkshell不制定master則是本機(jī)啟動溜歪。指定master是集群若专。還可以指定memory與core。

sparksubmit或sparkshell啟動了一個用于提交任務(wù)的客戶端(driver)蝴猪,driver要與master建立連接(sparkcontext)调衰,如果不建立sparkconext,worker上的executor不會啟動拯腮,driver是個進(jìn)程窖式,里面有個sparkcontext object,這個object與master建立連接动壤,這個連接過程中告訴master executor的core與memory萝喘,master會進(jìn)行資源的分配(master已經(jīng)知道每個worker的資源),給符合條件的worker發(fā)消息琼懊,worker啟動executor阁簸,接下來executor要和driver進(jìn)行通信,那么executor怎么知道driver在哪兒呢哼丈?(driver告訴了master启妹,master告訴worker,worker啟動executor醉旦,executor就知道了)
sparkcontext創(chuàng)建好后饶米,可以構(gòu)建dag(trans-trans-action), transformation在driver,action觸發(fā)提交作業(yè)车胡,從后向前切成一個個stage檬输,提交一個個(從第一個)stage。stage是一個個task匈棘,放到一個taskset丧慈,同一個stage中task的業(yè)務(wù)邏輯相同(taskset中的task業(yè)務(wù)邏輯相同),但是數(shù)據(jù)不同主卫。比如數(shù)據(jù)有4個partition逃默,那么就有4個task,有兩個executor,均分到上面簇搅,每個2個task完域。如果不想均分,要改調(diào)度瘩将,對master進(jìn)行一些配置筒主。然后比如要讀取hdfs关噪,hdfs?4個分區(qū),然后一個task讀取一個分區(qū)乌妙,然后每個task不是一下全讀hdfs,而是拿到迭代器建钥,拿一條讀一條藤韵。計算結(jié)果放在executor內(nèi)存或disk(不夠的時候)。action比如是collect熊经,發(fā)給driver泽艘。action比如是寫hdfs,executor就直接并發(fā)寫了镐依。

spark 程序:app
用于提交應(yīng)用程序的: driver
資源管理:master
節(jié)點(diǎn)管理:worker
執(zhí)行真正的業(yè)務(wù)邏輯:executor

Screen Shot 2017-06-13 at 8.30.07 AM.png

細(xì)節(jié)
dag怎么切分
資源怎么調(diào)度
executor中業(yè)務(wù)邏輯怎么執(zhí)行

word count
val rdd = sc.textfile().flatMap(.split(" ")).map(, 1).reduceByKey(_ + _)

textFile 產(chǎn)生hadooprRDD ->mapPartitionsRDD
rdd.toDebugString
rdd.dependencies
flatMap 和map 都是產(chǎn)生mapPartitionsRDD
reduceByKey shuffledRDD
saveAsTextFile mapPartitionsRDD
一共產(chǎn)生6個RDD

image.png

經(jīng)過一系列transformation匹涮,action觸發(fā)提交dag到 dagscheduler,dagscheduler 劃分stage,按順序?qū)⒁粋€個taskset(通過taskscheduler)分發(fā)到worker槐壳。

spark 讀hdfs 權(quán)限可在程序里設(shè)置然低, system.setproperty("user.name", "name")

spark repartition 有shuffle write
reparition之后cache,相當(dāng)于cache的是repartition中最后的rdd

Paste_Image.png

val rdd1 = sc.parallelize(List(1,2,3,4,5,6), 2)
val rdd2 = rdd1.repartition(6).cache
val rdd3 = rdd2.map(_ + 1).cache
rdd3.collect
val rdd4 = rdd2.map(_ * 2).cache
rdd4.collect

這樣的話在job圖里會顯示

Paste_Image.png
Paste_Image.png

在stage中會顯示

Paste_Image.png
Paste_Image.png

所以cache不cache住要在job圖里看务唐。即使repartition后的被cache住了雳攘,還是會在stage中的第一個框框里顯示

Paste_Image.png

val RDD1 = sc.parallelize(List(1,2,3,4,5,6),2)
val RDD2 = RDD1.repartition(6)
val RDD3 = RDD2.map(_ + 1).cache
val RDD4 = RDD3.map(_ * 2)
RDD4.collect
val RDD5 = RDD3.map(_ * 3)
RDD5.collect

job UI

Paste_Image.png
Paste_Image.png

stage UI

Paste_Image.png
Paste_Image.png
Paste_Image.png

所以結(jié)論是什么呢?比如你cache了某個rdd

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枫笛,一起剝皮案震驚了整個濱河市吨灭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刑巧,老刑警劉巖喧兄,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異啊楚,居然都是意外死亡吠冤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門特幔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咨演,“玉大人,你說我怎么就攤上這事蚯斯”》纾” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵拍嵌,是天一觀的道長遭赂。 經(jīng)常有香客問我,道長横辆,這世上最難降的妖魔是什么撇他? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上困肩,老公的妹妹穿的比我還像新娘划纽。我一直安慰自己,他們只是感情好锌畸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布勇劣。 她就那樣靜靜地躺著,像睡著了一般潭枣。 火紅的嫁衣襯著肌膚如雪比默。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天盆犁,我揣著相機(jī)與錄音命咐,去河邊找鬼。 笑死谐岁,一個胖子當(dāng)著我的面吹牛醋奠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翰铡,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼钝域,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锭魔?” 一聲冷哼從身側(cè)響起例证,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎迷捧,沒想到半個月后织咧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡漠秋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年笙蒙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庆锦。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡捅位,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搂抒,到底是詐尸還是另有隱情艇搀,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布求晶,位于F島的核電站焰雕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏芳杏。R本人自食惡果不足惜矩屁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一辟宗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吝秕,春花似錦泊脐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至则剃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間如捅,已是汗流浹背棍现。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留镜遣,地道東北人己肮。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像悲关,于是被迫代替她去往敵國和親谎僻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

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