2012-10-09 69 views
1

我的Hbase在三臺機器上運行,一臺用於hmaster,另外兩臺用作regionServers,現在我想我必須做一些複製工作,因爲這是一個防止機器崩潰或斷電的生產環境。但是我閱讀一些Hbase文檔,並找不到任何方式來複制我的數據。我使用的唯一方法是設置hadoop複製,我設置hdfs-site.xml dfs.replicate = 1。 那麼是否有更好的方法來做Hbase的熱複製備份? 在此先感謝Hbase複製

回答

2

在您的生產環境中,您需要數據的副本,以便在發生節點故障或羣集故障時,您的數據將保持安全。 如果我的理解是正確的,那麼你可以去你的數據節點

  • 設置異步複製的

    • 定期間隔備份到從集羣將從其 各自的區域服務器複製數據。更多相關信息,請here
  • 0

    的HBase使用HDFS來存儲數據,因此默認情況下你將不得不在HDFS爲您的數據複製(默認情況下,你將不得不在HDFS的3複製)。所以你不必擔心明確地複製。

    1

    HBase完全依賴HDFS複製。

    所有數據都存在於HDFS而不是HBase(HBase內部存儲到HDFS)。 HBase只是這個數據的訪問機制。由於您設置了dfs.replication = 1,請定期嘗試進行datanode備份。

    如果您擔心HBase中的區域服務器,那麼這些數據存在於Zookeeper中。即使你的Master/RS出現故障,它應該恢復到正常狀態。

    如果您特別擔心區域,它們會被HBase作爲目錄表(ROOT,META)存儲。這些就像HDFS中的普通表一樣。

    因此,請將社區建議的複製更改爲> 1(或默認爲3)。

    1

    您不需要Hbase的複製因子。如前所述,由於Hbase通過HDFS存儲數據,所以複製將由HDFS處理。如果RegionServer出現故障(在Hbase中)HMaster會將死區服務器處理的區域分配給健康的區域服務器,或者發生dataNode故障(在HDFS中),HMaster將從新數據節點(由NameNode提供)分配新數據塊,到一個健康且有效的區域服務器。

    2

    要知道有你的問題「複製」的兩個不同的含義:HDFS塊

    1. 複製。這裏replication表示「在不同的數據節點上保留塊的多個(redudant)副本」,這就是HDFS如何實現高可用性。您通過「dfs.replication」設置屬性告訴HDFS保留多少個副本。檢查「HDFS體系結構指南」中的Data replication部分。

    2. HBase集羣之間的複製。這裏replication表示「將此羣集的更新發送到另一個羣集,以便後者可用作備份」。它可以用作災難恢復解決方案,我猜是你想要的。您需要設置另一個hbase集羣(稱爲從屬集羣或備份集羣),配置複製。之後,當主集羣由於某種原因而關閉時,可以故障切換到備份集羣。請查看this cloudera blog postthis section of hbase book瞭解更多詳情。

    0

    Hbase表格以數據塊的形式存儲在HDFS中。 Hadoop分佈式文件系統(HDFS)使我們能夠決定哪些複製因子用於塊。理想情況下,它保持在3.這確保了任何給定時間3個相同數據的副本將出現在羣集的節點中,並且在任何節點發生故障的情況下,相同的數據將在別處可用以提供查詢。該屬性是hdfs-site.xml中的dfs.replication。 Hbase還允許我們將羣集狀態複製到另一個羣集。這就是將一個Hbase羣集中存在的整個數據複製到另一個羣集。這樣做的好處是管理災難恢復。

    0

    現在,關於複製有三個概念。

    1. hdfs圖層中的塊複製。
    2. hbase集羣之間的複製。
    3. 區域複製。

    dfs.replication指的是第一個概念。它保證物理機器發生單一故障,您的數據是安全的。

    如果dfs.replication = 1,datanode的單點故障(磁盤故障)可能導致數據塊損壞,從而導致數據丟失。