如何高效的學(xué)習(xí)Apache Spark?
網(wǎng)友解答: Spark定義a.是一個通用的大規(guī)模數(shù)據(jù)快速處理引擎。b.Spark就是一個大數(shù)據(jù)分布式處理框架。3.Spark在性能和方案的統(tǒng)一性都具有顯著的優(yōu)勢。Spark使用Spark
Spark定義
a.是一個通用的大規(guī)模數(shù)據(jù)快速處理引擎。
b.Spark就是一個大數(shù)據(jù)分布式處理框架。
3.Spark在性能和方案的統(tǒng)一性都具有顯著的優(yōu)勢。
Spark使用SparkSQL、Spark Streaming、MLlib、Graph幾乎完美地解決了大數(shù)據(jù)中的Batch Processing、Stream Processing、Ad-hocQuery(即席查詢)等三大核心問題。如何學(xué)習(xí)Spark配置spark環(huán)境:先安裝linux,java,Scala,spark等軟件,配置環(huán)境變量,搭建集群。建議你先熟悉一下linux系統(tǒng)。學(xué)習(xí)scala語言 ,函數(shù)式編程,這些有點(diǎn)難度。我是學(xué)java過來的,感覺很不適應(yīng),語法感覺很怪,需要冷靜下來好好學(xué)習(xí),trait ,object 伴生對象,柯里化等概念還是需要好好理解的,他也有很多好處,比如apply()方法,很方便的新建一個對象那個,用得多了,就覺得很好用,我現(xiàn)在就覺得很好用,學(xué)過java好理解一些,本質(zhì)一樣,表達(dá)方式不同而已。建議您學(xué)習(xí)一下java。spark學(xué)習(xí),最好學(xué)習(xí)spark的方式就是看官方文檔,跟著官方文檔過一遍手,基本就理解的差不多啦,接下來用idea集成編程完成的程序,調(diào)試測試等,基本就可以上手啦!接下深入理解就看源碼,深入Spark內(nèi)核,通過源碼掌握Spark的任務(wù)提交過程,掌握Spark集群的任務(wù)調(diào)度,尤其要精通DAGScheduler、TaskScheduler和Worker節(jié)點(diǎn)內(nèi)部的工作的每一步的細(xì)節(jié)。基于Spark上的核心框架的使用,學(xué)習(xí)SparkSQL(關(guān)系型操作)、Spark Streaming(實(shí)時(shí)處理)、MLlib(機(jī)器學(xué)習(xí))、GraphX(圖處理)這些。
我們使用spark一般都使用Yarn框架,所以我覺得還需要學(xué)些Hadoop學(xué)習(xí)。有hdfs和mr(現(xiàn)在是YARN)組成,有興趣可以看https://www.toutiao.com/i6506428976062267907/這篇文章
場景
Spark是一個分布式內(nèi)存型計(jì)算框架,吸收MR的優(yōu)點(diǎn),以RDD數(shù)據(jù)來表示模型,提供多種算子,例如map|filter|flatMap|sample|groupByKey|reduceByKey|union|join等,并將中間數(shù)據(jù)放到內(nèi)存中,使得迭代運(yùn)算效率更高,更適合于實(shí)時(shí)計(jì)算|交互式計(jì)算或者要求計(jì)算量大、效率要求高等場景。與Yarn的結(jié)合,使得Spark可以與MR運(yùn)行與同一個集群中,共享存儲資源與計(jì)算資源,不斷完善的SparkSQL,可以與Hive兼容,大大增強(qiáng)了Spark的應(yīng)用范圍及優(yōu)越性。
Spark是基于內(nèi)存的迭代計(jì)算框架,適用于需要多次操作特定數(shù)據(jù)集的應(yīng)用場合。需要反復(fù)操作的次數(shù)越多,所需讀取的數(shù)據(jù)量越大,受益越大,數(shù)據(jù)量小但是計(jì)算密集度較大的場合,受益就相對較小。
總的來說Spark的適用面比較廣泛且比較通用。
Spark的特點(diǎn)a.快速基于內(nèi)存計(jì)算速度是MR的100倍,基于磁盤計(jì)算的速度是MR的10倍
快的原因是:Spark有一個DAG(有向無環(huán)圖)執(zhí)行引擎,支持循環(huán)數(shù)據(jù)流和內(nèi)存計(jì)算。
b.易用
提供多語言的API,能快速實(shí)現(xiàn)應(yīng)用,相比MR有簡潔的代碼,安裝部署簡單
c.通用
提供一個強(qiáng)大的技術(shù)棧,包括查詢語言SparkSQL、實(shí)時(shí)流處理工具Spark Streaming、機(jī)器學(xué)習(xí)工具M(jìn)Llib、圖計(jì)算工具GraphX, Spark的目的在于構(gòu)建一個結(jié)構(gòu)上一體化功能上多元化的高效數(shù)據(jù)流水線技術(shù)棧。
d.集成Hadoop
Spark可以運(yùn)行在YARN上,可以讀取Hadoop的任何數(shù)據(jù)
下面是Spark生態(tài)系統(tǒng)Spark Core:它包含Spark的基本功能(任務(wù)調(diào)度、內(nèi)存管理、故障恢復(fù)以及存儲系統(tǒng)的交互),包含RDD|Stage|DAG|它的核心思想就是將數(shù)據(jù)緩存在內(nèi)存中,并用Lineage機(jī)制容錯。
a.RDD:
Resilient Distributed DataSets,是分布式只讀的且已分區(qū)的集合對象。
這些集合是彈性的,如果數(shù)據(jù)集的一部分丟失,則可以對它們進(jìn)行重建。
具有自動容錯|位置感知調(diào)度|可伸縮性的特點(diǎn)。
對于記錄數(shù)據(jù)的更新,RDD也只支持粗粒度的轉(zhuǎn)換(記錄如何從其他RDD轉(zhuǎn)換而來即Lineage,以便恢復(fù)丟失的分區(qū))
數(shù)據(jù)集容錯的兩種方式:數(shù)據(jù)檢查點(diǎn)(成本高,服務(wù)器之間的傳輸?shù)膯栴})和記錄數(shù)據(jù)的更新。
Spark大數(shù)據(jù)處理框架1.Spark速度快的原因
a.統(tǒng)一的RDD抽象和操作:Spark基于RDD抽象,使得Spark的框架輕而易舉地使用Spark Core中的所有內(nèi)容, 并且各個框架可以在內(nèi)存中無縫地集成和完成系統(tǒng)任務(wù)。
b.Spark是基于統(tǒng)一的技術(shù)堆棧。
2.基于內(nèi)存的迭代式計(jì)算
MR在每次執(zhí)行時(shí)都要從磁盤讀數(shù)據(jù),計(jì)算完畢之后都要把數(shù)據(jù)存放在磁盤上。
Spark是基于內(nèi)存的,每次運(yùn)算都是在內(nèi)存中計(jì)算的。
3.DAG
a.是另外一個快的重要原因
b.基于RDD,Spark具備了非常精致的作業(yè)調(diào)度系統(tǒng)
c.DAG中的依賴有寬依賴和窄依賴之分,DAG可以根據(jù)依賴對pipeline等進(jìn)行優(yōu)化操作
d.基于RDD和DAG并行計(jì)算整個Job.
4.出色的容錯機(jī)制
a.基于DAG圖,lineage是輕量級且高效的
b.操作之間相互具備lineage的關(guān)系,每個操作只關(guān)系其父操作,各個分片的數(shù)據(jù)之間互不影響,
出現(xiàn)錯誤時(shí)只要恢復(fù)單個split的特定部分
覺得spark挺好用的,但是有一些場景還是不適用
歡迎各位大神來指點(diǎn)