1.spark簡介

spark是一個用于大規(guī)模數(shù)據(jù)處理的統(tǒng)一計算引擎隔箍。適用于各種各樣原先需要多種不同的分布式平臺處理的場景寺酪,包括批處理坎背、迭代計算、交互式查詢寄雀、流處理得滤。通過統(tǒng)一的框架將各種處理流程整合到一起。

spark特性

  • 快速性

spark通過使用先進(jìn)的DAG調(diào)度器盒犹、查詢優(yōu)化器和物理執(zhí)行引擎懂更,可以高性能地進(jìn)行批量及流式處理。使用邏輯回歸算法進(jìn)行迭代計算急膀,spark比hadoop速度快100多倍沮协。

快速性
  • 簡單易用

spark支持多種編程語言,比如Java卓嫂、Scala慷暂、Python、R及SQL晨雳。

spark提供了超過80多個高級算子操作行瑞,可以很便捷地構(gòu)建并行計算應(yīng)用。

  • 通用性

spark構(gòu)建了一個完善的生態(tài)棧悍募,將批量計算蘑辑、交互式計算、流式計算坠宴、機(jī)器學(xué)習(xí)及圖計算整合到一個統(tǒng)一的框架體系中洋魂。

通用性
  • 處處運(yùn)行

spark可以運(yùn)行在standalone、YARN喜鼓、Mesos副砍、Kubernetes及EC2多種調(diào)度平臺上。

另外庄岖,spark可以接入多種數(shù)據(jù)源豁翎,比如HDFS、Alluxio隅忿、HBase心剥、Cassandra邦尊、Hive及本地文件。

處處運(yùn)行

spark生態(tài)棧

spark生態(tài)棧

Spark Core

Spark Core實(shí)現(xiàn)了Spark的基本功能优烧,包括任務(wù)調(diào)度蝉揍、內(nèi)存管理、錯誤恢復(fù)畦娄、與存儲系統(tǒng)交互等模塊又沾。Spark Core還包含了對彈性分布式數(shù)據(jù)集(resilient distributed dataset,簡稱RDD)的API定義熙卡。RDD表示分布在多個計算節(jié)點(diǎn)上并行操作的元素集合杖刷,是Spark的核心抽象模型。

Spark SQL

Spark SQL是Spark用來處理結(jié)構(gòu)化數(shù)據(jù)的子框架驳癌。Spark SQL支持多種數(shù)據(jù)源滑燃,比如Hive表、Parquet及JSON等喂柒。Spark SQL可使用SQL或Hive的SQL方言(HQL)查詢數(shù)據(jù)不瓶,還支持將SQL和RDD相互轉(zhuǎn)換禾嫉。

Spark Streaming

Spark Streaming是Spark提供的對實(shí)時數(shù)據(jù)進(jìn)行流式計算的組件灾杰。Spark Streaming提供了操作數(shù)據(jù)流的API,同時還提供了高級別的容錯性熙参、吞吐量及可伸縮性艳吠。

MLlib

MLlib是一個提供常見機(jī)器學(xué)習(xí)(ML)功能的程序庫。MLlib提供了很多種機(jī)器學(xué)習(xí)算法孽椰,包括分類昭娩、回歸、聚類黍匾、協(xié)同過濾等栏渺,還提供了模型評估、數(shù)據(jù)導(dǎo)入及更底層的機(jī)器學(xué)習(xí)原語(包括通用的梯度下降優(yōu)化算法)锐涯。

Graphx

Graphx是用來操作圖(比如社交網(wǎng)絡(luò)的朋友關(guān)系圖)的程序庫磕诊,可進(jìn)行并行的圖計算。Graphx擴(kuò)展了RDD API纹腌,能用來創(chuàng)建一個頂點(diǎn)和邊都包含任意屬性的有向圖霎终。Graphx支持對圖的各種操作(比如進(jìn)行圖分隔的subgraph和操作所有頂點(diǎn)的mapVertices),及一些常用算法(比如PageRank和三角計數(shù))升薯。

集群管理器

Spark設(shè)計為可高效地在一個計算節(jié)點(diǎn)到數(shù)千個計算節(jié)點(diǎn)之間伸縮計算莱褒,所以為了獲取最大靈活性,spark支持在各種集群管理器上運(yùn)行涎劈,包括Hadoop YARN广凸、Apache Mesos及Spark自帶的獨(dú)立調(diào)度器等阅茶。

spark用戶及用途

spark的使用者主要分為兩大目標(biāo)人群:數(shù)據(jù)分析師和工程師。這兩大人群使用spark的典型用例不一致谅海,大致分為兩類:數(shù)據(jù)分析和數(shù)據(jù)處理目派。

數(shù)據(jù)分析

數(shù)據(jù)分析師就是主要負(fù)責(zé)分析數(shù)據(jù)并建模的人。他們具備SQL胁赢、統(tǒng)計企蹭、預(yù)測建模(機(jī)器學(xué)習(xí))等方面技能,有一定使用Python智末、Matlab或R編程的能力谅摄。

Spark通過一系列組件支持?jǐn)?shù)據(jù)分析任務(wù)。Spark shell提供python和scala接口來進(jìn)行交互式數(shù)據(jù)分析系馆。Spark SQL提供獨(dú)立的SQL shell來使用SQL探索數(shù)據(jù)送漠,也可以通過標(biāo)準(zhǔn)的Spark程序或Spark shell進(jìn)行SQL查詢。MLlib程序庫進(jìn)行機(jī)器學(xué)習(xí)和數(shù)據(jù)分析由蘑。Spark還支持調(diào)用R或Matlab外部程序闽寡。

數(shù)據(jù)處理

工程師就是使用Spark開發(fā)數(shù)據(jù)處理應(yīng)用的軟件開發(fā)者。他們具備軟件工程概念(封裝尼酿、接口設(shè)計及面向?qū)ο笏枷耄┮罚苁褂霉こ碳夹g(shù)設(shè)計軟件系統(tǒng)。

Spark為開發(fā)用于集群并行執(zhí)行的程序提供了捷徑裳擎。不需要開發(fā)者關(guān)注分布式問題涎永、網(wǎng)絡(luò)通信及程序容錯性。為工程師提供足夠的接口實(shí)現(xiàn)常見的任務(wù)及對應(yīng)用監(jiān)控鹿响、審查和性能調(diào)優(yōu)羡微。

spark簡史

  • 2009 ,Spark誕生于UCBerkeley的AMP實(shí)驗(yàn)室

  • 2010 惶我,Spark正式對外開源

  • 2012-10-15妈倔,Spark 0.6.0發(fā)布。

  • 大范圍的性能改進(jìn)绸贡,增加了一些新特性盯蝴,并對Standalone部署模式進(jìn)行了簡化

  • 2013-02-27,Spark 0.7.0發(fā)布

  • 增加了更多關(guān)鍵特性恃轩,例如:Python API结洼、Spark Streaming的alpha版本等

  • 2013-06-21,Spark接受進(jìn)入Apache孵化器

  • 2013-09-17叉跛,Spark 0.8.0發(fā)布

  • 支持Scala2.9/YARN2.2/Standalone部署模式下調(diào)度的高可用性松忍,shuffle優(yōu)化等

  • 2014-01-24,Spark 0.9.0發(fā)布

  • 增加了GraphX筷厘,機(jī)器學(xué)習(xí)新特性鸣峭,流式計算新特性宏所,核心引擎優(yōu)化(外部聚合、加強(qiáng)對YARN的支持)等

  • 2014-05-26摊溶,Spark 1.0.0發(fā)布

  • 增加了Spark SQL爬骤、MLlib、GraphX和Spark Streaming都增加了新特性并進(jìn)行了優(yōu)化莫换。Spark核心引擎還增加了對安全YARN集群的支持

  • 2014-09-03霞玄,Spark 1.1.0發(fā)布

  • Spark核心API及Streaming,Python拉岁,SQL坷剧,GraphX和MLlib的bug修復(fù)

  • 2014-12-10,Spark 1.2.0發(fā)布

  • Spark核心API及Streaming喊暖,Python惫企,SQL,GraphX和MLlib的bug修復(fù)

  • 2015-03-06陵叽,Spark 1.3.0發(fā)布

  • 該版本發(fā)布的最大亮點(diǎn)是新引入的DataFrame API狞尔,對于結(jié)構(gòu)型的DataSet,它提供了更方便更強(qiáng)大的操作運(yùn)算巩掺。偏序。除了DataFrame之外,還值得關(guān)注的一點(diǎn)是Spark SQL成為了正式版本锌半,這意味著它將更加的穩(wěn)定禽车,更加的全面。

  • 2015-06-03刊殉,Spark 1.4.0發(fā)布

  • 該版本將 R API 引入 Spark,同時提升了 Spark 的核心引擎和 MLlib 州胳,以及 Spark Streaming 的可用性

  • 2015-09-09记焊,Spark 1.5.0發(fā)布

  • Spark 1.5.0是1.x線上的第6個發(fā)行版。這個版本共處理了來自230+contributors和80+機(jī)構(gòu)的1400+個patches栓撞。

  • Spark 1.5的許多改變都是圍繞在提升Spark的性能遍膜、可用性以及操作穩(wěn)定性。

  • Spark 1.5.0焦點(diǎn)在Tungsten項目瓤湘,它主要是通過對低層次的組建進(jìn)行優(yōu)化從而提升Spark的性能瓢颅。

  • Spark 1.5版本為Streaming增加了operational特性,比如支持backpressure弛说。另外比較重要的更新就是新增加了一些機(jī)器學(xué)習(xí)算法和工具挽懦,并擴(kuò)展了Spark R的相關(guān)API。

  • 2015-12-22木人,Spark 1.6.0發(fā)布

  • 該版本含了超過1000個patches信柿,在這里主要展示三個方面的主題:新的Dataset API冀偶,性能提升(讀取Parquet 50%的性能提升,自動內(nèi)存管理渔嚷,streaming state management十倍的性能提升)进鸠,以及大量新的機(jī)器學(xué)習(xí)和統(tǒng)計分析算法。

  • 在Spark1.3.0引入DataFrame,它可以提供high-level functions讓Spark更好地處理數(shù)據(jù)結(jié)構(gòu)和計算婚惫。這讓Catalyst optimizer 和Tungsten execution engine自動加速大數(shù)據(jù)分析烤黍。發(fā)布DataFrame之后開發(fā)者收到了很多反饋,其中一個主要的是大家反映缺乏編譯時類型安全搀罢。為了解決這個問題,Spark采用新的Dataset API (DataFrame API的類型擴(kuò)展)侥猩。Dataset API擴(kuò)展DataFrame API支持靜態(tài)類型和運(yùn)行已經(jīng)存在的Scala或Java語言的用戶自定義函數(shù)榔至。對比傳統(tǒng)的RDD API,Dataset API提供更好的內(nèi)存管理欺劳,特別是在長任務(wù)中有更好的性能提升唧取。

  • 2016-07-20,Spark 2.0.0發(fā)布

  • 該版本主要更新APIs划提,支持SQL 2003枫弟,支持R UDF ,增強(qiáng)其性能鹏往。300個開發(fā)者貢獻(xiàn)了2500補(bǔ)丁程序

  • 2016-12-16淡诗,Spark 2.1.0發(fā)布

  • 這是 2.x 版本線的第二個發(fā)行版。此發(fā)行版在為Structured Streaming進(jìn)入生產(chǎn)環(huán)境做出了重大突破伊履,Structured Streaming 現(xiàn)在支持了event time watermarks了并且支持Kafka0.10

  • 此外韩容,此版本更側(cè)重于可用性,穩(wěn)定性和優(yōu)雅(polish)唐瀑,并解決了1200多個tickets

  • 2017-07-01群凶,Spark 2.2.0發(fā)布

  • 這是 2.x 系列的第三個版本。此版本移除了 Structured Streaming 的實(shí)驗(yàn)標(biāo)記(experimental tag)哄辣,意味著已可以放心在線上使用请梢。

  • 該版本的更新內(nèi)容主要針對的是系統(tǒng)的可用性、穩(wěn)定性以及代碼潤色力穗。包括:

    • Core 和 Spark SQL 的 API 升級和性能毅弧、穩(wěn)定性改進(jìn),比如支持從 Hive metastore 2.0/2.1 中讀取數(shù)據(jù)当窗;支持解析多行的 JSON 或 CSV 文件够坐;移除對 Java 7 的支持;移除對 Hadoop 2.5 及更早版本的支持 等

    • SparkR 針對現(xiàn)有的 Spark SQL 功能添加了更廣泛的支持,比如 Structured Streaming 為 R 語言提供的 API 咆霜;R 語言支持完整的 Catalog API 邓馒;R 語言支持 DataFrame checkpointing 等

  • 2018-02-23,Spark 2.3.0發(fā)布

  • 這是 2.x 系列中的第四個版本蛾坯。此版本增加了對 Structured Streaming 中的 Continuous Processing 以及全新的 Kubernetes Scheduler 后端的支持

  • 其他主要更新包括新的 DataSource 和 Structured Streaming v2 API光酣,以及一些 PySpark 性能增強(qiáng)。

  • 此外脉课,此版本繼續(xù)改進(jìn)項目的可用性救军、穩(wěn)定性,并持續(xù)潤色代碼倘零。

  • now

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唱遭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子呈驶,更是在濱河造成了極大的恐慌拷泽,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袖瞻,死亡現(xiàn)場離奇詭異司致,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)聋迎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門脂矫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人霉晕,你說我怎么就攤上這事庭再。” “怎么了牺堰?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵拄轻,是天一觀的道長。 經(jīng)常有香客問我萌焰,道長哺眯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任扒俯,我火速辦了婚禮,結(jié)果婚禮上一疯,老公的妹妹穿的比我還像新娘撼玄。我一直安慰自己,他們只是感情好墩邀,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布掌猛。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荔茬。 梳的紋絲不亂的頭發(fā)上废膘,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機(jī)與錄音慕蔚,去河邊找鬼丐黄。 笑死,一個胖子當(dāng)著我的面吹牛孔飒,可吹牛的內(nèi)容都是我干的灌闺。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼坏瞄,長吁一口氣:“原來是場噩夢啊……” “哼桂对!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鸠匀,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蕉斜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缀棍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宅此,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年睦柴,在試婚紗的時候發(fā)現(xiàn)自己被綠了诽凌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡坦敌,死狀恐怖侣诵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狱窘,我是刑警寧澤杜顺,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站蘸炸,受9級特大地震影響躬络,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搭儒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一穷当、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧淹禾,春花似錦馁菜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春智嚷,著一層夾襖步出監(jiān)牢的瞬間卖丸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工盏道, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留稍浆,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓摇天,卻偏偏與公主長得像粹湃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子泉坐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348

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