学习笔记Spark(一)—— Spark入门
一、Spark簡介
什么是Spark?
- 快速、分布式、可擴(kuò)展、容錯(cuò)的集群計(jì)算框架;
- Spark是基于內(nèi)存計(jì)算的大數(shù)據(jù)分布式計(jì)算框架;
- 低延遲的復(fù)雜分析;
- Spark是Hadoop MapReduce的替代方案。
二、Spark的發(fā)展歷史
對于一個(gè)具有相當(dāng)技術(shù)門檻與復(fù)雜度的平臺(tái),Spark從誕生到正式版本的成熟,經(jīng)歷的時(shí)間如此之短,讓人感到驚詫。目前,Spark已經(jīng)成為Apache軟件基金會(huì)旗下的頂級(jí)開源項(xiàng)目。下面是Spark的發(fā)展歷程簡述:
- 2009年,Spark誕生于伯克利大學(xué)AMPLab,最初屬于伯克利大學(xué)的研究性項(xiàng)目,實(shí)驗(yàn)室的研究人員之前基于Hadoop MapReduce工作,他們發(fā)現(xiàn)MapReduce對于迭代和交互式計(jì)算任務(wù)效率不高,因此他們研究的Spark主要為交互式查詢和迭代算法設(shè)計(jì),支持內(nèi)存存儲(chǔ)和高效的容錯(cuò)恢復(fù)。
- 2010年Spark正式開源。
- 2013年6月成為了Apache基金會(huì)的孵化器項(xiàng)目。
- 2014年2月,僅僅經(jīng)歷8個(gè)月的時(shí)間Spark就成為Apache基金會(huì)的頂級(jí)項(xiàng)目,同時(shí),大數(shù)據(jù)公司Cloudera宣稱加大Spark框架的投入來取代MapReduce。
- 2014年5月,Pivotal Hadoop集成Spark全棧,同月30日,Spark1.0.0發(fā)布。
- 2015年Spark增加了新的DataFrames API和Dataset API
- 2016年Spark2.0發(fā)布,Spark2.0與1.0的區(qū)別主要是2.0修訂了API的兼容性問題。
- 2017年在美國舊金山舉行Spark Summit 2017,會(huì)議介紹2017年Spark的重點(diǎn)開發(fā)方向是深度學(xué)習(xí)以及對流性能的改進(jìn)。
三、Spark的特點(diǎn)
1、快速
一般情況下,對于迭代次數(shù)較多的應(yīng)用程序,Spark程序在內(nèi)存中的運(yùn)行速度是Hadoop MapReduce運(yùn)行速度的100多倍,在磁盤上的運(yùn)行速度是Hadoop MapReduce運(yùn)行速度的10多倍。
2、易用性
Spark支持使用Scala、Python、Java及R語言快速編寫應(yīng)用。同時(shí)Spark提供超過80個(gè)高級(jí)運(yùn)算符,使得編寫并行應(yīng)用程序變得容易并且可以在Scala、Python或R的交互模式下使用Spark。
3、通用性
Spark可以與SQL、Streaming及復(fù)雜的分析良好結(jié)合。Spark還有一系列的高級(jí)工具,包括Spark SQL、MLlib(機(jī)器學(xué)習(xí)庫)、GraphX(圖計(jì)算)和Spark Streaming,并且支持在一個(gè)應(yīng)用中同時(shí)使用這些組件
4、隨處運(yùn)行
用戶可以使用Spark的獨(dú)立集群模式運(yùn)行Spark,也可以在EC2(亞馬遜彈性計(jì)算云)、Hadoop YARN或者Apache Mesos上運(yùn)行Spark。并且可以從HDFS、Cassandra、HBase、Hive、Tachyon和任何分布式文件系統(tǒng)讀取數(shù)據(jù)
5、代碼簡潔
四、Spark的生態(tài)圈
(1)Spark Core:Spark核心,提供底層框架及核心支持。包含Spark的基本功能,包括任務(wù)調(diào)度、內(nèi)存管理、容錯(cuò)機(jī)制等。Spark Core內(nèi)部定義了RDDS,并提供了很多API來創(chuàng)建和操作RDD
(2)BlinkDB:一個(gè)用于在海量數(shù)據(jù)上運(yùn)行交互式SQL查詢的大規(guī)模并行查詢引擎,它允許用戶通過權(quán)衡數(shù)據(jù)精度來提升查詢響應(yīng)時(shí)間,其數(shù)據(jù)的精度被控制在允許的誤差范圍內(nèi)。
(3)Spark SQL:可以執(zhí)行SQL查詢,包括基本的SQL語法和HiveQL語法。讀取的數(shù)據(jù)源包括Hive表、Parquent文件、JSON數(shù)據(jù)、關(guān)系數(shù)據(jù)庫(如MySQL)等。
(4)Spark Streaming:流式計(jì)算。比如,一個(gè)網(wǎng)站的流量是每時(shí)每刻都在發(fā)生的,如果需要知道過去15分鐘或一個(gè)小時(shí)的流量,則可以使用Spark Streaming來解決這個(gè)問題。
(5)MLBase:MLBase是Spark生態(tài)圈的一部分,專注于機(jī)器學(xué)習(xí),讓機(jī)器學(xué)習(xí)的門檻更低,讓一些可能并不了解機(jī)器學(xué)習(xí)的用戶也能方便地使用MLBase。MLBase分為四部分:MLlib、MLI、ML Optimizer和MLRuntime。
(6)MLlib:MLBase的一部分,MLlib是Spark的數(shù)據(jù)挖掘算法庫,實(shí)現(xiàn)了一些常見的機(jī)器學(xué)習(xí)算法和實(shí)用程序,包括分類、回歸、聚類、協(xié)同過濾、降維以及底層優(yōu)化。
(7)GraphX:圖計(jì)算的應(yīng)用在很多情況下處理的數(shù)據(jù)都是很龐大的,比如在移動(dòng)社交上面的關(guān)系等都可以用圖相關(guān)算法來進(jìn)行處理和挖掘,但是如果用戶要自行編寫相關(guān)的圖計(jì)算算法,并且要在集群中應(yīng)用,那么難度是非常大的。而使用Spark GraphX就可以解決這個(gè)問題,它里面內(nèi)置了很多的圖相關(guān)算法。
(8)SparkR:SparkR是AMPLab發(fā)布的一個(gè)R開發(fā)包,使得R擺脫單機(jī)運(yùn)行的命運(yùn),可以作為Spark的Job運(yùn)行在集群上,極大地?cái)U(kuò)展了R的數(shù)據(jù)處理能力。
五、Spark的應(yīng)用場景舉例
騰訊廣告
廣點(diǎn)通是最早使用Spark的應(yīng)用之一。騰訊大數(shù)據(jù)精準(zhǔn)推薦借助Spark快速迭代的優(yōu)勢,圍繞“數(shù)據(jù)+算法+系統(tǒng)”這套技術(shù)方案,實(shí)現(xiàn)了在“數(shù)據(jù)實(shí)時(shí)采集、算法實(shí)時(shí)訓(xùn)練、系統(tǒng)實(shí)時(shí)預(yù)測”的全流程實(shí)時(shí)并行高維算法,最終成功應(yīng)用于廣點(diǎn)通pCTR投放系統(tǒng)上,支持每天上百億的請求量。
Yahoo
Yahoo將Spark用在Audience Expansion中。Audience Expansion是廣告中尋找目標(biāo)用戶的一種方法,首先廣告者提供一些觀看了廣告并且購買產(chǎn)品的樣本客戶,據(jù)此進(jìn)行學(xué)習(xí),尋找更多可能轉(zhuǎn)化的用戶,對他們定向廣告。Yahoo采用的算法是Logistic Regression。同時(shí)由于某些SQL負(fù)載需要更高的服務(wù)質(zhì)量,又加入了專門跑Shark的大內(nèi)存集群,用于取代商業(yè)BI/OLAP工具,承擔(dān)報(bào)表/儀表盤和交互式/即席查詢,同時(shí)與桌面BI工具對接。
淘寶
淘寶技術(shù)團(tuán)隊(duì)使用了Spark來解決多次迭代的機(jī)器學(xué)習(xí)算法、高計(jì)算復(fù)雜度的算法等,將Spark運(yùn)用于淘寶的推薦相關(guān)算法上,同時(shí)還利用GraphX解決了許多生產(chǎn)問題,包括以下計(jì)算場景:基于度分布的中樞節(jié)點(diǎn)發(fā)現(xiàn)、基于最大連通圖的社區(qū)發(fā)現(xiàn)、基于三角形計(jì)數(shù)的關(guān)系衡量、基于隨機(jī)游走的用戶屬性傳播等。
總結(jié)
以上是生活随笔為你收集整理的学习笔记Spark(一)—— Spark入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记Hive(九)—— 实例:航空客
- 下一篇: 学习笔记Spark(二)—— Spark