Flink 做爲現代數據倉庫的統一引擎:Hive 集成生產就緒!

在2020年,你的數據倉庫和基礎設施須要知足哪些需求?html

咱們總結了幾下幾點:apache

首先,當下的企業正快速轉向更實時化的模式,這要求企業具有對線上流式數據進行低延遲處理的能力,以知足實時(real-time)或近實時(near-real-time)的數據分析需求。人們對從數據產生到數據可用之間延遲的容忍度愈來愈低。曾經幾個小時甚至幾天的延誤再也不被接受。用戶期待的是幾分鐘甚至幾秒鐘的數據端到端體驗。架構

第二,數據基礎設施須要具有同時處理線上和線下數據的能力,兩種模式在實際應用中都不可或缺。除了上面提到的流處理,用戶也須要批處理作即席查詢(ad-hoc query)和數據挖掘。數據基礎設施不該該要求用戶二選一,而應該提供兩個選項而且都是高質量的。框架

第三,數據工程師、數據科學家、分析師和運維人員都在渴望一套統一的數據技術棧,以便更輕鬆的使用。大數據領域的技術棧已經支離破碎不少年了,企業可能有一套流處理系統,一套批處理系統,一套線上數據分析系統。這基本都是因爲當年流處理框架不夠成熟而被迫採用過期的 lambda 架構形成的問題。如今不一樣了,流處理已成爲主流,終端用戶沒必要再學習多種技能和維護各類複雜的工具和數據處理管道(data pipeline)。用戶渴望的是一套統一的簡單易學易維護的方案。運維

若是你對以上問題深有同感,那說明這篇文章很適合你。咱們來看看如何真正解決這個問題。函數

接下來我將帶各位瞭解下 Flink 與 Hive 生產級別的整合工做。工具

Flink 與 Hive 生產級整合

Flink 一直遵循「 流優先,批是流的一個特例」的思想理念。在這一思想的指導下,Flink 將最早進的流式處理技術運用到批處理中,使得 Flink 的批處理能力一早就使人印象深入。特別是在 Flink 1.10 中咱們基本完成了從1.9開始的對 Blink planner 的整合工做後,Flink SQL 的批處理能力更上一層樓。oop

Hive 在大數據生態中已成爲標準的數據倉庫組件。它不只僅是一個 SQL 引擎,也是一個數據管理系統。但因爲自身的侷限,Hive 在當下面臨很大的挑戰,也沒法知足的用戶需求。學習

基於此,咱們從 Flink 1.9 推出了 Flink 和 Hive 整合的 beta 版本。在過去幾個月中,咱們基於用戶的反饋,在各個方面都對產品進行了增強。我很高興的宣佈,Flink 和 Hive 的整合在 Flink 1.10 版本中能實現生產可用!大數據

下面來爲你們介紹一些細節。

統一的元數據管理

Hive Metastore 已逐漸成爲 Hadoop 生態中元數據管理的中樞。不少公司都用 Hive Metastore 管理他們的 Hive 甚至非 Hive 的元數據。

Flink 1.9 中咱們推出了 Flink 的 HiveCatalog,將 Flink 對接 Hive Metastore 中豐富的元數據。HiveCatalog 有兩層做用。

  • 一是它容許 Flink 用戶將 Flink 自己的元數據,包括表、函數等,存儲到 Hive Metastore 中。
  • 二是它容許 Flink 使用 Hive Metastore 中已有的 Hive 元數據,使得 Flink 能夠讀寫 Hive 的表。

Flink 1.10 中的新功能是用戶能夠對接幾乎全部版本的 Hive Metastore。這裏有一個例子是如何將 Flink 的 Kafka 表元數據存儲到 Hive Metastore 中。

代碼示例:
https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/hive/hive_catalog.html#example

流處理

因爲 Hive 自身的缺陷,用戶沒法得到實時數據導入的能力。但經過與 Flink 的整合,用戶能夠解鎖一些其餘頗有用的場景,好比:

  • 對 Flink 的實時數據和 Hive 的離線數據作 join
  • 經過 Flink 回填 Hive 的數據

Hive 版本兼容

在 Flink 1.10 中,咱們兼容了幾乎全部 Hive 1.x, 2.x, 3.x 的版本。

複用 Hive 函數

在 Flink 1.9 中用戶已經能夠複用 Hive UDF。這對 Hive 用戶是極大的利好,由於用戶不須要再從新開發函數,省時省力。

Flink 1.10 引入了 module 的概念,並經過 HiveModule 支持了全部 Hive 自帶的函數(built-in functions)。Hive 社區在過去不少年積累了數量可觀的有用的自帶函數,這將方便用戶在 Flink 更好地完成他們的工做。

增強讀寫 Hive 數據

1.10 增強了對 Hive 數據讀寫的支持。

在讀方面,Flink 能夠讀取 Hive 的分區表和視圖(view);同時,咱們添加了不少讀優化,好比分區裁剪(partition-pruning)和 projection pushdown 來減小從文件系統攝入的數據;對 ORC 文件,咱們加入了向量化讀取。

在寫方面,Flink 引入了「INSERT INTO」 和 「INSERT OVERWRITE」 語法;此外,Flink 能夠靜態和動態寫入 Hive 分區表。

更多的數據類型

1.10 中咱們支持了更多的經常使用 Hive 類型。

後續規劃

社區計劃在用戶反饋的基礎上進一步優化兩個系統間的整合。一些 1.11 的目標包括:

  • Hive 的 near-real-time streaming sink
  • 原生 Parquet 文件讀取
  • 額外的交互性 - 容許用戶從 Flink 建立 Hive 的表和函數等
  • 更好地開箱即用性
  • Hive 語法的支持

數倉正在向更實時化的方向發展,與 Flink 的緊密結合會使這個趨勢向前更進一步。

Flink 1.10 中與 Hive 在元數據和數據領域生產級別的結合,都能使用戶更好地解決實際問題,爲業務帶來更多價值。

相關文章
相關標籤/搜索