1. 程式人生 > >Apache Flink-常見問答

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元件整合,例如,HDFSYARN, or HBase。當和這些元件一起執行時,Flink可以使用HDFS去讀取資料,或寫入結果和檢查點/快照。Flink可以通過YARN輕易部署並和YARN和HDFS kerberos安全模組整合。

Flink還可以執行在哪些堆疊上?

使用者可以在 KubernetesMesosDocker上執行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頁面。