基於Cloudera Search設計數據災備方案

  當實際項目上線到生產環境中,難以免一些意外狀況,如數據丟失、服務器停機等。對於系統的搜索服務來講,當遇到停機的狀況意味着在停機這段時間內,用戶都不能經過搜索的相關功能進行訪問數據,停機意味着將這一段時間內的數據服務徹底中止。若是項目是互聯網項目依賴於用戶數量,這將嚴重影響用戶訪問和用戶的產品體驗。服務器

  針對於這種實際狀況,在實際的項目開發維護過程當中,若是系統使用的大數據平臺是Cloudera公司是CDH,能夠考慮使用Cloudera Search來進行數據的增量備份和數據恢復工做。Cloudera Search是Cloudera公司基於Apache的開源項目Solr發佈的一個搜索服務,安裝很是簡單,經過Cloudera Manager的管理頁面就能夠進行一鍵式安裝,本文將對使用Cloudera Search進行各個應用場景作災備的方案一一介紹。網絡

1.HDFS - HDFStcp

  通常狀況下,一個大數據項目中全部用到的原始數據都會存儲HDFS中(Hive和HBase存儲也是基於HDFS存儲數據)。對HDFS作災備和數據恢復最直接的方式是在源HDFS集羣和備份HDFS集羣之間設置數據按期增量更新,例如時間Cloudera BDR工具,基礎數據備份以後能夠選擇使用MapReduce Indexer或者Spark Indexer對備份HDFS集羣中的同步過來的原始數據創建索引並追加到和備份HDFS集羣同一集羣中的正常運行的Solr服務中。這樣在原始集羣故障後,能夠從原始集羣的Solr服務切換到備份集羣的Solr服務,從而達到不影響用戶使用搜索服務的需求。工具

  這種狀況存在一個問題就是個人原始集羣中數據有新產生的數據,還沒來得及同步到備份HDFS集羣中,這時發生原始集羣發生故障會切換到備用集羣會致使數據缺失,致使這種狀況有兩個方面的緣由,一是設置的在兩個集羣間增量同步數據的傳輸頻率,這也是主要因素。二是使用MapReduce或者Spark創建索引並加到Solr中須要多久的時間。oop

  下圖是一個具體的例子,文件A存儲在HDFS中,經過Cloudera BDR工具進行數據文件的按期備份,將它備份到數據備份用的HDFS集羣中。在兩個集羣中使用Spark或者MapReduce對新文件創建索引,並將新創建的索引添加到各自集羣中的Solr服務裏提供搜索功能。大數據

        

                                  圖1 設計

2.HBase - HBaseblog

  若是數據存儲在HBase表中,而且但願能夠對這些數據進行搜索,這種場景使用Solr集成HBase,能夠實現大數據量快速檢索,替代HBase中的列值過濾器,而且HBase在Rowkey設計中也會更加容易,只須要保證每一行的惟一性就能夠。索引

  從災備的角度來看,HBase自己就具有將數據備份到恢復集羣的能力,因此對搜索HBase的搜索服務須要作的就是及時同步數據到恢復集羣,並在恢復集羣的Solr服務上創建索引。HBase集羣間的數據同步取決於兩個HBase集羣之間的網絡。hadoop

  用戶每次寫入到HBase的數據同步到HBase恢復集羣(可使用HBase自帶的hbase.replication配置項實現),集成使用Cloudera Search和同集羣Solr服務實時監聽創建索引的機制相同。同理在HBase恢復集羣也須要實時監聽數據變換,爲新數據創建索引,能夠採用HBase協處理器或者Cloudera的Key-Value Store Indexer組件實現。

             

                                    圖 2

3.Solr - Solr

   搜索服務災備一方面是對基礎數據進行同步和備份,一方面則是對索引進行備份,Cloudera Search 實現了索引備份的方案,使用索引備份工具能夠高效的將索引文件複製到其餘位置,例如S3或ADLS,可是在作災備的場景下,你的恢復集羣極可能是一個HDFS集羣,在須要切換備用集羣時,須要將索引加載到備用集羣的Cloudera Search 服務中。只要索引文件加載到了Solr中,就能夠爲用戶提供搜索服務。

  備份的操做是基於Solr的快照功能,Cloudera Search容許爲當前Solr中的全部數據作快照。以後使用hadoop distcp命令將索引和相關的元數據文件複製到別處(其餘的HDFS集羣)。

  因爲建立快照是對數據和元數據的保留,可能不是完整的副本,所以在這種狀況下兩個集羣數據同步的延遲取決於備用集羣上的能夠Solr服務須要多長時間將索引副本加載到集羣的Cloudera Search服務中。

  總結來講備份Solr數據的步驟以下:

  a) 原始集羣建立快照

  b) 準備要導出的快照

  c) 將快照導出到本地集羣或者遠程集羣(hadoop distcp命令)

        

                                   圖 3

我的建議:

  項目上線後建議按期進行系統的基礎數據備份和索引數據備份。原始數據計算使用事後建議全量保留,這是爲了不後續想要更改數據計算方式卻沒有原始數據的狀況。

相關文章
相關標籤/搜索