Spark從入門到精通1:spark概述

1. Spark是什么

Spark琅绅,是一種通用的大數(shù)據(jù)計(jì)算框架营密,正如傳統(tǒng)大數(shù)據(jù)技術(shù)Hadoop的MapReduce裸违、Hive引擎呢岗,以及Storm流式實(shí)時(shí)計(jì)算引擎等湃鹊。
Spark包含了大數(shù)據(jù)領(lǐng)域常見的各種計(jì)算框架:比如Spark Core用于離線計(jì)算儒喊,Spark SQL用于交互式查詢,Spark Streaming用于實(shí)時(shí)流式計(jì)算币呵,Spark MLlib用于機(jī)器學(xué)習(xí)怀愧,Spark GraphX用于圖計(jì)算。
Spark主要用于大數(shù)據(jù)的計(jì)算余赢,而Hadoop以后主要用于大數(shù)據(jù)的存儲(chǔ)(比如HDFS芯义、Hive、HBase等)没佑,以及資源調(diào)度(Yarn)毕贼。
Spark+Hadoop的組合,是大數(shù)據(jù)領(lǐng)域熱門的組合蛤奢。

2.Spark的介紹

Spark鬼癣,是一種"One Stack to rule them all"的大數(shù)據(jù)計(jì)算框架,期望使用一個(gè)技術(shù)堆棧就完美地解決大數(shù)據(jù)領(lǐng)域的各種計(jì)算任務(wù)啤贩。Apache官方待秃,對(duì)Spark的定義就是:通用的大數(shù)據(jù)快速處理引擎。
Spark使用Spark RDD痹屹、Spark SQL章郁、Spark Streaming、MLlib志衍、GraphX成功解決了大數(shù)據(jù)領(lǐng)域中暖庄,離線批處理、交互式查詢楼肪、實(shí)時(shí)流計(jì)算培廓、機(jī)器學(xué)習(xí)與圖計(jì)算等最重要的任務(wù)和問題。
Spark除了一站式的特點(diǎn)之外春叫,另外一個(gè)最重要的特點(diǎn)肩钠,就是基于內(nèi)存進(jìn)行計(jì)算,從而讓它的速度可以達(dá)到MapReduce暂殖、Hive的數(shù)倍甚至數(shù)十倍价匠!
現(xiàn)在已經(jīng)有很多大公司正在生產(chǎn)環(huán)境下深度地使用Spark作為大數(shù)據(jù)的計(jì)算框架,包括eBay呛每、Yahoo!踩窖、BAT、網(wǎng)易晨横、京東毙石、華為廉沮、大眾點(diǎn)評(píng)、優(yōu)酷土豆徐矩、搜狗等等滞时。
Spark同時(shí)也獲得了多個(gè)世界頂級(jí)IT廠商的支持,包括IBM滤灯、Intel等坪稽。

3. Spark整體架構(gòu)
4.Spark的歷史沿革

·2009年,Spark誕生于伯克利大學(xué)的AMPLab實(shí)驗(yàn)室鳞骤。最出Spark只是一個(gè)實(shí)驗(yàn)性的項(xiàng)目窒百,代碼量非常少,屬于輕量級(jí)的框架豫尽。
·2010年篙梢,伯克利大學(xué)正式開源了Spark項(xiàng)目。
·2013年美旧,Spark成為了Apache基金會(huì)下的項(xiàng)目渤滞,進(jìn)入高速發(fā)展期。第三方開發(fā)者貢獻(xiàn)了大量的代碼榴嗅,活躍度非常高妄呕。
·2014年,Spark以飛快的速度稱為了Apache的頂級(jí)項(xiàng)目嗽测。
·2015年~绪励,Spark在國內(nèi)IT行業(yè)變得愈發(fā)火爆,大量的公司開始重點(diǎn)部署或者使用Spark來替代MapReduce唠粥、Hive疏魏、Storm等傳統(tǒng)的大數(shù)據(jù)計(jì)算框架。

5.Spark的特點(diǎn)

1.速度快:
Spark基于內(nèi)存進(jìn)行計(jì)算(當(dāng)然也有部分計(jì)算基于磁盤晤愧,比如shuffle)大莫。
2.容易上手開發(fā):
Spark的基于RDD的計(jì)算模型,比Hadoop的基于Map-Reduce的計(jì)算模型要更加易于理解养涮,更加易于上手開發(fā)葵硕,實(shí)現(xiàn)各種復(fù)雜功能眉抬,比如二次排序贯吓、topn等復(fù)雜操作時(shí),更加便捷蜀变。
3.超強(qiáng)的通用性:
Spark提供了Spark RDD悄谐、Spark SQL、Spark Streaming库北、Spark MLlib爬舰、Spark GraphX等技術(shù)組件们陆,可以一站式地完成大數(shù)據(jù)領(lǐng)域的離線批處理、交互式查詢情屹、流式計(jì)算坪仇、機(jī)器學(xué)習(xí)、圖計(jì)算等常見的任務(wù)垃你。
4.集成Hadoop:
Spark并不是要成為一個(gè)大數(shù)據(jù)領(lǐng)域的“獨(dú)裁者”椅文,一個(gè)人霸占大數(shù)據(jù)領(lǐng)域所有的“地盤”,而是與Hadoop進(jìn)行了高度的集成惜颇,兩者可以完美的配合使用皆刺。Hadoop的HDFS、Hive凌摄、HBase負(fù)責(zé)存儲(chǔ)羡蛾,YARN負(fù)責(zé)資源調(diào)度;Spark復(fù)雜大數(shù)據(jù)計(jì)算锨亏。實(shí)際上痴怨,Hadoop+Spark的組合,是一種“double win”的組合屯伞。
5.極高的活躍度:
Spark目前是Apache基金會(huì)的頂級(jí)項(xiàng)目腿箩,全世界有大量的優(yōu)秀工程師是Spark的committer。并且世界上很多頂級(jí)的IT公司都在大規(guī)模地使用Spark劣摇。

6.Spark VS MapReduce

MapReduce能夠完成的各種離線批處理功能珠移,以及常見算法(比如二次排序、topn等)末融,基于Spark RDD的核心編程钧惧,都可以實(shí)現(xiàn),并且可以更好地勾习、更容易地實(shí)現(xiàn)浓瞪。而且基于Spark RDD編寫的離線批處理程序,運(yùn)行速度是MapReduce的數(shù)倍巧婶,速度上有非常明顯的優(yōu)勢乾颁。
Spark相較于MapReduce速度快的最主要原因就在于,MapReduce的計(jì)算模型太死板艺栈,必須是map-reduce模式英岭,有時(shí)候即使完成一些諸如過濾之類的操作,也必須經(jīng)過map-reduce過程湿右,這樣就必須經(jīng)過shuffle過程诅妹。而MapReduce的shuffle過程是最消耗性能的,因?yàn)閟huffle中間的過程必須基于磁盤來讀寫。而Spark的shuffle雖然也要基于磁盤吭狡,但是其大量transformation操作尖殃,比如單純的map或者filter等操作,可以直接基于內(nèi)存進(jìn)行pipeline操作划煮,速度性能自然大大提升送丰。
但是Spark也有其劣勢。由于Spark基于內(nèi)存進(jìn)行計(jì)算弛秋,雖然開發(fā)容易蚪战,但是真正面對(duì)大數(shù)據(jù)的時(shí)候(比如一次操作針對(duì)10億以上級(jí)別),在沒有進(jìn)行調(diào)優(yōu)的情況下铐懊,可能會(huì)出現(xiàn)各種各樣的問題邀桑,比如OOM內(nèi)存溢出等等。導(dǎo)致Spark程序可能都無法完全運(yùn)行起來科乎,就報(bào)錯(cuò)掛掉了壁畸,而MapReduce即使是運(yùn)行緩慢,但是至少可以慢慢運(yùn)行完茅茂。
此外捏萍,Spark由于是新崛起的技術(shù)新秀,因此在大數(shù)據(jù)領(lǐng)域的完善程度空闲,肯定不如MapReduce令杈,比如基于HBase、Hive作為離線批處理程序的輸入輸出碴倾,Spark就遠(yuǎn)沒有MapReduce來的完善逗噩。實(shí)現(xiàn)起來非常麻煩。

7.Spark SQL VS Hive

Spark SQL實(shí)際上并不能完全替代Hive跌榔,因?yàn)镠ive是一種基于HDFS的數(shù)據(jù)倉庫异雁,并且提供了基于SQL模型的,針對(duì)存儲(chǔ)了大數(shù)據(jù)的數(shù)據(jù)倉庫僧须,進(jìn)行分布式交互查詢的查詢引擎纲刀。
嚴(yán)格的來說,Spark SQL能夠替代的担平,是Hive的查詢引擎示绊,而不是Hive本身,實(shí)際上即使在生產(chǎn)環(huán)境下暂论,Spark SQL也是針對(duì)Hive數(shù)據(jù)倉庫中的數(shù)據(jù)進(jìn)行查詢面褐,Spark本身自己是不提供存儲(chǔ)的,自然也不可能替代Hive作為數(shù)據(jù)倉庫的這個(gè)功能空另。
Spark SQL的一個(gè)優(yōu)點(diǎn)盆耽,相較于Hive查詢引擎來說蹋砚,就是速度快扼菠,同樣的SQL語句摄杂,可能使用Hive的查詢引擎,由于其底層基于MapReduce循榆,必須經(jīng)過shuffle過程走磁盤析恢,因此速度是非常緩慢的。很多復(fù)雜的SQL語句秧饮,在hive中執(zhí)行都需要一個(gè)小時(shí)以上的時(shí)間映挂。而Spark SQL由于其底層基于Spark自身的基于內(nèi)存的特點(diǎn),因此速度達(dá)到了Hive查詢引擎的數(shù)倍以上盗尸。
但是Spark SQL由于與Spark一樣柑船,是大數(shù)據(jù)領(lǐng)域的新起的新秀,因此還不夠完善泼各,有少量的Hive支持的高級(jí)特性鞍时,Spark SQL還不支持,導(dǎo)致Spark SQL暫時(shí)還不能完全替代Hive的查詢引擎扣蜻。而只能在部分Spark SQL功能特性可以滿足需求的場景下逆巍,進(jìn)行使用。
而Spark SQL相較于Hive的另外一個(gè)優(yōu)點(diǎn)莽使,就是支持大量不同的數(shù)據(jù)源锐极,包括hive、json芳肌、parquet灵再、jdbc等等。此外亿笤,Spark SQL由于身處Spark技術(shù)堆棧內(nèi)檬嘀,也是基于RDD來工作,因此可以與Spark的其他組件無縫整合使用责嚷,配合起來實(shí)現(xiàn)許多復(fù)雜的功能鸳兽。比如Spark SQL支持可以直接針對(duì)hdfs文件執(zhí)行sql語句!

8.Spark Streaming VS Storm

Spark Streaming與Storm都可以用于進(jìn)行實(shí)時(shí)流計(jì)算罕拂。但是他們兩者的區(qū)別是非常大的揍异。其中區(qū)別之一,就是爆班,Spark Streaming和Storm的計(jì)算模型完全不一樣衷掷,Spark Streaming是基于RDD的,因此需要將一小段時(shí)間內(nèi)的柿菩,比如1秒內(nèi)的數(shù)據(jù)戚嗅,收集起來,作為一個(gè)RDD,然后再針對(duì)這個(gè)batch的數(shù)據(jù)進(jìn)行處理懦胞。而Storm卻可以做到每來一條數(shù)據(jù)替久,都可以立即進(jìn)行處理和計(jì)算。因此躏尉,Spark Streaming實(shí)際上嚴(yán)格意義上來說蚯根,只能稱作準(zhǔn)實(shí)時(shí)的流計(jì)算框架;而Storm是真正意義上的實(shí)時(shí)計(jì)算框架胀糜。
此外颅拦,Storm支持的一項(xiàng)高級(jí)特性,是Spark Streaming暫時(shí)不具備的教藻,即Storm支持在分布式流式計(jì)算程序(Topology)在運(yùn)行過程中距帅,可以動(dòng)態(tài)地調(diào)整并行度,從而動(dòng)態(tài)提高并發(fā)處理能力括堤。而Spark Streaming是無法動(dòng)態(tài)調(diào)整并行度的锥债。
但是Spark Streaming也有其優(yōu)點(diǎn),首先Spark Streaming由于是基于batch進(jìn)行處理的痊臭,因此相較于Storm基于單條數(shù)據(jù)進(jìn)行處理哮肚,具有數(shù)倍甚至數(shù)十倍的吞吐量。
此外广匙,Spark Streaming由于也身處于Spark生態(tài)圈內(nèi)允趟,因此Spark Streaming可以與Spark Core、Spark SQL鸦致,甚至是Spark MLlib潮剪、Spark GraphX進(jìn)行無縫整合。流式處理完的數(shù)據(jù)分唾,可以立即進(jìn)行各種map抗碰、reduce轉(zhuǎn)換操作,可以立即使用sql進(jìn)行查詢绽乔,甚至可以立即使用machine learning或者圖計(jì)算算法進(jìn)行處理弧蝇。這種一站式的大數(shù)據(jù)處理功能和優(yōu)勢,是Storm無法匹敵的折砸。
因此看疗,綜合上述來看,通常在對(duì)實(shí)時(shí)性要求特別高睦授,而且實(shí)時(shí)數(shù)據(jù)量不穩(wěn)定两芳,比如在白天有高峰期的情況下,可以選擇使用Storm去枷。但是如果是對(duì)實(shí)時(shí)性要求一般怖辆,允許1秒的準(zhǔn)實(shí)時(shí)處理是复,而且不要求動(dòng)態(tài)調(diào)整并行度的話,選擇Spark Streaming是更好的選擇竖螃。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末淑廊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子斑鼻,更是在濱河造成了極大的恐慌,老刑警劉巖猎荠,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坚弱,死亡現(xiàn)場離奇詭異,居然都是意外死亡关摇,警方通過查閱死者的電腦和手機(jī)荒叶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來输虱,“玉大人些楣,你說我怎么就攤上這事∠芏茫” “怎么了愁茁?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長亭病。 經(jīng)常有香客問我鹅很,道長,這世上最難降的妖魔是什么罪帖? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任促煮,我火速辦了婚禮,結(jié)果婚禮上整袁,老公的妹妹穿的比我還像新娘菠齿。我一直安慰自己,他們只是感情好坐昙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布绳匀。 她就那樣靜靜地躺著,像睡著了一般炸客。 火紅的嫁衣襯著肌膚如雪襟士。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天嚷量,我揣著相機(jī)與錄音陋桂,去河邊找鬼。 笑死蝶溶,一個(gè)胖子當(dāng)著我的面吹牛嗜历,可吹牛的內(nèi)容都是我干的宣渗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼梨州,長吁一口氣:“原來是場噩夢啊……” “哼痕囱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起暴匠,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤鞍恢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后每窖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帮掉,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年窒典,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蟆炊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瀑志,死狀恐怖涩搓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情劈猪,我是刑警寧澤昧甘,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站战得,受9級(jí)特大地震影響疾层,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贡避,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一痛黎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刮吧,春花似錦湖饱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至致讥,卻和暖如春仅仆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背垢袱。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工墓拜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人请契。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓咳榜,卻偏偏與公主長得像夏醉,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涌韩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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