flink實戰--面試大全

第一部分:Flink 中的核心概念和基礎考察

一、 簡單介紹一下 Flink

Flink 是一個框架和分佈式處理引擎,用於對無界和有界數據流進行有狀態計算。並且 Flink 提供了數據分佈、容錯機制以及資源管理等核心功能。

Flink提供了諸多高抽象層的API以便用戶編寫分佈式任務:

  • DataSet API, 對靜態數據進行批處理操作,將靜態數據抽象成分佈式的數據集,用戶可以方便地使用Flink提供的各種操作符對分佈式數據集進行處理,支持Java、Scala和Python。
  • DataStream API,對數據流進行流處理操作,將流式的數據抽象成分佈式的數據流,用戶可以方便地對分佈式數據流進行各種操作,支持Java和Scala。
  • Table API,對結構化數據進行查詢操作,將結構化數據抽象成關係表,並通過類SQL的DSL對關係表進行各種查詢操作,支持Java和Scala。

此外,Flink 還針對特定的應用領域提供了領域庫,例如:
Flink ML,Flink 的機器學習庫,提供了機器學習Pipelines API並實現了多種機器學習算法。
Gelly,Flink 的圖計算庫,提供了圖計算的相關API及多種圖計算算法實現。

根據官網的介紹,Flink 的特性包含:

支持高吞吐、低延遲、高性能的流處理
支持帶有事件時間的窗口 (Window) 操作
支持有狀態計算的 Exactly-once 語義
支持高度靈活的窗口 (Window) 操作,支持基於 time、count、session 以及 data-driven 的窗口操作
支持具有 Backpressure 功能的持續流模型
支持基於輕量級分佈式快照(Snapshot)實現的容錯
一個運行時同時支持 Batch on Streaming 處理和 Streaming 處理
Flink 在 JVM 內部實現了自己的內存管理
支持迭代計算
支持程序自動優化:避免特定情況下 Shuffle、排序等昂貴操作,中間結
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章