Apache Flink-常見問答
通常以下問題在Flink專案中經常被問到。
如果有更多問題,請查詢相關文件或在社群中提問。
目錄:
- Apache Flink只適用於(準)實時的應用場景嗎?
- 如何一切都是流,為什麼Flink中會存在DataStream API和DataSet API?
- Flink如何和Hadoop棧關聯起來?
- Flink還可以執行在哪些堆疊上?
- 使用Flink的前提條件是什麼?
- Flink支援什麼樣的規模?
- Flink是否僅限於記憶體中的資料集?
常見錯誤資訊。
Apache Flink只適用於(準)實時的應用場景嗎?
Flink是一個非常通用的資料處理和資料驅動應用程式的系統,以資料流作為核心構建塊。這些流可以使實時資料流,或歷史資料的儲存流。例如,在Flink中一個檔案就是位元組儲存流。基於此,Flink即支援實時處理和應用,也支援批處理應用程式。
流可以使無邊界的(沒有結束,事件持續到達),也可以是有邊界的(流有一個開始和結束)。例如,來自訊息佇列中的Twitter資料通常是無界的,而來自檔案的位元組流是有界的。
如何一切都是流,為什麼Flink中會存在DataStream API和DataSet API?
處理邊界流通常比處理無邊界流更加高效。在(準)實時處理無邊界事件流中需要系統立即處理事件並生成結果(通常要求低延遲)。處理邊界流通常不需要低延遲給出結果,因為資料是舊的(相對而言)。這就使得Flink以一種簡單和更加高效的方式去處理。
DataStream API捕獲有界和無界流的持續處理,這種模式支援低延遲產出結果和對事件和時間的靈活反應(包含事件時間)。
DataSet API有可以加快邊界資料流處理的技術,在未來,社群計劃把這些優化和DataStream API合併。
Flink如何和Hadoop棧關聯起來?
Flink獨立於Apache Hadoop,其執行不需要任何Hadoop依賴。
然而,Flink可以的和許多Hadoop元件整合,例如,HDFS, YARN, or HBase。當和這些元件一起執行時,Flink可以使用HDFS去讀取資料,或寫入結果和檢查點/快照。Flink可以通過YARN輕易部署並和YARN和HDFS kerberos安全模組整合。
Flink還可以執行在哪些堆疊上?
使用者可以在 Kubernetes, Mesos, Docker上執行Flink,或者單獨對外服務。
使用Flink的前提條件是什麼?
- 你需要Java 8執行Flink任務或應用
- Scala API(可選)依賴Scala 2.11
- 藉助 Apache ZooKeeper進行高可用配置以至於不存在單點失敗故障
- 配置了高可用的流處理可以從失敗中恢復,Flink需要為檢查點分散式儲存(HDFS / S3 / NFS / SAN / GFS / Kosmos / Ceph / …)
Flink支援什麼樣的規模?
使用者既可以在非常小的配置下(少於5個節點)執行Flink jobs,也可以在有上千節點TB級狀態下執行。
Flink是否僅限於記憶體中的資料集?
對於DataStream API, Flink支援大於記憶體的狀態進行RocksDB狀態後端配置。
對於DataSet API, 所有的操作(except delta-iterations)可以超過主存擴充套件。
常見錯誤資訊
常見錯誤資訊列在Getting Help頁面。