
張安站
Spark是不斷壯大的大數據分析解決方案家族中備受關注的新成員。它不僅爲分佈式數據集的處理提供了一個有效框架,而且以高效的方式處理分佈式數據集。它支持實時處理、流處理和批處理,提供了統一的解決方案,因此極具競爭力。本書以源碼爲基礎,深入分析Spark內核的設計理念和架構實現,系統講解各個核心模塊的實現,爲性能調優、二次開發和系統運維提供理論支持,爲更好地使用Spark Streaming、MLlib、Spark SQL和GraphX等奠定基礎。
這本書原理講得挺好,看使用場景和示例可以找其他書結合。 spark是基於分佈式彈性數據集RDD爲基礎的高性能,易用,通用,生態豐富的準實時流式計算框架,依託zookeeper實現高可用,提供rdd,sparkSQL,dataframe多種操作接口,支持hbase,json,parequt等多種數據對接。運維時關注master異常退出,worker異常退出,excutor異常退出。調優時關注shuffle階段,搞清楚寬依賴,窄依賴的staege劃分。
從整體把關,分部介紹,層次分明表述精煉,作爲入門可以選擇,工作兩三年的也可以從中學到加深對底層運作的理解
寫得不好,很多地方沒講明白,信息量很小
算是講spark的書比較不錯的了
首先從生態視角來看 Spark:通用大數據快速處理引擎。可以基於Hadoop上存儲的大數據(HDFS、Hive、HBase等任何實現了Hadoop接口的存儲系統)進行計算。 Spark按照功能側重點劃分爲幾個模塊:Spark Core、Spark SQL、Spark Streaming、Spark MLlib、GraphX。這幾個模塊都是基於Spark Core的關鍵抽象RDD做了擴展。 讀完簡單總結如下: 1. Spark Core:Spark的核心模塊,主要就是對計算引擎本身的抽象和實現。 2. Spark Streaming:以流就是無限個小批次,實現這樣來定義的流式計算。(Flink正好相反,本質上就是對一個事物從兩個對立面的不同解釋,並按照自己的解釋實現了各自的流批統一的計算引擎)。 3. Spark MLlib:利用Spark自身作爲計算引擎,提供的機器學習庫。 4. Spark SQL:提供SQL調用來簡化Spark計算引擎的學習成本,方面做數據不同維度的分析和挖掘等。 從計算引擎實現方面分析,共實現5個核心抽象,分別是: (1) Application:Spark應用程序 (2) Driver:驅動程序 (3) Cluster Manager:資源管理器 (4) Worker:計算節點 (5) Executor:執行器 從計算邏輯實現了4個核心抽象,分別是: (1) RDD:彈性分佈式數據集 (2) Narrow Dependency:窄依賴 (3) Shuffle Dependency:寬依賴 (4) DAG:有向無環圖 從計算調度實現方面的6個核心抽象,分別是: (1) DAGScheduler:有向無環圖調度器 (2) TaskScheduler:任務調度器 (3) Job:作業 (4) Stage:調度階段 (5) TaskSet:任務集 (6) Task:任務 其次從技術選型上來看 Spark作爲MapReduce的繼承者,Spark主要有三個優點: (1) Spark非常好用。由於高級API剝離了對集羣本身的關注,你可以專注於你所要做的計算本身,只需要在自己的筆記本電腦上就可以開發Spark應用。支持交互式使用和複雜算法。 (2) Spark非常快。相對於MapReduce而言,基於內存的計算更多,網絡磁盤I/O更少。 (3) Spark是一個通用的計算框架。 * 可以用他來完成更豐富的計算,包括SQL查詢、文本處理、機器學習等,而不用學習各種各樣的引擎來分別處理這些需求。 * 軟件棧中所有程序和高級組件都可以從下層的改進中獲益, * 運行整個軟件棧的代價變小。部署多個獨立軟件變成了只需部署一個軟件。 對比Mapreduce 1. 優勢 (1) 依靠Scala強有力的函數式編程。 (2) Actor通信模式,akka做底層架構。 (3) Spark是基於內存的計算模型,很多計算可以直接在內存中進行,例如map、filter等轉換算子,使得其靈活簡單;而MapReduce模型死板,很小的一個操作都要經過完整的shuffle,shuffle包含了大量磁盤、網絡等I/O。 (4) 數據共享快,省去了mapreduce的shuffle過程中至少三次存入磁盤所帶來的額外開銷。 (5) Spark的DAG做的好,越靠近編譯器,就性能越好,優化也更好。 (6) 任務使用線程啓動並執行,比mapreduce使用進程執行任務要有很大優勢。 (7) delay scheduling -- 延遲執行。 2. 缺點 真正面對大數據時候,在沒有進行調優的情況下,可能會出現各種各樣的問題,比如OOM內存溢出。而MapReduce雖然慢,但不至於OOM。 對比Storm 節點 worker與 supervisor、nimbus的區別 進程 executor與 worker區別 線程 core 與executor的區別 任務 task(對應spout/bolt實例) task(對應spout/bolt實例,沒有太大區別。
寫的非常用功的一本書,特別是調度架構之前沒有太多關注,學習之後才發現spark開放出的調度接口給了用戶更多的選擇。其次是job, stage, task也非常好。因爲本書針對的版本比較低,shuffle和storage美中不足,但也很精彩
RDD shuffle 等原理以及Storage概念相關的內容,設計思想和分佈式數據庫原理有深刻的剖析,值得學習
很不錯的書,作者對源碼還是很有心得的
作者肯定是看過Spark源碼的,但是把自己看過的講給別人聽,這個做的並不好
版本雖然老了點,但看完還是有收穫的