《Spark程式設計基礎》(Scala版)第三章簡答題答案(自制)

100%Jacker_Channel發表於2024-05-16

3 Spark 的設計與執行原理

簡答題

T1 Spark 是基於記憶體計算的大資料計算平臺,請闡述 Spark 的主要特點。🌱

答:

① 執行速度快:Spark使用先進的有向無環圖執行引擎,以支援迴圈資料流與記憶體計算;

② 容易使用:Spark 支援多種語言進行程式設計,簡潔的 API 設計有助於使用者輕鬆構建並行程式,並且可以透過 Spark Shell 進行互動式程式設計;

③ 通用性:Spark 提供了完整而強大的技術棧,包括SQL查詢、流式計算、機器學習和圖演算法元件,這些元件可以無縫整合在同一個應用中,足以應對複雜的計算;

④ 執行模式多樣:Spark 可執行於獨立的叢集模式中,或者執行於 Hadoop 中,也可執行於雲環境中,並且可以訪問 HDFS、HBase、Hive 等多種資料來源。

T2 Spark 的出現是為了解決 Hadoop MapReduce 的不足,試列舉 Hadoop MapReduce 的幾個缺陷,並說明 Spark 具備哪些優點。

答:

① Hadoop MapReduce 的缺陷:

(1)採用程序模型,任務啟動開銷較大;

(2)每次迭代計算都要從磁碟讀資料,計算完成後需要將中間結果寫入到磁碟中,I/O 開銷大。

(2)是個人理解

② Spark 的優點:

(1)多執行緒執行具體任務,減少任務啟動的開銷;

(2)Executor 中有一個 BlockManager 儲存模組,會將記憶體和磁碟共同作為儲存裝置,當需要多輪迭代計算時,可以將中間結果儲存到這個儲存模組裡,下次需要時,就可以直接讀取該儲存模組裡的資料,而不需要讀取HDFS等檔案系統的資料,因而有效減少了 I/O開銷;或者在互動式查詢場景下,預先將表快取到該儲存系統上,從而可以提高讀寫I/O效能。

T3 美國加州大學伯克利分校提出的資料分析軟體棧 BDAS 認為目前的大資料處理可以分為哪 3 個型別?

答:

① 複雜的批處理資料;

② 基於歷史資料的互動式查詢;

③ 基於實時資料流的資料處理。

T4 Spark 已打造出結構一體化、功能多樣化的大資料生態系統,請闡述 Spark 的生態系統。🌱

答:Spark 的設計遵循“一個軟體棧滿足不同應用場景”的理念,逐漸形成了一套完整的生態系統,既能夠提供記憶體計算框架,也可以支援SQL 即時查詢、實時流式計算、機器學習和圖計算等。

Spark 的生態系統主要包含了 Spark Core、Spark SQL、Spark Streaming、MLlib 和 GraphX 等元件,各個元件的具體功能如下:

① Spark Core: 包含 Spark 最基礎和最核心的功能,如記憶體計算、任務排程等,主要面向批資料處理。

② Spark SQL: 用於結構化資料處理的元件;允許開發人員直接處理 RDD,同時也可查詢 Hive、HBase 等外部資料來源。

③ Spark Streaming: 是一種流計算框架,可以支援高吞吐量、可容錯處理的實時流資料處理。

④ MLlib 和 GraphX:支援機器學習和圖計算。

T5 從 Hadoop+Storm 架構轉向 Spark 架構可帶來哪些好處?❌

答:

① 更高的效能:Spark採用記憶體計算模型,相對於 Hadoop+Storm 的磁碟讀寫操作,Spark 的計算速度更快。Spark 將資料儲存在記憶體中進行處理,可以有效地減少磁碟讀寫的開銷,從而提供更高的效能和更低的延遲。

② 更好的實時處理能力:Hadoop+Storm 架構中,實時資料處理主要由 Storm 負責,但 Storm 的處理延遲相對較高。而 Spark 具有更好的實時處理能力,透過 Spark Streaming 可以實時處理資料流,並提供低延遲的結果輸出。

③ 簡化的開發和管理:Spark 提供了簡潔易用的 API 和開發工具,使得開發人員能夠更快地構建和除錯大規模資料處理應用程式。

書上沒答案,按照自己理解整的

T6 請闡述 “Spark on YARN” 的概念。

答:Spark 可執行於 YARN 之上,與 Hadoop 進行統一部署,即 "Spark on YARN"。

T7 請闡述如下 Spark 的幾個主要概念:RDD、DAG、階段、分割槽、窄依賴、寬依賴。🌱

答:

① RDD:是彈性分散式資料集的簡稱,是分散式記憶體的一個抽象概念,提供了一種高度受限的共享記憶體模型;

② DAG:是有向無環圖的簡稱,反映 RDD 之間的依賴關係;

③ 階段:是作業的基本排程單位,一個作業會分為多組任務,每組任務被稱為“階段", 或者也被稱為“任務集”。

④ 分割槽:分割槽是將資料劃分為較小的塊,以便並行處理。RDD可以被分為多個分割槽,每個分割槽都是資料集的一個子集。

⑤ 寬依賴和窄依賴:這是 RDD 中的兩種依賴關係,其中,窄依賴不包含 Shuffle 操作,而寬依賴則包含 Shuffle 操作。窄依賴表現為一個父 RDD 的分割槽對應於一個子 RDD 的分割槽,或多個父 RDD 的分割槽對應於一個子 RDD 的分割槽;寬依賴則表現為存在一個父 RDD 的一個分割槽對應一個子 RDD 的多個分割槽。

T8 spark 對 RDD 的操作主要分為行動(Action)和轉換(Transformation)兩種型別,兩種操作的區別是什麼?🌱

答:轉換操作接受 RDD 並返回 RDD,而行動操作接受 RDD 但是返回非 RDD (即輸出一個值或結果)。

相關文章