線上環境對 Apache Hive 和 HDFS 執行 Cloudera Backup and Disaster Re-covery 之考量事項
瞭解Apache Hive 中繼資料的備份功能以及自動化HDFS 快照的一致性優點對線上環境有哪些好處。
兼顧正確性與執行效率的健全的備份解決方案是所有線上資料管理系統所不可或缺的。Backup and Disaster Recovery (BDR) 是Cloudera Enterprise 中一項Cloudera Manager 功能,可對CDH 叢集中的資料進行一致、有效率的備份以及版本管理。您可以利用Cloudera Enterprise BDR 針對來自多個叢集的HDFS 和Hive 資料建立有效率的增量備份,無論叢集在資料中心內或在資料中心之間並橫跨廣大的地理區域。(一位客戶利用Cloudera Enterprise BDR 成功在一次備份作業中備份500TB 的線上資料,而且讓該複本與執行關鍵任務分析工作負載的線上叢集中分散在500 個節點以上的超過5 千萬個檔案的增量複本保持一致。)
Cloudera Enterprise BDR 支援兩種備份機制,一種適用於HDFS 而另一種適用於Hive。此外,Cloudera Enterprise BDR 透過快照政策讓HDFS 自動化快照建立更加便利,此政策可用來控制資料版本並且藉由無縫的時間點復原功能保護資料避免被不慎刪除。
本文接下來會敘述這些功能和Cloudera Enterprise BDR 的其他差異化功能,並歸納Cloudera 方法中影響其線上效能的諸個面向的特色。我們也會針對不同機制的效用以及使用時機作出建議。最後,您將會瞭解多種功能和選項,協助您在需求最高的使用案例中加速Cloudera Enterprise BDR 的效能,以利滿足線上環境的要求。
線上部署的考慮事項
首先,讓我們先回顧關於備份和執行快照的一些基礎概念,以及在線上部署中使用Cloudera Enterprise BDR 時這些概念如何適用。
持續與預定備份
持續/基於記錄的備份系統可以用同步或非同步的方式針對這些變更的來源進行備份,而且在大部份情況下是立即進行備份,幾乎甚少延遲(若正確執行備份的話)。這些系統根據來源叢集上的變更順序進行資料備份,而且萬一對目標資料所做的變更造成資料不一致的問題時,最好的情況下可以讓資料失效,並重新恢復來自來源的所有資料。
相反的,預定/基於狀態的備份系統則按照固定的時間表運行,有一個確定的備份時間,可由操作人員直接控制。這類系統會根據來源和目標叢集目前的狀態以增量方式備份資料,它在某個時間點參考來源叢集的資料,設法一直更新目標叢集至一致的狀態。
Cloudera Enterprise BDR 的例子屬於後者:按照您的要求,資料會從來源叢集移動到目標叢集,唯有您的工作負載設定檔允許時,才會耗用叢集資源。下表總結了主要的實際區別:
功能 |
Cloudera Manager BDR |
持續備份系統 |
---|---|---|
來源一致的複本 |
? |
? |
錯誤散播 |
操作人員知道資料的備份時間。操作人員可以暫停預定備份來解決暫時性的資料完整性問題然後再繼續執行,效能不會顯著下降。 |
該備份會密切或立即追蹤來源,所以不好的資料也會立即散播到目標。 |
資料版本控制 (來源與目標) |
可藉由快照政策使用 |
在備份解決方案以外需有另一解決方案 |
資源使用率控管 |
BDR 允許您嚴格控管備份工作所佔用的網路頻寬數量,以及 CPU 資源的數量 (透過 MapReduce 資源池管理) 和 BDR 備份對其他叢集工作負載的相對優先順序。 |
一般不提供,或是可控制 |
備份概念
HDFS 備份
HDFS 備份功能會把來源CDH 叢集的HDFS 資料備份到目標CDH 叢集,並以有效運用頻寬方式增量備份這些資料。
這個流程包括在叢集上啟動備份程序,而備份程序會執行下列步驟:
-
複製列表:針對來源HDFS 上必須複製到目標的候選檔案路徑建立一份清單。這個步驟在單一主機上執行(即啟動程序的主機)。
-
複製映射程序:在複製列表之後便會啟動MR 工作,把複製列表階段產生的清單中的檔案複製起來。叢集中的多個主機會以MapReduce 應用程式的形式利用特定的資源池執行這個步驟。
-
化簡程序:在複製映射階段的最後會執行這個程序,並產生累計的統計數據。若來源叢集上刪除了檔案,它也會刪除目標叢集上對應的檔案。
-
複製提交程序:在化簡階段結束後執行並複製與HDFS 權限、ACL 和延伸屬性相關的其他資訊。
Hive 備份
Hive 與Apache Impala (incubating) 並未具有原生的備份機制,叢集之間無法傳送一致的資料。Cloudera Enterprise BDR 提供一個解決方案,讓叢集之間可以一致地備份資料和中繼資料。
Hive 備份含有一系列步驟,可以將來源叢集的Hive 和Impala 中繼資料和資料一致地備份到目標叢集,包括:
-
匯出來源叢集的中繼資料(資料庫、表格、分割區、索引、impala 使用者定義的函式定義)。
-
驗證中繼資料與目標叢集是否相容。
-
把相對應的HDFS 資料從來源叢集備份到目標叢集。
-
把中繼資料匯入目標叢集。
利用雙向備份改善叢集使用率
有些其他供應商僅允許您在多個Hadoop 相容的檔案系統之間單向備份所有資料。
不過,HDFS 備份功能可以在不同叢集之間個別備份不同檔案和目錄,所以兩個HDFS 叢集可以有效地互相備份資料。因此,您在線上環境可使用兩個叢集(互相備份),卻同時可以在兩個以上的資料中心保有資料副本,達成備援要求。
同樣的,Hive 備份也可以單獨備份不同的表格和資料庫。這樣一來,執行Hive 的兩個線上CDH 叢集便能互相備份,只要個別叢集上的表格/資料庫空間獨立分開(不相交集合)。
而且,您可以藉由完整的API 控制功能決定何時和用何種速度備份(以及要使用哪些CPU 資源),按照您要的節奏和吞吐量進行備份。
HDFS 快照和快照政策
HDFS 提供透過HDFS 快照來控制內容版本的機制。BDR 允許您透過快照政策選擇您想要的快照產生頻率。
您必須透過HDFS 檔案瀏覽器先啟用一個目錄及其子系進行HDFS 快照。(如需詳細資訊請參閱這裡的Cloudera 說明文件。)
如前言所提及,快照政策用一個完全自動化的方法控制HDFS 資料的版本及儲存其歷史記錄。您可以利用這個功能儲存您最重要的資料在一段時間之內的多個版本,並控制這些版本的保留政策,這樣做有利於快速復原,還能馬上恢復對資料有害的或意外發生的變更。快照政策可以在已經啟用照快功能的目錄中按照使用者定義的頻率建立快照。
使用HDFS 快照控制資料版本
HDFS 快照是控制Hadoop 應用程式之重要資料的版本及保留該資料的便利方法,也能達到合法合規的目標。
-
Cloudera 建議所有資料目錄均設定快照政策,包括目前由資料庫(Hive、Impala、Apache HBase 等) 管理其資料的目錄,以及必須保留的任何使用者層級的資料(主目錄、維持業務連線性所必需的線上MR 工作輸出),以備不慎刪除資料時可使用。
-
許多企業組織均有資料保留政策,可以透過Cloudera Manager 控制自動建立快照的節奏。
-
您可以使用Cloudera Manager 透過HDFS 檔案瀏覽器UI 從快照復原資料。
何時使用快照
如下表所述,就使用案例和費用而言,HDFS 快照和HDFS 備份的區別甚大。
復原層面 |
快照 |
備份 |
---|---|---|
資料遺失情境 / 復原點目標 (RPO) |
遺失整個叢集便會遺失所有資料。 |
遺失來源叢集時資料遺失甚少或完全無遺失。 |
儲存間接費用 |
一般較少 (與快照之間的資料變更成比例)。刪除舊快照來降低間接費用。 |
2 倍 (需要兩個完整的叢集) |
增量費用 |
非常低廉 (立即建立快照) |
比較昂貴 (從上次備份開始必須識別 delta 備份) |
還原費用/復原時間目標 (RTO) |
相當便宜 (叢集之間 HDFS 複製) |
昂貴 (必須進行完整備份才能把資料複製回來)
|
Cloudera Enterprise BDR 如何輔助原生Hadoop 工具
Cloudera 已經針對Hadoop 的原生工具(例如Distcp) 引進好幾個增強功能,讓Cloudera Enterprise BDR 的HDFS 備份能夠滿足企業級應用程式的需求。額外的收獲是Cloudera Enterprise BDR 的發展直接影響了Hive、HDFS 和Impala 的特色功能發展藍圖,因為它提供全程整合的體驗(例如,無縫備份Impala 寫入作業)。
-
透過HDFS 快照保證資料一致性
在複製列表步驟當中會自動建立HDFS 快照,因為它會自動探查來源叢集中可建立快照的路徑;在複製完成後已快照的路徑會取代指定的原始來源路徑,保證一致、穩定的來源以利執行複製。 -
支援預定執行
Cloudera Manager 提供便利的預定備份機制,設計了許多備份的常見實用選項。您不需要設定或管理自己的cron-job 或是使用排程器。 -
支援多個Kerberos 領域
在安全的叢集中,Cloudera Enterprise BDR 支援來源和目標叢集位在不同的、非信任的Kerberos 領域。它允許管理各個叢集的對等Cloudera Manager 執行個體之間可以賦予明確的信任,在備份程序中讓兩個叢集之間透明地執行Kerberos 憑證快取。(如需詳細資訊請參閱文件。) -
恆定空間並行的複製列表
Cloudera 運用現代Hadoop 硬體上多核心的可用性,支援使用最多128 個同時執行的執行緒(預設20 個) 來並行執行複製列表步驟。這樣會大幅減少複製列表階段的執行時間。(Distcp 也有相似的增強功能,但是未針對磁碟空間或記憶體用量最佳化)。 -
不同Hadoop 版本叢集之間的備份(包括不同的主要版本,即CDH4/CDH5)
在不同環境中執行且CDH + Cloudera Manager 版本不同的個別Hadoop 叢集之間,Cloudera Enterprise BDR 可以實施許多複雜的備份情境。(注意:會有限制,包括不同CDH 版本的API 使用情況。請參考這裡的支援情境完整列表。) -
選擇性排除路徑
您可以用正規表示式來排除路徑,以便輕鬆清除複本中不重要資料的副本,包括暫存資料(例如.Trash)。複製這類資料可能嚴重影響儲存和備份效能,並有損RPO/RTO 的保證
新的實驗性功能
除了上述增強功能以外,Cloudera Enterprise BDR 也包含其他可在許多環境中使用的特色功能,可大幅改進效能卻並不是所有狀況均普遍適用。(重要注意事項:使用任何實驗性功能之前,務必先聯絡Cloudera 支援人員或是解決方案架構設計師!)
-
增強動態區塊分析(chunking)
Cloudera Enterprise BDR 利用動態區塊分析來建立複製作業的「區塊」,以利不同的映射程序複製資料。有兩項與區塊分析相關的增強功能可能對線上環境有幫助並允許動態建立不同大小的區塊。 -
依大小建立區塊
依大小把檔案結合成不同區塊,Cloudera Enterprise BDR 可以根據區塊的總體大小把區塊指派給映射器,如此能讓區塊分佈更加均勻。當您需要複製的檔案數量龐大(例如超過100 萬個) 而且檔案大小變化極大時,這項功能尤為實用。 -
依檔案數量建立區塊
Cloudera Enterprise BDR 允許您直接指定每個區塊的檔案數量,與按照不變的特定組態預先調整備份是相反的做法。當您要複製的檔案數量龐大(例如超過100 萬個),而且您發現BDR 備份MapReduce 工作中有若干映射器有長時間進行的行為,它的落後拖延了整個工作進度的時候,這個功能十分實用。
結論
在閱讀本文之後,您應該已經瞭解Cloudera Enterprise BDR 設計原則、它為企業線上環境提供的差異化功能,以及該功能如何輔助Hadoop 的原生開放原始碼工具。差異化的功能總結如下:
-
Cloudera Enterprise BDR 提供完整的API 控制功能,您可以控制備份執行的時間以及速率。您也可以透過MapReduce 架構嚴密控管備份所使用的網路和CPU 資源。
-
Cloudera Enterprise BDR 是唯一Cloudera 支援的Hive 中繼資料備份解決方案,而大部份Cloudera 客戶均不可缺少一致備份不同叢集之間的Hive 中繼資料的能力。
-
Cloudera Enterprise BDR 支援與HDFS 透明加密無縫整合,支援備份加密區域的資料。此外,設定HDFS RPC 加密保證您的資料無論在來源叢集、目標叢集或是在傳輸中均不會以明文顯示。
-
Cloudera Enterprise BDR 支援大規模備份:在真實的線上工作負載之下可備份數百TB。
Jayesh Seshadri 是Cloudera Backup and Disaster Recovery 的技術主管;他從2014 年開始加入Cloudera。