回覆列表
  • 1 # 優悠嚴選

    Spark定義

    a.是一個通用的大規模資料快速處理引擎。

    b.Spark就是一個大資料分散式處理框架。

    3.Spark在效能和方案的統一性都具有顯著的優勢。

    Spark使用SparkSQL、Spark Streaming、MLlib、Graph幾乎完美地解決了大資料中的Batch Processing、Stream Processing、Ad-hocQuery(即席查詢)等三大核心問題。如何學習Spark配置spark環境:先安裝linux,java,Scala,spark等軟體,配置環境變數,搭建叢集。建議你先熟悉一下linux系統。學習scala語言 ,函數語言程式設計,這些有點難度。我是學java過來的,感覺很不適應,語法感覺很怪,需要冷靜下來好好學習,trait ,object 伴生物件,柯里化等概念還是需要好好理解的,他也有很多好處,比如apply()方法,很方便的新建一個物件那個,用得多了,就覺得很好用,我現在就覺得很好用,學過java好理解一些,本質一樣,表達方式不同而已。建議您學習一下java。spark學習,最好學習spark的方式就是看官方文件,跟著官方文件過一遍手,基本就理解的差不多啦,接下來用idea整合程式設計完成的程式,除錯測試等,基本就可以上手啦!接下深入理解就看原始碼,深入Spark核心,透過原始碼掌握Spark的任務提交過程,掌握Spark叢集的任務排程,尤其要精通DAGScheduler、TaskScheduler和Worker節點內部的工作的每一步的細節。

    基於Spark上的核心框架的使用,學習SparkSQL(關係型操作)、Spark Streaming(實時處理)、MLlib(機器學習)、GraphX(圖處理)這些。

    場景

    Spark是一個分散式記憶體型計算框架,吸收MR的優點,以RDD資料來表示模型,提供多種運算元,例如map|filter|flatMap|sample|groupByKey|reduceByKey|union|join等,並將中間資料放到記憶體中,使得迭代運算效率更高,更適合於實時計算|互動式計算或者要求計算量大、效率要求高等場景。與Yarn的結合,使得Spark可以與MR執行與同一個叢集中,共享儲存資源與計算資源,不斷完善的SparkSQL,可以與Hive相容,大大增強了Spark的應用範圍及優越性。

    Spark是基於記憶體的迭代計算框架,適用於需要多次操作特定資料集的應用場合。需要反覆操作的次數越多,所需讀取的資料量越大,受益越大,資料量小但是計算密集度較大的場合,受益就相對較小。

    總的來說Spark的適用面比較廣泛且比較通用。

    Spark的特點

    a.快速基於記憶體計算速度是MR的100倍,基於磁碟計算的速度是MR的10倍

    快的原因是:Spark有一個DAG(有向無環圖)執行引擎,支援迴圈資料流和記憶體計算。

    b.易用

    提供多語言的API,能快速實現應用,相比MR有簡潔的程式碼,安裝部署簡單

    c.通用

    提供一個強大的技術棧,包括查詢語言SparkSQL、實時流處理工具Spark Streaming、機器學習工具MLlib、圖計算工具GraphX, Spark的目的在於構建一個結構上一體化功能上多元化的高效資料流水線技術棧。

    d.整合Hadoop

    Spark可以執行在YARN上,可以讀取Hadoop的任何資料

    下面是Spark生態系統

    Spark Core:它包含Spark的基本功能(任務排程、記憶體管理、故障恢復以及儲存系統的互動),包含RDD|Stage|DAG|它的核心思想就是將資料快取在記憶體中,並用Lineage機制容錯。

    a.RDD:

    Resilient Distributed DataSets,是分散式只讀的且已分割槽的集合物件。

    這些集合是彈性的,如果資料集的一部分丟失,則可以對它們進行重建。

    具有自動容錯|位置感知排程|可伸縮性的特點。

    對於記錄資料的更新,RDD也只支援粗粒度的轉換(記錄如何從其他RDD轉換而來即Lineage,以便恢復丟失的分割槽)

    資料集容錯的兩種方式:資料檢查點(成本高,伺服器之間的傳輸的問題)和記錄資料的更新。

    Spark大資料處理框架

    1.Spark速度快的原因

    a.統一的RDD抽象和操作:Spark基於RDD抽象,使得Spark的框架輕而易舉地使用Spark Core中的所有內容, 並且各個框架可以在記憶體中無縫地整合和完成系統任務。

    b.Spark是基於統一的技術堆疊。

    2.基於記憶體的迭代式計算

    MR在每次執行時都要從磁碟讀資料,計算完畢之後都要把資料存放在磁碟上。

    Spark是基於記憶體的,每次運算都是在記憶體中計算的。

    3.DAG

    a.是另外一個快的重要原因

    b.基於RDD,Spark具備了非常精緻的作業排程系統

    c.DAG中的依賴有寬依賴和窄依賴之分,DAG可以根據依賴對pipeline等進行最佳化操作

    d.基於RDD和DAG平行計算整個Job.

    4.出色的容錯機制

    a.基於DAG圖,lineage是輕量級且高效的

    b.操作之間相互具備lineage的關係,每個操作只關係其父操作,各個分片的資料之間互不影響,

    出現錯誤時只要恢復單個split的特定部分

    覺得spark挺好用的,但是有一些場景還是不適用

  • 中秋節和大豐收的關聯?
  • 為什麼我們這代人上班比父母那一代更痛苦?