柚子快報激活碼778899分享:大數據Flink面試考題
柚子快報激活碼778899分享:大數據Flink面試考題
9.fink的高可用模式,主要是防止 JobManager出現單點故障,確保集群的高可用。()
10 Hlink SoL底層 Runtime本身是一個流與批的統(tǒng)一的引擘, HlinkSQL可以做到AP層的流與 批統(tǒng)一。()
下面為模擬面試,假如面試官考你Flink相關,你該如何回答呢?
1.簡單介紹一下 Flink
Flink 核心是一個流式的數據流執(zhí)行引擎,其針對數據流的分布式計算提供了數據分布、數 據通信以及容錯機制等功能。 基于流執(zhí)行引擎,Flink 提供了諸多更高抽象層的 API 以便用戶編 寫分布式任務:DataSet API, 對靜態(tài)數據進行批處理操作,將靜態(tài)數據抽象成分布式的數據集, 用戶可以方便地使用 Flink 提供的各種操作符對分布式數據集進行處理,支持 Java、Scala 和 Python。DataStream API,對數據流進行流處理操作,將流式的數據抽象成分布式的數據流,用 戶可以方便地對分布式數據流進行各種操作,支持 Java 和 Scala。Table API,對結構化數據進 行查詢操作,將結構化數據抽象成關系表,并通過類 SQL 的 DSL 對關系表進行各種查詢操作,支 持 Java 和 Scala。此外,Flink 還針對特定的應用領域提供了領域庫,例如:Flink ML,Flink 的機器學習庫,提供了機器學習 Pipelines API 并實現了多種機器學習算法。Gelly,Flink 的圖 計算庫,提供了圖計算的相關 API 及多種圖計算算法實現。
2.Flink 相比 Spark Streaming 有什么區(qū)別?
架構模型上:Spark Streaming 的 task 運行依賴 driver 和 executor 和 worker,當然 driver 和 excutor 還依賴于集群管理器 Standalone 或者 yarn 等。而 Flink 運行時主要是 JobManager、 TaskManage 和 TaskSlot。另外一個最核心的區(qū)別是:Spark Streaming 是微批處理,運行的時 候需要指定批處理的時間,每次運行 job 時處理一個批次的數據;Flink 是基于事件驅動的, 事件可以理解為消息。事件驅動的應用程序是一種狀態(tài)應用程序,它會從一個或者多個流中注入 事件,通過觸發(fā)計算更新狀態(tài),或外部動作對注入的事件作出反應。 任務調度上:Spark Streaming 的調度分為構建 DGA 圖,劃分 stage,生成 taskset,調度 task 等步驟,而 Flink 首先會生成 StreamGraph,接著生成 JobGraph,然后將 jobGraph 提交 給 Jobmanager 由它完成 jobGraph 到 ExecutionGraph 的轉變,最后由 jobManager 調度執(zhí)行。 時間機制上:flink 支持三種時間機制事件時間,注入時間,處理時間,同時支持 watermark 機制處理滯后數據。Spark Streaming 只支持處理時間,Structured streaming 則支持了事件時 間和 watermark 機制。 容錯機制上:二者保證 exactly-once 的方式不同。spark streaming 通過保存 offset 和事 務的方式;Flink 則使用兩階段提交協(xié)議來解決這個問題。
3 Flink 中的分區(qū)策略有哪幾種?
分區(qū)策略是用來決定數據如何發(fā)送至下游。目前 Flink 支持了8中分區(qū)策略的實現。
1)GlobalPartitioner 數據會被分發(fā)到下游算子的第一個實例中進行處理。
2)ShufflePartitioner 數據會被隨機分發(fā)到下游算子的每一個實例中進行處理。
3)RebalancePartitioner 數據會被循環(huán)發(fā)送到下游的每一個實例中進行處理。
4)RescalePartitioner 這種分區(qū)器會根據上下游算子的并行度,循環(huán)的方式輸出到下游算子的每個實例。這里有點難以理解,假設上游并行度為2,編號為A和B。下游并行度為4,編號為1,2,3,4。那么A則把數據循環(huán)發(fā)送給1和2,B則把數據循環(huán)發(fā)送給3和4。假設上游并行度為4,編號為A,B,C,D。下游并行度為2,編號為1,2。那么A和B則把數據發(fā)送給1,C和D則把數據發(fā)送給2。
5)BroadcastPartitioner 廣播分區(qū)會將上游數據輸出到下游算子的每個實例中。適合于大數據集和小數據集做Jion的場景。
6)ForwardPartitioner ForwardPartitioner 用于將記錄輸出到下游本地的算子實例。它要求上下游算子并行度一樣。簡單的說,ForwardPartitioner用來做數據的控制臺打印。
7)KeyGroupStreamPartitioner Hash分區(qū)器。會將數據按 Key 的 Hash 值輸出到下游算子實例中。
8)CustomPartitionerWrapper 用戶自定義分區(qū)器。需要用戶自己實現Partitioner接口,來定義自己的分區(qū)邏輯
4 Flink 的并行度有了解嗎?Flink 中設置并行度需要注意什么?
柚子快報激活碼778899分享:大數據Flink面試考題
好文推薦
本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。