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

100%Jacker_Channel發表於2024-05-16

7 Spark Streaming

簡答題

T1 請闡述靜態資料和流資料的區別?

答:靜態資料是可以看作是靜止不動的,適合進行批次計算;流資料是指資料以大量、快速、時變的流形式持續到達的,適合進行實時計算。同時,流計算被處理後,只有部分進入資料庫成為靜態資料,其餘部分則被丟棄。

T2 請闡述批次計算和實時計算的區別。🌱

答:批次計算是以"靜態資料"為物件,可以在很充裕的時間內對海量資料進行批次處理,計算得到有價值的資訊;實時計算需要在資料到達時立即處理,實時得到計算結果,只有部分最終會成為有效資訊。

T3 對一個流計算而言,在功能設計上應該實現哪些需求?🌱

答:

① 高效能:這是處理大資料的基本要求,如每秒處理幾十萬條資料;

② 海量式:支援 TB 級甚至是 PB 級的資料規模;

③ 實時性:必須保證一個較低的延遲時間;

④ 分散式:支援大資料的基本架構,必須能夠平滑擴充套件;

⑤ 易用性:能夠快速進行開發和部署;

⑥ 可靠性:能可靠的處理流資料。

T4 請闡述典型的流計算框架有哪些?

答:可以分為三類:

① 商業級的流計算平臺,如 IBM StreamBase;

② 開源流計算框架,如 Twitter Strom;

③ 公司為支援自身業務開發的流計算框架,如 DStream。

T5 請闡述流計算的基本處理流程。🌱

答:

① 資料實時採集:採集多個資料來源的海量資料,需要保證實時性、低延遲與穩定可靠;

② 資料實時計算:對採集的資料進行實時地進行分析計算,並反饋實時結果;

③ 資料實時查詢:不斷更新結果,並將使用者所需的結果實時推送給使用者。

T6 請闡述資料採集系統各部分的組成及其功能。

答:通常有三個部分:

① Agent:主動採集資料,並將資料推送到 Colletcor 部分;

② Collector:接收多個 Agent 資料,並實現有序、可靠、高效能的轉發;

③ Store:儲存 Collector 轉發過來的資料。

T7 請闡述實時計算的基本流程。❌

答:流處理系統接受資料採集系統不斷髮來的實時資料,實時地進行分析計算,並反饋實時結果;經流處理系統處理後的資料,可視情況儲存,以便之後進行分析計算;在時效性較高的場景中,處理後的資料也可以直接丟棄。

T8 請闡述 Spark Streaming 設計的基本原理。

答:是將實時資料流以時間片為單位進行拆分,然後採用 Spark 引擎以類似批處理的方式處理每個時間片資料。

T9 請對 Spark Streaming 和 Storm 進行比較,它們各自有什麼優缺點?

答:

① Spark Streaming 的優缺點:

(1)優點:

  1. 相比於 Storm,RDD 的更容易做高效的容錯處理;
  2. 採用的小批次處理方式。使它可以同時相容批次資料處理和實時資料處理的邏輯與演算法,方便一些需要歷史資料和實時資料聯合分析的特定應用場合。

(2)缺點:

  1. 無法實現毫秒級的響應。因為其將流資料分解為一系列批處理作業,產生多個 Spark 作業,導致對每一段的資料處理需要經過 Spark 作業的流程,產生較大時間開銷;

② Storm 的優缺點:

(1)優點:

  1. 處理的資料單位為元組,只會產生極小的延遲。

(2)缺點:沒有 Spark Streaming 上述優點。

這缺點又要重新說一遍,但不寫這個格式又對不上題目要求。

T10 企業應用中的”Hadoop+Storm“結構是如何部署的。

答:Hadoop 和 Storm 框架部署在資源管理框架 YARN(或 Mesos) 之上,接受統一的資源管理和排程,並共享底層的資料儲存;其中 Hadoop 負責對批次歷史資料的實時查詢和離線分析,而 Storm 負責對流資料的實時處理。

T11 請闡述 Spark Streaming 的工作機制。🌱

答:Spark Streaming 中的元件 Receiver 作為一個長期執行的任務(task)執行一個 Executor 上,每個 Receiver 會負責一個 Dstream 輸入流,接受到資料來源發來的資料後,會提交給 Spark Streaming 程式處理,處理後的結果既可以交給視覺化元件進行視覺化展示,也可以寫入 HDFS 或者 HBase 中。

Receiver 收到資料來源的資料,交給程式處理,結果可以視覺化展示或者寫入HDFS或者HBase。

T12 闡述 Spark Streaming 程式編寫的基本步驟。🌱

答:

① 透過建立輸入 DStream 來定義輸入源。輸入源會源源不斷地產生資料,並將資料傳送給 Spark Streaming,Receiver 收到資料後會交給使用者自定義的 Spark Streaming 程式處理;

② 透過對 DStream 應用轉換操作和輸出操作來定義流計算;

③ 呼叫 StreamingContext 物件中的 start() 方法來開始接受資料和處理流程;

④ 透過呼叫 StreamingContext 物件的 awaitTermination() 方法來等待計算流計算程序結束或者呼叫 stop() 方法手動結束流計算程序。

定義輸入源(DStream)->定義計算過程(DStream;轉換 輸出操作)->開始(StreamingContext;start())->結束(等待,awaitTermination() ;手動 stop())

T13 Spark Streaming 主要包括哪 3 種型別的基本資料來源?

答:檔案流、套接字流和 RDD 佇列流。

T14 請闡述使用 Kafka 作為 Spark 資料來源時,如何編寫 Spark Streaming 應用程式。

答:

① 編寫生產者(Producer)程式;

② 編寫消費者(Consumer)程式;

③ 編寫日誌格式設定程式;

④ 編譯打包程式;

⑤ 執行程式。

T15 請闡述 Dstream 有狀態轉換操作和無狀態轉換操作區別。

答:

① 無狀態轉換操作:不會記錄歷史狀態資訊,每次對新的批次資料進行處理時,只會記錄當前批次資料的情況;

② 有狀態轉換操作:

(1)透過滑動視窗記錄歷史狀態資訊,每次對新的批次資料進行處理時,如果之前出現過且仍在視窗內,會將新的狀態資訊和歷史狀態資訊結合記錄;如果之前未出現過,則僅記錄新的狀態資訊。

(2)支援跨批次操作( updateStateByKey )。

相關文章