==[tips]Spark核心概念


【一點(diǎn)資訊】MongoDB + Spark: 完整的大數(shù)據(jù)解決方案 www.yidianzixun.com
http://www.yidianzixun.com/home?page=article&id=0EMRJyyd&up=629

Spark的工作流程可以概括為三部曲:創(chuàng)建并發(fā)任務(wù)殖氏,對數(shù)據(jù)進(jìn)行transformation操作柱衔,如map卖毁, filter镀钓,union,intersect等诱鞠,然后執(zhí)行運(yùn)算付燥,如reduce,count尔破,或者簡單地收集結(jié)果。


從RDDs到Spark – Blueve 湛藍(lán)
http://blueve.me/archives/1437
在Spark官方的宣傳中我們也可以看到浇衬,Hadoop能做到的事情懒构,Spark也可以做,而且通尘毒粒可以做得更好痴脾。事實(shí)上颤介,越來越多的業(yè)內(nèi)公司都開始試水Spark梳星,因?yàn)槠洹竞诵馁u點(diǎn)內(nèi)存計(jì)算加速以及簡潔優(yōu)雅的編程接口不光可以為某些分布式批處理應(yīng)用提速,還可以降低分布式計(jì)算應(yīng)用的編寫門檻滚朵≡┰郑】

在Hadoop MapReduce計(jì)算框架中,面對一個(gè)需要多個(gè)MapReduce組合的大型任務(wù)辕近,在每個(gè)MR任務(wù)之間韵吨,數(shù)據(jù)的交互都是通過HDFS來進(jìn)行的,打個(gè)比方移宅,現(xiàn)在有一個(gè)玩具归粉,在中國制造,但這個(gè)玩具的牌子是美國的漏峰,并且該品牌在中國并沒有開放銷售糠悼,因此想要買這個(gè)玩具的話你就必須從國外買,于是這個(gè)玩具就經(jīng)歷了 中國制造 -> 中國倉庫 -> 美國倉庫 -> 中國倉庫 -> 中國買家 這一過程浅乔,相信有過類似購物經(jīng)歷的人已經(jīng)非尘笪梗苦惱,既然是在中國制造的靖苇,那為什么不在中國的工廠制造完畢之后直接發(fā)給我呢席噩?是的,其實(shí)這就是MapReduce計(jì)算模型的缺陷贤壁,Map -> Reduce -> HDFS -> Map -> Reudce…悼枢,人們很快就意識(shí)到了這個(gè)問題,于是DAG運(yùn)算得以發(fā)展面世脾拆。我很喜歡Apache Tez主頁上的這張圖:
[圖片上傳中馒索。给梅。。(1)]

顯而易見双揪,將前一項(xiàng)作業(yè)的中間結(jié)果直接復(fù)用动羽,將會(huì)帶來巨大的性能提升∮嫫冢回到我們之前的例子中运吓,僅僅這個(gè)改變就相當(dāng)于變成了中國制造 -> 中國倉庫 -> 中國買家,不僅轉(zhuǎn)運(yùn)費(fèi)少了疯趟,物流的時(shí)間還大大縮短拘哨。實(shí)際上,Spark做得還要更為出色一些信峻。

【一點(diǎn)資訊】Spark在GrowingIO數(shù)據(jù)無埋點(diǎn)全量采集場景下的實(shí)踐 www.yidianzixun.com
http://www.yidianzixun.com/home?page=article&id=0EXq2NT4&up=234
因?yàn)镾park最近非常的火倦青,所以它的社區(qū)資源非常的多,基本上所有主流的框架盹舞,像我們常見的Phoenix产镐,Cassandra, MongoDB都有Spark DataSource相關(guān)的實(shí)現(xiàn)。還有一個(gè)就是它提供了一個(gè)統(tǒng)一的數(shù)據(jù)類型踢步,把所有的外部表都統(tǒng)一轉(zhuǎn)化成Spark的數(shù)據(jù)類型癣亚,這樣的話不同的外部表能夠相互的關(guān)聯(lián)和操作。


打開 Spark 的正確姿勢
http://mp.weixin.qq.com/s?timestamp=1477657509&src=3&ver=1&signature=BD1c9-SC3qjEWf0bIjcfETXtBXULaa-iiepZbaZzejUHg6D86q8cBwaWizGFo8gO0ka5vAig6IVvyYmyVrrUHxXW8aMFd4Mxxa4MtoymJr0081wQemkeKU5gdidnyERfao-fzUESge2uS3gX9FZZ5H694fylBt0jtuv8-xY28=
太好用了获印!相見恨晚述雾!
Spark 火起來就是因?yàn)殚_發(fā)者發(fā)現(xiàn)這個(gè)框架太贊了。

雜七雜八的數(shù)據(jù)源都可以抽象成一個(gè)叫 RDD 的東西兼丰,然后就能用統(tǒng)一的高階操作了玻孟,操作符的執(zhí)行都會(huì)盡可能利用內(nèi)存來加速。

如果抽象的時(shí)候能進(jìn)一步指定 schema鳍征,就實(shí)現(xiàn)了 DataFrame接口黍翎,好處是它的操作符都會(huì)被 Spark 進(jìn)一步優(yōu)化 Physical Plan.

實(shí)時(shí)應(yīng)用不需要再接入別的框架,直接用 Spark Streaming 就好了蟆技,編程模型和非實(shí)時(shí)是一樣的玩敏,代碼幾乎不用改。

如果需要做復(fù)雜一些的數(shù)據(jù)分析和挖掘质礼,MLlib 提供了常見的機(jī)器學(xué)習(xí)算法旺聚,不用再把數(shù)據(jù)來回倒騰了,ETL 以后的數(shù)據(jù)直接繼續(xù)訓(xùn)練眶蕉。
更不用提多語言支持和其他一些貼心細(xì)節(jié)了砰粹。說了那么多好,可是本文的主題不是吐槽么?


三個(gè)理由告訴你為什么需要在云端運(yùn)行Spark_百度文庫
http://wenku.baidu.com/link?url=Vzm06xWgOTTZNxJvORtEYtrF4Dsyx6iS7OrYsiP0SeW4iZFto8-ZKo-Wqhxw7wn2H5ddVSZ5oYMt9Q2t7qZz6tLxKO1muItJZvLY3FLu4GW

作為一種替代Hadoop的MapReduce碱璃,并用來處理大數(shù)據(jù)的技術(shù)弄痹,Spark具有極大的吸引力。它結(jié)合了速度嵌器、易于使用的編程模型和統(tǒng)一設(shè)計(jì)肛真,讓用戶能夠?qū)⒔换ナ讲樵儭⒘魇椒治鏊健C(jī)器學(xué)習(xí)和圖形計(jì)算合并到單一系統(tǒng)里面蚓让。


Storm與Spark streaming的比較 | winwill2012博客
http://qifuguang.me/2015/12/16/Storm%E4%B8%8ESpark-streaming%E7%9A%84%E6%AF%94%E8%BE%83/?utm_source=tuicool&utm_medium=referral
Spark是一個(gè)類似于MapReduce的分布式計(jì)算框架,其核心是彈性分布式數(shù)據(jù)集(RDD)讥珍,提供了比MapReduce更豐富的模型历极,可以在快速在內(nèi)存中對數(shù)據(jù)集進(jìn)行多次迭代,以支持復(fù)雜的數(shù)據(jù)挖掘算法和圖形計(jì)算算法衷佃。


解讀2015之Spark篇:新生態(tài)系統(tǒng)的形成
http://www.infoq.com/cn/articles/2015-Review-Spark

轉(zhuǎn)向以DataFrame為核心
在傳統(tǒng)意義上Spark的核心是RDD和RDD之上的各種transformation和action趟卸,也就是各種算子,RDD可以認(rèn)為是分布式的Java對象的集合氏义。2013年推出了DataFrame锄列,可以看做分布式的Row對象的集合。


開源大數(shù)據(jù)技術(shù)漫談
http://sanwen8.cn/p/150ZTVb.html
隨著大數(shù)據(jù)中計(jì)算越來越復(fù)雜觅赊,往往一個(gè)處理過程會(huì)分解成很多小的計(jì)算任務(wù)右蕊,這些計(jì)算任務(wù)的中間結(jié)果需要保存在文件中做為下一個(gè)任務(wù)的輸入。這樣在計(jì)算過程中就會(huì)引入多次磁盤讀寫吮螺,降低了整體的計(jì)算速度∨练基于流處理的開源方案解決了這個(gè)問題鸠补,通過把中間計(jì)算結(jié)果保存在內(nèi)存中,大大減少了磁盤讀寫帶來的性能損失嘀掸。這類方案有代表性的有Spark紫岩,STORM,samza睬塌,其中Spark發(fā)展得最好泉蝌。


Hive on Spark解析 – lxw的大數(shù)據(jù)田地
http://lxw1234.com/archives/2015/05/200.htm
Spark則是最初由加州大學(xué)伯克利分校開發(fā)的分布式計(jì)算引擎,借助于其靈活的DAG執(zhí)行模式揩晴、對內(nèi)存的充分利用勋陪,以及RDD所能表達(dá)的豐富語義,Spark受到了Hadoop社區(qū)的廣泛關(guān)注硫兰。在成為Apache頂級(jí)項(xiàng)目之后诅愚,Spark更是集成了流處理、圖計(jì)算劫映、機(jī)器學(xué)習(xí)等功能违孝,是業(yè)界公認(rèn)最具潛力的下一代通用計(jì)算框架刹前。鑒于此,Hive社區(qū)于2014年推出了Hive on Spark項(xiàng)目(HIVE-7292)雌桑,將Spark作為繼MapReduce和Tez之后Hive的第三個(gè)計(jì)算引擎喇喉。


Spark核心概念 - 瞌睡中的葡萄虎 - 博客園
http://www.cnblogs.com/luogankun/p/3801142.html

1、Application
** 基于spark的用戶程序校坑,包含了一個(gè)Driver Program以及集群上中多個(gè)executor轧飞;**
** spark中只要有一個(gè)sparkcontext就是一個(gè)application**;
啟動(dòng)一個(gè)spark-shell也是一個(gè)application撒踪,因?yàn)樵趩?dòng)shark-shell時(shí)就內(nèi)置了一個(gè)sc(SparkContext的實(shí)例)过咬;

2、Driver Program
** 運(yùn)行Application的main()函數(shù)并且創(chuàng)建SparkContext的程序**制妄。通常用SparkContext代表Driver Program掸绞;

3、Cluster Manager
** 在集群上獲取資源的外部服務(wù)**耕捞。如:standalone衔掸、yarn、mesos俺抽;
  各種不同的集群的區(qū)別:只是任務(wù)調(diào)度的粗細(xì)粒度不同敞映,對學(xué)習(xí)spark沒有影響,自己在學(xué)習(xí)時(shí)使用standalone即可磷斧;

4振愿、Worker Node
集群中任何一個(gè)可以運(yùn)行Application代碼的節(jié)點(diǎn)
可以在Worker Node啟動(dòng)Executor進(jìn)程弛饭;

5冕末、Executor
在Worker Node上為某Application啟動(dòng)一個(gè)進(jìn)程,該進(jìn)程負(fù)責(zé)運(yùn)行任務(wù)侣颂,并且負(fù)責(zé)將數(shù)據(jù)存在硬盤或者內(nèi)存中档桃;每個(gè)Application都有各自獨(dú)立的executors
比如:應(yīng)用A在一個(gè)Node上啟動(dòng)Executor憔晒,B應(yīng)用也在同一個(gè)Node上啟動(dòng)Executor藻肄,他們各自的Executor是相互隔離的,運(yùn)行在不同的JVM上拒担。不同的應(yīng)用對應(yīng)不同的Executor嘹屯;

6、Job
包含很多task的并行計(jì)算澎蛛,spark中的一個(gè)action對應(yīng)一個(gè)job抚垄,如:collect、count、saveAsTextFile呆馁;
用戶提交的Job會(huì)提交給DAGScheduler桐经,Job會(huì)被分解成Stage(TaskSet) DAG
RDD的transformation只會(huì)記錄對元數(shù)據(jù)的操作(map/filter)浙滤,而并不會(huì)真正執(zhí)行阴挣,只有action觸發(fā)時(shí)才會(huì)執(zhí)行job;

7纺腊、Stage
每****個(gè)Job會(huì)被拆分成多組任務(wù)畔咧,每組****任務(wù)****被稱為一個(gè)Stage,可稱為TaskSet
一個(gè)stage的邊界往往是從某個(gè)地方取數(shù)據(jù)開始(如:sc.readTextFile)揖膜,在shuffle時(shí)(如:join誓沸、reduceByKey等)終止
一個(gè)job的結(jié)束(如:count壹粟、saveAsTextFile等)往往也是一個(gè)stage的邊界拜隧;
有兩種類型的Stage:shuffle和result;

8趁仙、Task
被送到executor上的工作單元洪添;
spark分為2類task:
在Spark中有兩類Task:shuffleMapTask和ResultTask,第一類Task的輸出是shuffle所需數(shù)據(jù)雀费,第二類task的輸出是result干奢;
  stage的劃分也以此為依據(jù),shuffle之前的所有變換是一個(gè)stage盏袄,shuffle之后的操作是另一個(gè)stage忿峻;
比如:rdd.parallize(1 to 10).foreach(println)這個(gè)操作沒有shuffle,直接就輸出了貌矿,那么它的task就是resulttask炭菌,stage也只有一個(gè);
如果rdd.map((x,1)).reduceByKey(+).foreach(println)逛漫,這個(gè)job因?yàn)橛衦educe,所以有個(gè)一shuffle過程赘艳,那么reduceByKey之前是一個(gè)stage酌毡,執(zhí)行shuffleMapTask,輸出shuffle所需要的數(shù)據(jù)蕾管,reduceByKey到最后是一個(gè)stage枷踏,直接就輸出結(jié)果了。
如果一個(gè)job中有多次shuffle掰曾,那么每個(gè)shuffle之前都是一個(gè)stage旭蠕;

9、Partition
partition類似hadoop的split,計(jì)算是以partition為單位進(jìn)行的

詳細(xì)信息參見官方文檔:http://spark.apache.org/docs/latest/cluster-overview.html


RDD: Resilient Distributed Dataset
RDD的特點(diǎn)
1掏熬、A list of **partitions **
一系列的分片:比如說64M一片佑稠;類似于Hadoop中的split;

2旗芬、A **function **for computing each split
在每個(gè)分片上都有一個(gè)函數(shù)去迭代/執(zhí)行/計(jì)算它

3舌胶、A list of **dependencies **on other RDDs
一系列的依賴:RDDa轉(zhuǎn)換為RDDb,RDDb轉(zhuǎn)換為RDDc疮丛,那么RDDc就依賴于RDDb幔嫂,RDDb就依賴于RDDa

4、Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
對于key-value的RDD可指定一個(gè)partitioner誊薄,告訴它如何分片履恩;常用的有hash,range

5呢蔫、Optionally, a list of **preferred location(s) **to compute each split on (e.g. block locations for an HDFS file)
要運(yùn)行的計(jì)算/執(zhí)行最好在哪(幾)個(gè)機(jī)器上運(yùn)行切心。數(shù)據(jù)本地性。
  為什么會(huì)有哪幾個(gè)呢咐刨?
  比如:hadoop默認(rèn)有三個(gè)位置昙衅,或者spark cache到內(nèi)存是可能通過StorageLevel設(shè)置了多個(gè)副本,所以一個(gè)partition可能返回多個(gè)最佳位置定鸟。

前三個(gè)特點(diǎn)對應(yīng)于Lineage而涉,后兩個(gè)對應(yīng)于Optimized
execution

Paste_Image.png

分類: Spark


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市联予,隨后出現(xiàn)的幾起案子啼县,更是在濱河造成了極大的恐慌,老刑警劉巖沸久,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件季眷,死亡現(xiàn)場離奇詭異,居然都是意外死亡卷胯,警方通過查閱死者的電腦和手機(jī)子刮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窑睁,“玉大人挺峡,你說我怎么就攤上這事〉Eィ” “怎么了橱赠?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長箫津。 經(jīng)常有香客問我狭姨,道長宰啦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任饼拍,我火速辦了婚禮赡模,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惕耕。我一直安慰自己纺裁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布司澎。 她就那樣靜靜地躺著欺缘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挤安。 梳的紋絲不亂的頭發(fā)上谚殊,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機(jī)與錄音蛤铜,去河邊找鬼嫩絮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛围肥,可吹牛的內(nèi)容都是我干的剿干。 我是一名探鬼主播忧陪,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼劲弦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肠鲫?” 一聲冷哼從身側(cè)響起氢伟,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤榜轿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后朵锣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谬盐,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年诚些,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了飞傀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诬烹,死狀恐怖助析,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情椅您,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布寡键,位于F島的核電站掀泳,受9級(jí)特大地震影響雪隧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜员舵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一脑沿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧马僻,春花似錦庄拇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至女淑,卻和暖如春瞭郑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸭你。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工屈张, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人袱巨。 一個(gè)月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓阁谆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親愉老。 傳聞我的和親對象是個(gè)殘疾皇子场绿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

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