天天看點

如何将 Hive 資料按分區歸檔到 OSS | 學習筆記

開發者學堂課程【資料湖 JindoFS + OSS 實操幹貨36講:如何将 Hive 資料按分區歸檔到 OSS】學習筆記,與課程緊密聯系,讓使用者快速學習知識。

課程位址:

https://developer.aliyun.com/learning/course/833/detail/13964

如何将 Hive 資料按分區歸檔到 OSS

内容介紹

一、背景/具體功能介紹

二、實作原理詳解

三、使用執行個體

傳統叢集架構

• 存儲計算一體

• 存儲量與計算量無法始終比對

• 存儲無法水準擴充

• 存儲與計算競争硬碟資源

如何将 Hive 資料按分區歸檔到 OSS | 學習筆記

存儲分層架構

• 計算資源動态伸縮

• 存儲資源使用雲存儲作為 HDFS 的替代或補充

• 相比存算分離架構,對于已有 HDFS 資料比較平滑,可以逐漸過渡到存算分離架構

如何将 Hive 資料按分區歸檔到 OSS | 學習筆記

資料倉庫

• 資料倉庫是大資料的典型場景

• 每天的 ETL 作業新增大量資料

• Hive 支援分區表,使用分區可以快速裁剪資料

• Hive 數倉中大量 Hive 表以時間日期作為分區字段

• 在數倉中很多表的較老的日期分區平常一般不會被通路,可以考慮把這部分資料移出 HDFS

• Hive 的每個分區都有自己的 storagedescriptor,可以有單獨的存儲路徑

分區表的結構

partitionedtablexx

• dt=2021-05-16/category=1/

• dt=2021-05-16/category=2/

• dt=2021-05-16/category=5/

• dt=2021-05-16/category=8/

• dt=2021-05-15/category=2/

• dt=2021-05-15/category=3/

• dt=2021-05-15/category=4/

• ……

使用 JindoTable 按分區歸檔資料

在本地盤機型上,HDFS 可以提供較好的性能,對叢集已有存儲空間也能較好利用.

一般情況下用不到的資料移動到 OSS,釋放叢集存儲空間,減小 NameNode 壓力.

需要讀取這部分資料時,也可以直接從 OSS 讀取,不影響上層作業.

每天 ETL 完成後可以移動資料.

• Jindodistcp 作為底層工具

• 使用 jindodistcp 事務模式

• 使用 HDFS 檔案鎖保證同一時間每個分區隻有一個作業在操作

• 先修改分區中繼資料再清理 hdfs 資料確定資料可用

參數 說明

要移動的表

目标路徑,為表級别的路徑,分區路徑會在這個路徑下自動建立

分區過濾條件表達式,支援基本運算符,不支援udf.

根據分區建立時間,建立時間超過給定天數的分區進行移動

整個moveTo任務的最大task并發度,預設為1

-o/-overWrite 是否覆寫最終目錄。分區級别覆寫,不會覆寫本次移動不涉及的分區

-r/-removeSource 是否在移動完成後删除源路徑

本地日志目錄,預設為/tmp//

-e/-explain 如果指定explain模式,不會觸發實際操作,僅列印會同步的分區

• 資料準備

• 移動分區字段 ds 大于 ‘b’的分區

如何将 Hive 資料按分區歸檔到 OSS | 學習筆記

• 檢查移動後的分區情況

如何将 Hive 資料按分區歸檔到 OSS | 學習筆記