47.spark

spark
spark是一種計算框架荔茬,比MapReduce快一些
開源計算框架筒主。運行和編寫都很快
可以在很多環(huán)境運行
hadoop尽狠,apache mesos kubernetes钞翔,standalone or in the cloud
基于內(nèi)存,快
可以用java,scala梢什,Python(功能不完善奠蹬,缺少包)和r和sql



Spark與MapReduce的區(qū)別
?都是分布式計算框架,Spark基于內(nèi)存嗡午,MR基于HDFS囤躁。Spark處理數(shù)據(jù)的能力一般是MR的十倍以上,Spark中除了基于內(nèi)存計算外翼馆,還有DAG有向無環(huán)圖來切分任務的執(zhí)行先后順序割以。

########注意:安裝時路徑不要帶空格或者中文

2.spark核心概念RDD

1.RDD
?概念
RDD(Resilient Distributed Dateset)金度,彈性分布式數(shù)據(jù)集应媚。

RDD的五大特性:
1.RDD是由一系列的partition組成的。
2.函數(shù)(算子)是作用在每一個partition(split)上的猜极。
3.RDD之間有一系列的依賴關(guān)系中姜。
4.分區(qū)器是作用在K,V格式的RDD上。
5.RDD提供一系列最佳的計算位置跟伏。利于數(shù)據(jù)處理的本地化丢胚。“計算向數(shù)據(jù)移動”

問題引入
1spark讀取hdfs中數(shù)據(jù)的方法 textfile底層是調(diào)用的MR讀取HDFS的方法受扳,首先會split携龟,每個split對應一個block。每個split對應生成RDD的每個partition
2.什么是K,V格式的RDD?
RDD中的數(shù)據(jù)是一個個的tuple2數(shù)據(jù)勘高,那么這個RDD就是KV格式的RDD
3.哪里體現(xiàn)了RDD的彈性(容錯)
1)RDD之間有依賴關(guān)系
2)RDD的partion可多可少
4.哪里體現(xiàn)RDD的分布式
RDD的paartion是分布在多個節(jié)點上的
5.Spark運行模式

  • Local
    多用于本地測試峡蟋,如在eclipse,idea中寫程序測試等华望。
  • Standalone
    Standalone是Spark自帶的一個資源調(diào)度框架蕊蝗,它支持完全分布式。
  • Yarn
    Hadoop生態(tài)圈里面的一個資源調(diào)度框架赖舟,Spark也是可以基于Yarn來計算的蓬戚。
  • Mesos
    資源調(diào)度框架。
    要基于Yarn來進行資源調(diào)度宾抓,必須實現(xiàn)AppalicationMaster接口子漩,Spark實現(xiàn)了這個接口,所以可以基于Yarn石洗。

以上圖中有四個機器節(jié)點幢泼,Driver和Worker是啟動在節(jié)點上的進程,運行在JVM中的進程劲腿。

  • Driver與集群節(jié)點之間有頻繁的通信旭绒。
  • Driver負責任務(tasks)的分發(fā)和結(jié)果的回收。任務的調(diào)度。如果task的計算結(jié)果非常大就不要回收了挥吵。會造成oom重父。
  • Worker是Standalone資源調(diào)度框架里面資源管理的從節(jié)點。也是JVM進程忽匈。
  • Master是Standalone資源調(diào)度框架里面資源管理的主節(jié)點房午。也是JVM進程。

3.Spark代碼流程

1.創(chuàng)建SparkConf對象
?可以設(shè)置Application name丹允。
?可以設(shè)置運行模式及資源需求郭厌。
2.創(chuàng)建SparkContext對象
3.基于Spark的上下文創(chuàng)建一個RDD,對RDD進行處理雕蔽。
4.應用程序中要有Action類算子來觸發(fā)Transformation類算子執(zhí)行折柠。
5.關(guān)閉Spark上下文對象SparkContext。
4.Transformations轉(zhuǎn)換算子
概念:
Transformations類算子是一類算子(函數(shù))叫做轉(zhuǎn)換算子批狐,如map,flatMap,reduceByKey等扇售。Transformations算子是延遲執(zhí)行,也叫懶加載執(zhí)行嚣艇。
Action觸發(fā)執(zhí)行
Action也是一類算子(函數(shù))

?Transformation類算子:

?filter
過濾符合條件的記錄數(shù)承冰,true保留,false過濾掉食零。
?map
將一個RDD中的每個數(shù)據(jù)項困乒,通過map中的函數(shù)映射變?yōu)橐粋€新的元素。
特點:輸入一條贰谣,輸出一條數(shù)據(jù)娜搂。
?flatMap
先map后flat。與map類似冈爹,每個輸入項可以映射為0到多個輸出項涌攻。
?sample
隨機抽樣算子,根據(jù)傳進去的小數(shù)按比例進行又放回或者無放回的抽樣频伤。
?reduceByKey
將相同的Key根據(jù)相應的邏輯進行處理恳谎。
?sortByKey/sortBy
作用在K,V格式的RDD上,對key進行升序或者降序排序憋肖。

5.Action行動算子
?概念:
Action類算子也是一類算子(函數(shù))叫做行動算子因痛,如foreach,collect,count等岸更。Transformations類算子是延遲執(zhí)行鸵膏,Action類算子是觸發(fā)執(zhí)行。一個application應用程序中有幾個Action類算子執(zhí)行怎炊,就有幾個job運行谭企。
?Action類算子

count
返回數(shù)據(jù)集中的元素數(shù)廓译。會在結(jié)果計算完成后回收到Driver端。
?take(n)
返回一個包含數(shù)據(jù)集前n個元素的集合债查。

?first
first=take(1),返回數(shù)據(jù)集中的第一個元素非区。
?foreach
循環(huán)遍歷數(shù)據(jù)集中的每個元素,運行相應的邏輯盹廷。
?collect
將計算結(jié)果回收到Driver端征绸。

java算子
和Scala類似

總結(jié):
sparkcore
spark:基于內(nèi)存的計算框架
與MR區(qū)別
基于內(nèi)存迭代計算,MR是基于磁盤迭代計算
spark中有DAG有向無環(huán)圖
MR中只有map和reduce俄占,相當于spark中兩個算子(map和reducebykey)spark中有各種算子應對不同場景
spark技術(shù)棧:HDFS MR Yarn ,hive
sparkcore sparksql sparkstreaming
spark運行模式:local 多用于本地測試管怠,一般在eclipse,idea中運行使用local模式
standalone:spark自帶的資源調(diào)度框架缸榄,支持分布式框架
yarn:hadoop生態(tài)圈中資源調(diào)度框架渤弛,spark可以基于yarn運行
mesos:資源調(diào)度框架
spark核心rdd:RDD彈性分布式數(shù)據(jù)集
rdd內(nèi)其實是不存數(shù)據(jù)的,partion也是不存數(shù)據(jù)的

rdd五大特性
1rdd是由partion組成
2算子(函數(shù))作用在partion上的
3rdd之間有依賴關(guān)系
4分區(qū)器是作用在KV格式的RDD上
5partion對外提供最佳計算位置碰凶,利于數(shù)據(jù)處理的本地化
注意textfile底層讀取hdfs文件的方法底層調(diào)用的是mr讀取hdfs文件的方法暮芭,首先split,每個split對應一個block欲低,每個split對應一個partion
什么是KV格式的rdd
RDD中數(shù)據(jù)是一個個的二元組
哪里體現(xiàn)了rdd的彈性(容錯)
rdd的分區(qū)可多可少
rdd之間有依賴關(guān)系
rdd的partion是分布在多個節(jié)點上的

spark代碼流程:
val conf=new SparkConf().setAppName...setMaster
val sc=new SparkContext(conf)
由sc得到rdd
對rdd使用transformation類算子進行轉(zhuǎn)換
對rdd使用adction算子觸發(fā)transformations類算子執(zhí)行
sc.stop()

算子
轉(zhuǎn)換算子transformation 懶執(zhí)行,需要action觸發(fā)執(zhí)行
行動算子action 觸發(fā)transformation類算子執(zhí)行畜晰,一個application中有一個action算子就有一個job
count結(jié)果會拿到driver端
collect將結(jié)果拿回driver端
持久化算子
RDD的持久化
cache默認將數(shù)據(jù)存儲在內(nèi)存中
persist可以手動指定持久化級別
cache()=persist()=persist(StorageLevel.MEORY_ONLY)
盡量少使用DISK_ONLY級別
checkpoint:將數(shù)據(jù)直接持久化到指定的目錄砾莱,當lineage計算非常復雜,可以嘗試使用checkpoint凄鼻,checkpoint還可以切斷rdd的依賴關(guān)系
特殊場景使用checkpoint:對rdd使用checkpoint要謹慎使用
checkpoint要指定目錄腊瑟,可以將數(shù)據(jù)持久化到指定的目錄中,當application執(zhí)行完成后块蚌,這個目錄中的數(shù)據(jù)不會被清除
checkpoint的執(zhí)行流程:1.當spark執(zhí)行完成之后闰非,spark會從后往前回溯,找到checkpointRDD做標記
2.回溯完成之后峭范,spark會重新啟動一個job财松,計算標記的RDD的數(shù)據(jù),放入指定的checkpoint目錄中
3.數(shù)據(jù)計算完成纱控,放入目錄之后辆毡,會切斷RDD的依賴關(guān)系。當spaarkapplication執(zhí)行完成之后甜害,數(shù)據(jù)目錄中的數(shù)據(jù)不會被清除
優(yōu)化:對那個rdd進行checkpoint舶掖,最好先cache下,這樣回溯完成后再計算這個checkpointRDD數(shù)據(jù)的時候可以直接在內(nèi)存中拿到放指定的目錄

cache和persist的注意事項:
1.cache和persistc尔店,heckpoint都是懶執(zhí)行眨攘,必須有一個action類算子觸發(fā)執(zhí)行主慰。最小持久化單位是partion
2.cache和persist算子的返回值可以賦值給一個變量,在其他job中直接使用這個變量就是使用持久化的數(shù)據(jù)了鲫售。持久化的單位是partition河哑。
3.cache和persist算子后不能立即緊跟action算子。
4.cache和persist算子持久化的數(shù)據(jù)當applilcation執(zhí)行完成之后會被清除龟虎。
錯誤:rdd.cache().count() 返回的不是持久化的RDD璃谨,而是一個數(shù)值了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鲤妥,一起剝皮案震驚了整個濱河市佳吞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌棉安,老刑警劉巖底扳,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贡耽,居然都是意外死亡衷模,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門蒲赂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阱冶,“玉大人,你說我怎么就攤上這事滥嘴∧镜牛” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵若皱,是天一觀的道長镊叁。 經(jīng)常有香客問我,道長走触,這世上最難降的妖魔是什么晦譬? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮互广,結(jié)果婚禮上敛腌,老公的妹妹穿的比我還像新娘。我一直安慰自己兜辞,他們只是感情好迎瞧,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逸吵,像睡著了一般凶硅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扫皱,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天足绅,我揣著相機與錄音捷绑,去河邊找鬼。 笑死氢妈,一個胖子當著我的面吹牛粹污,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播首量,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼壮吩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了加缘?” 一聲冷哼從身側(cè)響起鸭叙,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拣宏,沒想到半個月后沈贝,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡勋乾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年宋下,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辑莫。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡学歧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出摆昧,到底是詐尸還是另有隱情撩满,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布绅你,位于F島的核電站,受9級特大地震影響昭躺,放射性物質(zhì)發(fā)生泄漏忌锯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一领炫、第九天 我趴在偏房一處隱蔽的房頂上張望偶垮。 院中可真熱鬧,春花似錦帝洪、人聲如沸似舵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砚哗。三九已至,卻和暖如春砰奕,著一層夾襖步出監(jiān)牢的瞬間蛛芥,已是汗流浹背提鸟。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留仅淑,地道東北人称勋。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像涯竟,于是被迫代替她去往敵國和親赡鲜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

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