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

来源:https://www.cnblogs.com/kongcong/archive/2018/05/10/9013717.html
-Advertisement-
Play Games

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


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

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

1.HDFS - HDFS

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

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

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

        

                                  圖1 

2.HBase - HBase

  如果數據存儲在HBase表中,並且希望可以對這些數據進行搜索,這種場景使用Solr集成HBase,可以實現大數據量快速檢索,替代HBase中的列值過濾器,並且HBase在Rowkey設計中也會更加容易,只需要保證每一行的唯一性就可以。

  從災備的角度來看,HBase本身就具備將數據備份到恢復集群的能力,所以對搜索HBase的搜索服務需要做的就是及時同步數據到恢復集群,併在恢復集群的Solr服務上建立索引。HBase集群間的數據同步取決於兩個HBase集群之間的網路。

  用戶每次寫入到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

個人建議:

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在使用cx_Oracle模塊讀取Oracle資料庫中的中文記錄時,返回值皆為?,後google得此佳文,遂問題得以解決,特此記之。 Oracle資料庫版本是10g,字元集是AL32UTF8. 編寫的python腳本中需要加入如下幾句: 這樣可以保證select出來的中文顯示沒有問題。 要能夠正常的i ...
  • 本篇介紹如何使用SSIS和作業完成自動更新目標數據任務。 ** 溫馨提示:如需轉載本文,請註明內容出處。** 本文連接:http://www.cnblogs.com/grom/p/9018978.html 筆者需要定期從伺服器更新N家客戶的遠程伺服器數據,上一篇的存儲過程是其中一個更新方法,後來隨著 ...
  • 上題: In this tutorial you will create a stored procedure and triggers to check a complex constraint. Consider the table definition below: While the uni ...
  • 資料庫的基本操作命令 15.索引 ...
  • 上班坐下來沒多久,接同事電話說有兩台mysql伺服器無法訪問,其中這兩台伺服器是mycat伺服器+MySQL伺服器,具體處理過程如下: 一、錯誤信息 錯誤信息01: 錯誤信息02: 錯誤信息03: 二、錯誤原因 1、針對錯誤信息01,基本可以斷定是由於伺服器jvm設置不當,導致記憶體溢出。 2、針對錯 ...
  • 雙擊打開後加上 ;-m 然後以管理員方式 打開 SQLSERVER 2008 就可以已window身份登錄 不過還沒有完 右鍵 屬性 =》安全性 更改為 sql server 和 window身份驗證模式 沒有sql server登陸賬號的話創建一個 然後把-m去掉就可以用帳號登錄了 ...
  • MariaDB/MySQL備份恢復系列: 備份和恢復(一):mysqldump工具用法詳述 備份和恢復(二):導入、導出表數據 備份和恢復(三):xtrabackup用法和原理詳述 本文目錄: 1.安裝xtrabackup 2.備份鎖 3.xtrabackup備份原理說明 3.1 備份過程(back ...
  • MySQL元數據 Meta Data,一般是結構化數據(如存儲在資料庫里的數據,欄位長度、類型、預設值等等)。Meta Data就是描述數據的數據,在MySQL中描述有哪些資料庫、哪些表、表有多少欄位、類型。 MySQL元數據信息 查詢結果信息,SELECT、UPDATE或DELETE語句影響的行數 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...