1. 程式人生 > >自學大資料:基於Solr實現HBase的文字索引

自學大資料:基於Solr實現HBase的文字索引

前言

最近接觸的專案中,需要針對HBase的資料進行索引查詢,主要支援中文查詢,分頁查詢等。在此情況下,學習了搜尋伺服器solr。總結了一些方法和經驗,正好可以分享個大家,鼓勵自己,共同學習。

使用目的

HBase目前只支援對rowkey的一級索引,對於二級索引還不支援,當然可以把所有要索引的欄位都拼接到rowkey中,根據hbase的filter功能進行查詢,但是這樣操作資料會涉及到全表掃描,效率很低,速度慢,不利於後期擴充套件。並且,通過HBase自己的索引,實現資料量統計,分頁,中文索引幾乎不可能。所以,基於solr為HBase建立索引,就顯得更有價值。

名詞解析

Solr: Solr是一個高效能,採用Java5開發,基於Lucene的全文搜尋伺服器。同時對其進行了擴充套件,提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件並對查詢效能進行了優化,並且提供了一個完善的功能管理介面,是一款非常優秀的全文搜尋引擎。Solr是一個獨立的企業級搜尋應用伺服器,它對外提供類似於Web-service的API介面。使用者可以通過http請求,向搜尋引擎伺服器提交一定格式的XML檔案,生成索引;也可以通過Http Get操作提出查詢請求,並得到XML格式的返回結果。

原理

基於Solr的HBase多條件查詢原理很簡單,將HBase表中涉及條件過濾的欄位和rowkey在Solr中建立索引,通過Solr的多條件查詢快速獲得符合過濾條件的rowkey值,拿到這些rowkey之後在HBASE中通過指定rowkey進行查詢。


環境搭建

 基於tomcat伺服器搭建solr的執行環境,參照slor官網  Solr with Apache Tomcat 

建立索引實現方式

 目前主流的通過solr在HBase之上建立索引,有三種方式

1、  第一種方案是通過HBase的普通API獲取資料建立索引


優點:HBase與Solr彼此沒有任何耦合,通過外部java程式來控制索引的建立修改,整個系統的高可用性和容錯性有保證。

缺點:效率較低。每秒處理125條資料(加大執行緒可以提高效率)

基於本人PC測試:

執行緒數設定為10個,每秒可以處理294條資料

執行緒數設定為20個,每秒可以處理410條資料

執行緒數設定為25個,每秒可以處理376條資料

執行緒數設定為30個,每秒可以處理382條資料

2、  第二種方案是用到HBase的Mapreduce框架


優點:分散式並行執行效率特別高,處理1000萬條資料僅需5分鐘

缺點:但是這種高併發需要對Solr伺服器進行配置調優,不然會丟擲伺服器無法響應的異常。適合批量處理,資料量較小時不適合。

3、  第三種方案是在往HBase寫資料的過程中,觸發HBase的coprocessor的observer功能呼叫solr服務,建立solr索引。是在Base的中實現。


優點:外部呼叫端不需要考慮solr索引的建立問題,只需要呼叫HBase操作資料,索引的建立交給HBase呼叫Solr實現。

缺點:協處理器執行在和RegionServer相同的程序空間裡,出錯的協處理器有潛在可能使程序崩潰,導致HBase的資料出錯。

綜上所述,考慮到HBase叢集的高可用性、容錯性、擴充套件性等,建議主要使用第一種方案建立索引,第二種方案為輔助

相關推薦

自學資料基於Solr實現HBase文字索引

前言 最近接觸的專案中,需要針對HBase的資料進行索引查詢,主要支援中文查詢,分頁查詢等。在此情況下,學習了搜尋伺服器solr。總結了一些方法和經驗,正好可以分享個大家,鼓勵自己,共同學習。 使用目的 HBase目前只支援對rowkey的一級索引,對於二級索引還不支援,

自學資料Hive基於搜狗搜尋的使用者日誌行為分析

前言 ”大資料時代“,“大資料/雲端計算”,“大資料平臺”,每天聽到太多的大資料相關的詞語,好像現在說一句話不跟大資料沾邊都不好意思說自己是做IT的。可能這與整個IT圈子的炒作也有關聯,某一個方面來看其實就是一營銷術語。很多朋友就想問,我想做大資料,但是沒有這個條件,沒有這

基於SolrHbase二級索引

關於Hbase二級索引 HBase 是一個列存資料庫,每行資料只有一個主鍵RowKey,無法依據指定列的資料進行檢索。查詢時需要通過RowKey進行檢索,然後檢視指定列的資料是什麼,效率低下。在實際應用中,我們經常需要根據指定列進行檢索,或者幾個列進行組合檢索,這就提出

資料Spark mlib(三) GradientDescent梯度下降演算法之Spark實現

1. 什麼是梯度下降?梯度下降法(英語:Gradient descent)是一個一階最優化演算法,通常也稱為最速下降法。 要使用梯度下降法找到一個函式的區域性極小值,必須向函式上當前點對應梯度(或者是近似梯度)的反方向的規定步長距離點進行迭代搜尋。先來看兩個函式:1.  擬合

實驗基於keepalived實現兩臺realserver服務器中的nginx和php-fpm服務互為主從

基於keepalived實現nginx和php-fpm互為主從 基於keepalived實現兩臺realserver服務器中的nginx和php-fpm服務互為主從 思路:利用兩個VIP,一個定位nginx,一個定位php-fpm步驟:1、準備兩臺基於LNMP架構的服務器(能夠提供正常的web服務)2、在ng

前後端分離實踐基於vue實現網站前臺的權限管理

Vue.js Javascript做為當下的熱門語言,用途很廣泛,從前端到後端處處可見其存在,該技術如今在我們項目內部也大量使用來開發諸如CMS系統以及其他其他一些數據分析系統的前端頁面,為此個人非常感興趣並將其作為帽子卡的擴展內容來進行課余學習。 Javascript框架鱗次櫛比,但基本原理大致相

基礎運維基於IP實現網頁分流

cgi blog loopback leo root local 重啟nginx sgi gate 一、說明 想要流量分流,在一個接口上設置多IP的方式,是可以實現的,在互聯網上需要訪問的域名,一般人並不知道什麽是IP,就是知道IP,可能他們理解的IP(知識財產權)跟你理

分散式學習筆記七基於zookeeper實現分散式鎖

一、分散式鎖介紹         分散式鎖主要用於在分散式環境中保護跨程序、跨主機、跨網路的共享資源實現互斥訪問,以達到保證資料的一致性。 二、架構介紹     &nb

小白自學資料技術,學習路線很重要

身邊有很多朋友想學習大資料技術,但是苦於一沒基礎,二沒時間,三不知道如何入手,看著大資料行業發展如火如荼,大資料技術崗位各種薪資高、發展好。那何不利用自己的業餘時間,趕緊學起來。為方便大家學習,參考科多大資料的培養體系,整理了一些大家自學的技術和順序,趕緊學起來 大資料處理技術怎麼學習呢?首先我

資料入門(17)hbase叢集搭建

1.上傳hbase安裝包 2.解壓 3.配置hbase叢集,要修改3個檔案(首先zk叢集已經安裝好了)                   &nbs

SSE影象演算法優化系列二十三: 基於value-and-criterion structure 系列濾波器(如Kuwahara,MLV,MCV濾波器)的優化。 SSE影象演算法優化系列十四區域性均方差及區域性平方差演算法的優化 SSE影象演算法優化系列七:基於SSE實現的極速的矩形核腐蝕和膨脹(

       基於value-and-criterion structure方式的實現的濾波器在原理上其實比較簡單,感覺下面論文中得一段話已經描述的比較清晰了,直接貼英文吧,感覺翻譯過來反而失去了原始的韻味了。        T

資料學習線路圖分享,自學資料看這裡就夠了!

學習大資料需要java作為基礎! 一般來說學大資料,首先要學java基礎、javaweb、SSM框架之後在開始大資料的學習。我給你一套大資料的學習線路圖,你從線路圖就能知道java學到什麼程式設計師就可以學大資料了! 大資料學習線路圖總      

資料基於Tensorflow框架的深度學習示例教程

近幾年,資訊時代的快速發展產生了海量資料,誕生了無數前沿的大資料技術與應用。在當今大資料時代的產業界,商業決策日益基於資料的分析作出。當資料膨脹到一定規模時,基於機器學習對海量複雜資料的分析更能產生較好的價值,而深度學習在大資料場景下更能揭示資料內部的邏輯關係。本文就以大資料作為場景,通過自底向上的

影像資料ArcGIS Image Server

      AI(人工智慧)大概是當前技術圈最火的風向,地理大資料和AI碰撞產生了一個新的概念GeoAI。GeoAI時代,ArcGIS為使用者和開發者提供了三個框架: (1)地理處理框架(GP) (2)空間大資料計算 (3)機器學習(ArcGIS Pro中自

資料入門教程系列之Hbase安裝(偽分散式)

本篇文章主要介紹在windows下使用vmware虛擬機器中的Linux(Centons7)下配置安裝Hbase。 簡要步驟: ①、下載Hbase解壓包 ②、安裝zookeeper ③、解壓Hbase,配置環境環境 ④、修改Hbase指令碼檔案hbase-env.sh ⑤、修

資料特徵工程

1、單變數特徵篩選 計算每一個特徵與響應變數的相關性:工程上常用的手段有計算皮爾遜係數和互資訊係數,皮爾遜係數只能衡量線性相關性而互資訊係數能夠很好地度量各種相關性,但是計算相對複雜一些,好在很多toolkit裡邊都包含了這個工具(如sklearn的MINE),得到相關性之後就可以排序選

資料 Hadoop reduce階段

Mapreduce中由於sort的存在,MapTask和ReduceTask直接是工作流的架構。而不是資料流的架構。在MapTask尚未結束,其輸出結果尚未排序及合併前,ReduceTask是又有資料輸入的,因此即使ReduceTask已經建立也只能睡眠等待MapTask完成。從而可以從MapTask節點獲取

手機資料窮人愛買iPhone,華為使用者多有車有房

近日,知名調研機構MobData研究院公佈了中國2018年第三季的智慧手機市場調研報告。報告顯示,蘋果在手機市場佔有率依舊穩坐頭把交椅,高達21.6%,而華為小米OV等則緊隨其後。 有意思的是,MobData還詳盡地對各大手機品牌的使用者群體畫像進行刻畫分析。  

資料Map終結和Spill檔案合併

當Mapper沒有資料輸入,mapper.run中的while迴圈會呼叫context.nextKeyValue就返回false,於是便返回到runNewMapper中,在這裡程式會關閉輸入通道和輸出通道,這裡關閉輸出通道並沒有關閉collector,必須要先flush一下。

資料Windows下配置flink的Stream

對於開發人員來說,最希望的是需要在windows中進行測試,然後把除錯好的程式放在叢集中執行。下面寫一個Socket,上面是監控本地的一個執行埠,來實時的提取資料。獲取視訊中文件資料及完整視訊的夥伴請加QQ群:947967114 下面是一段程式碼: import org.apache.flink