国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于Elasticsearch與Hbase組合框架的大數(shù)據(jù)搜索引擎

這篇具有很好參考價(jià)值的文章主要介紹了基于Elasticsearch與Hbase組合框架的大數(shù)據(jù)搜索引擎。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

本項(xiàng)目為學(xué)校大數(shù)據(jù)工程實(shí)訓(xùn)項(xiàng)目,共開發(fā)4周,答辯成績不錯(cuò)。代碼倉庫放文章尾,寫的不好,代碼僅供參考。

搜索

對(duì)于結(jié)構(gòu)化數(shù)據(jù),因?yàn)樗鼈兙哂刑囟ǖ慕Y(jié)構(gòu),所以我們一般都是可以通過關(guān)系型數(shù)據(jù)庫(MySQL,Oracle 等)的二維表(Table)的方式存儲(chǔ)和搜索,也可以建立索引。

對(duì)于非結(jié)構(gòu)化數(shù)據(jù),也即對(duì)全文數(shù)據(jù)的搜索主要有兩種方法:

  • 順序掃描
  • 全文檢索

(1)順序掃描:通過文字名稱也可了解到它的大概搜索方式,即按照順序掃描的方式查詢特定的關(guān)鍵字。

例如一張報(bào)紙,讓找到該報(bào)紙中“平安”的文字在哪些地方出現(xiàn)過??隙ㄐ枰獜念^到尾把報(bào)紙閱讀掃描一遍然后標(biāo)記出關(guān)鍵字在哪些版塊出現(xiàn)過以及它的出現(xiàn)位置。

這種方式無疑是最耗時(shí)的最低效的,如果報(bào)紙排版字體小。

(2)全文搜索:對(duì)非結(jié)構(gòu)化數(shù)據(jù)順序掃描很慢,是否可以進(jìn)行優(yōu)化?即把非結(jié)構(gòu)化數(shù)據(jù)整理有一定結(jié)構(gòu)。

將非結(jié)構(gòu)化數(shù)據(jù)中的一部分信息提取出來,重新組織,使其變得有一定結(jié)構(gòu),然后對(duì)此有一定結(jié)構(gòu)的數(shù)據(jù)進(jìn)行搜索,從而達(dá)到搜索相對(duì)較快的目的。

這種方式就構(gòu)成了全文檢索的基本思路。這部分從非結(jié)構(gòu)化數(shù)據(jù)中提取出的然后重新組織的信息,我們稱之為索引。

這種方式的主要工作量在前期索引的創(chuàng)建,但是對(duì)于后期搜索卻是快速高效的。

Hbase

HBase 是一個(gè)面向列式存儲(chǔ)的分布式數(shù)據(jù)庫,其設(shè)計(jì)思想來源于 Google 的 BigTable 論文。HBase 底層存儲(chǔ)基于 HDFS 實(shí)現(xiàn),集群的管理基于 ZooKeeper 實(shí)現(xiàn)。HBase 良好的分布式架構(gòu)設(shè)計(jì)為海量數(shù)據(jù)的快速存儲(chǔ)、隨機(jī)訪問提供了可能,基于數(shù)據(jù)副本機(jī)制和分區(qū)機(jī)制可以輕松實(shí)現(xiàn)在線擴(kuò)容、縮容和數(shù)據(jù)容災(zāi),是大數(shù)據(jù)領(lǐng)域中 Key-Value 數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)最常用的數(shù)據(jù)庫方案。
HBase 是一個(gè)面向列式存儲(chǔ)的分布式數(shù)據(jù)庫。HBase 的數(shù)據(jù)模型與 BigTable 十分相似。在 HBase 表中,一條數(shù)據(jù)擁有一個(gè)全局唯一的鍵(RowKey)和任意數(shù)量的列(Column),一列或多列組成一個(gè)列族(Column Family),同一個(gè)列族中列的數(shù)據(jù)在物理上都存儲(chǔ)在同一個(gè) HFile 中,這樣基于列存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)有利于數(shù)據(jù)緩存和查詢。 HBase 中的表是疏松地存儲(chǔ)的,因此用戶可以動(dòng)態(tài)地為數(shù)據(jù)定義各種不同的列。HBase中的數(shù)據(jù)按主鍵排序,同時(shí),HBase 會(huì)將表按主鍵劃分為多個(gè) Region 存儲(chǔ)在不同 Region Server 上,以完成數(shù)據(jù)的分布式存儲(chǔ)和讀取。

HBase 根據(jù)列成來存儲(chǔ)數(shù)據(jù),一個(gè)列族對(duì)應(yīng)物理存儲(chǔ)上的一個(gè) HFile,列族包含多列列族在創(chuàng)建表的時(shí)候被指定。
基于Elasticsearch與Hbase組合框架的大數(shù)據(jù)搜索引擎

1.Column Family

Column Family 即列族,HBase 基于列劃分?jǐn)?shù)據(jù)的物理存儲(chǔ),一個(gè)列族可以包含包意多列。

一般同一類的列會(huì)放在一個(gè)列族中,每個(gè)列族都有一組存儲(chǔ)屬性:

是否應(yīng)該緩存在內(nèi)存中;
數(shù)據(jù)如何被壓縮或行鍵如何編碼等。
HBase 在創(chuàng)建表的時(shí)候就必須指定列族。HBase的列族不是越多越好,官方薦一個(gè)表的列族數(shù)量最好小于或者等于3,過多的列族不利于 HBase 數(shù)據(jù)的管理和索引。

2.RowKey

RowKey的概念與關(guān)系型數(shù)據(jù)庫中的主鍵相似,HBase 使用 RowKey 來唯一標(biāo)識(shí)某行的數(shù)據(jù)。

訪問 HBase 數(shù)據(jù)的方式有三種:

基于 RowKey的單行查詢;
基于RowKey的范圍查詢;
全表掃描查詢。

3.Region

HBase 將表中的數(shù)據(jù)基于 RowKey 的不同范圍劃分到不同 Region 上,每個(gè)Region都負(fù)責(zé)一定范圍的數(shù)據(jù)存儲(chǔ)和訪問。

每個(gè)表一開始只有一個(gè) Region,隨著數(shù)據(jù)不斷插入表,Region 不斷增大,當(dāng)增大到一個(gè)閥值的時(shí)候,Region 就會(huì)等分成兩個(gè)新的 Region。當(dāng)table中的行不斷增多,就會(huì)有越來越多的 Region。

另外,Region 是 Hbase 中分布式存儲(chǔ)和負(fù)載均衡的最小單元,不同的 Region 可以分布在不同的 HRegion Server上。但一個(gè)Hregion是不會(huì)拆分到多個(gè)server上的。
拓展:談一下你對(duì) HBase 的認(rèn)識(shí)?

這樣即使有一個(gè)包括上百億條數(shù)據(jù)的表,由于數(shù)據(jù)被劃分到不同的 Region上,每個(gè) Region 都可以獨(dú)立地進(jìn)行寫入和查詢,HBase 寫查詢時(shí)候可以于多 Region 分布式并發(fā)操作,因此訪問速度也不會(huì)有太大的降低。

4.TimeStamp

TimeStamp 是實(shí)現(xiàn) HBase 多版本的關(guān)鍵。在HBase 中,使用不同 TimeStamp 來標(biāo)識(shí)相同RowKey對(duì)應(yīng)的不同版本的數(shù)據(jù)。相同 RowKey的數(shù)據(jù)按照 TimeStamp 倒序排列。默認(rèn)查詢的是最新的版本,當(dāng)然用戶也可以指定 TimeStamp 的值來讀取指定版本的數(shù)據(jù)。

大數(shù)據(jù)場景下,列式存儲(chǔ)的優(yōu)勢

對(duì)于 OLAP 場景,大多都是對(duì)一整行記錄進(jìn)行增刪改查操作的,那么行式存儲(chǔ)采用以行的行式在磁盤上存儲(chǔ)數(shù)據(jù)就是一個(gè)不錯(cuò)的選擇。

當(dāng)查詢基于需求字段查詢和返回結(jié)果時(shí),由于這些字段都埋藏在各行數(shù)據(jù)中,就必須讀取每一條完整的行記錄,大量磁盤轉(zhuǎn)動(dòng)尋址的操作使得讀取效率大大降低。數(shù)據(jù)在磁盤上是以行的形式存儲(chǔ)在磁盤上,同一行的數(shù)據(jù)緊挨著存放在一起。

對(duì)于 OLAP 場景,一個(gè)典型的查詢需要遍歷整個(gè)表,進(jìn)行分組、排序、聚合等操作,這樣一來行式存儲(chǔ)中把一整行記錄存放在一起的優(yōu)勢就不復(fù)存在了。而且,分析型 SQL 常常不會(huì)用到所有的列,而僅僅對(duì)其中某些需要的的列做運(yùn)算,那一行中無關(guān)的列也不得不參與掃描。

然而在列式存儲(chǔ)中,由于同一列的數(shù)據(jù)被緊挨著存放在了一起
列式存儲(chǔ)不僅具有按需查詢來提高效率的優(yōu)勢,由于同一列的數(shù)據(jù)屬于同一種類型,如數(shù)值類型,字符串類型等,相似度很高,還可以選擇使用合適的編碼壓縮可減少數(shù)據(jù)的存儲(chǔ)空間,進(jìn)而減少IO提高讀取性能。

Elasticsearch

ES 是使用 Java 編寫的一種開源搜索引擎,它在內(nèi)部使用 Lucene 做索引與搜索,通過對(duì) Lucene 的封裝,隱藏了 Lucene 的復(fù)雜性,取而代之的提供一套簡單一致的 RESTful API。

然而,Elasticsearch 不僅僅是 Lucene,并且也不僅僅只是一個(gè)全文搜索引擎。

它可以被下面這樣準(zhǔn)確的形容:

  • 一個(gè)分布式的實(shí)時(shí)文檔存儲(chǔ),每個(gè)字段可以被索引與搜索。
  • 一個(gè)分布式實(shí)時(shí)分析搜索引擎。
  • 能勝任上百個(gè)服務(wù)節(jié)點(diǎn)的擴(kuò)展,并支持 PB 級(jí)別的結(jié)構(gòu)化或者非結(jié)構(gòu)化數(shù)據(jù)。

官網(wǎng)對(duì) Elasticsearch 的介紹是 Elasticsearch 是一個(gè)分布式、可擴(kuò)展、近實(shí)時(shí)的搜索與數(shù)據(jù)分析引擎。

Lucene

Lucene 只是一個(gè)工具包,它不是一個(gè)完整的全文檢索引擎。Lucene 的目的是為軟件開發(fā)人員提供一個(gè)簡單易用的工具包,以方便的在目標(biāo)系統(tǒng)中實(shí)現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎。

目前以 Lucene 為基礎(chǔ)建立的開源可用全文搜索引擎主要是 Solr 和 Elasticsearch。

Solr 和 Elasticsearch 都是比較成熟的全文搜索引擎,能完成的功能和性能也基本一樣。

ES 本身就具有分布式的特性和易安裝使用的特點(diǎn),而 Solr 的分布式需要借助第三方來實(shí)現(xiàn),例如通過使用 ZooKeeper 來達(dá)到分布式協(xié)調(diào)管理。

倒排索引

為了創(chuàng)建倒排索引,我們通過分詞器將每個(gè)文檔的內(nèi)容域拆分成單獨(dú)的詞(我們稱它為詞條或 Term),創(chuàng)建一個(gè)包含所有不重復(fù)詞條的排序列表,然后列出每個(gè)詞條出現(xiàn)在哪個(gè)文檔。這種結(jié)構(gòu)由文檔中所有不重復(fù)詞的列表構(gòu)成,對(duì)于其中每個(gè)詞都有一個(gè)文檔列表與之關(guān)聯(lián)。這種由屬性值來確定記錄的位置的結(jié)構(gòu)就是倒排索引。帶有倒排索引的文件我們稱為倒排文件。

  • Java is the best programming language.
  • PHP is the best programming language.
  • Javascript is the best programming language.

結(jié)果如下所示:

Term          Doc_1    Doc_2   Doc_3
-------------------------------------
Java        |   X   |        |
is          |   X   |   X    |   X
the         |   X   |   X    |   X
best        |   X   |   X    |   X
programming |   x   |   X    |   X
language    |   X   |   X    |   X
PHP         |       |   X    |
Javascript  |       |        |   X
-------------------------------------

將上面的內(nèi)容轉(zhuǎn)換為圖的形式來說明倒排索引的結(jié)構(gòu)信息,如下圖所示:

基于Elasticsearch與Hbase組合框架的大數(shù)據(jù)搜索引擎

  • 詞條(Term):索引里面最小的存儲(chǔ)和查詢單元,對(duì)于英文來說是一個(gè)單詞,對(duì)于中文來說一般指分詞后的一個(gè)詞。

  • 詞典(Term Dictionary):或字典,是詞條 Term 的集合。搜索引擎的通常索引單位是單詞,單詞詞典是由文檔集合中出現(xiàn)過的所有單詞構(gòu)成的字符串集合,單詞詞典內(nèi)每條索引項(xiàng)記載單詞本身的一些信息以及指向“倒排列表”的指針。

  • 倒排表(Post list):一個(gè)文檔通常由多個(gè)詞組成,倒排表記錄的是某個(gè)詞在哪些文檔里出現(xiàn)過以及出現(xiàn)的位置。

    每條記錄稱為一個(gè)倒排項(xiàng)(Posting)。倒排表記錄的不單是文檔編號(hào),還存儲(chǔ)了詞頻等信息。

  • **倒排文件(Inverted File):**所有單詞的倒排列表往往順序地存儲(chǔ)在磁盤的某個(gè)文件里,這個(gè)文件被稱之為倒排文件,倒排文件是存儲(chǔ)倒排索引的物理文件。

  • 可以了解到倒排索引主要由兩個(gè)部分組成:

    • 詞典
    • 倒排文件

    詞典和倒排表是 Lucene 中很重要的兩種數(shù)據(jù)結(jié)構(gòu),是實(shí)現(xiàn)快速檢索的重要基石。詞典和倒排文件是分兩部分存儲(chǔ)的,詞典在內(nèi)存中而倒排文件存儲(chǔ)在磁盤上。

Elasticsearch+Hbase

為什么做數(shù)據(jù)檢索要加上Hbase,ElasticSearch本身的存儲(chǔ)性能就足以支撐海量數(shù)據(jù).

首先ElasticSearch針對(duì)海量數(shù)據(jù)的存儲(chǔ)存在兩個(gè)較大的缺點(diǎn):
1、寫入效率相對(duì)較低,雖然和Hbase一樣都是采用LSM樹(LSM 通過將磁盤的隨機(jī)寫轉(zhuǎn)化為順序?qū)憗硖岣邔懶阅?,而付出的代價(jià)就是犧牲部分讀性能),但是ES在寫入時(shí)需要消耗大量的時(shí)間去進(jìn)行分詞、主副本構(gòu)建倒排索引等操作。
2、在大數(shù)據(jù)領(lǐng)域,在使用數(shù)據(jù)的時(shí)候,經(jīng)常用到的字段就幾個(gè),剩下的字段沒有價(jià)值或使用頻率極低。
以上無用或低頻字段會(huì)占用大量的索引空間,由于ES的倒排索引存儲(chǔ)在文件中,為提高訪問速度,在啟動(dòng)時(shí)都會(huì)把它加載到內(nèi)存中。上述問題會(huì)導(dǎo)致倒排索引文件過大,從而導(dǎo)致集群性能下降并降低數(shù)據(jù)訪問速度,且會(huì)增加不必要的內(nèi)存硬件成本。

架構(gòu)設(shè)計(jì)為了解決上述中出現(xiàn)的問題,需要引入Hbase對(duì)上述出現(xiàn)的問題進(jìn)行彌補(bǔ)。
1、寫入效率問題:Hbase基于HDFS存儲(chǔ),其次因?yàn)闆]有索引,不需要考慮海量數(shù)據(jù)下因?yàn)樗饕龑?dǎo)致的性能瓶頸,所以Hbase非常適合存儲(chǔ)海量數(shù)據(jù),寫入速度快,可擴(kuò)展性強(qiáng)。
2、字段過多導(dǎo)致的性能問題:我們可以將原始數(shù)據(jù)存儲(chǔ)至Hbase中,僅將需要進(jìn)行檢索的字段抽取出來存儲(chǔ)至ES中,這樣可以大大降低ES因?yàn)榈古潘饕募^大導(dǎo)致的性能壓力。

其次Hbase支持根據(jù)rowkey進(jìn)行模糊查詢,rowkey我們可以把它看做成Hbase中單條數(shù)據(jù)的唯一ID,同時(shí)也可以作為一個(gè)簡單的索引。

框架設(shè)計(jì):

根據(jù)rowkey將Hbase的原始數(shù)據(jù)和ES中的檢索數(shù)據(jù)關(guān)聯(lián)起來。

在原始數(shù)據(jù)(也可以叫源數(shù)據(jù)、貼源層數(shù)據(jù)、日志數(shù)據(jù))入庫時(shí),可以根據(jù)數(shù)據(jù)生成rowkey(rowkey的設(shè)計(jì)因人而異,最好根據(jù)具體的業(yè)務(wù)來設(shè)計(jì),注意要確保唯一性),之后將需要檢索的字段抽取出來形成單獨(dú)的一條索引數(shù)據(jù),并將剛才設(shè)計(jì)好的rowkey放進(jìn)去,之后將原始數(shù)據(jù)根據(jù)rowkey寫入至Hbase,檢索數(shù)據(jù)根據(jù)rowkey寫入至ES中。
在進(jìn)行檢索時(shí)首先根據(jù)檢索條件去ES中搜索,搜索出相對(duì)應(yīng)的檢索數(shù)據(jù)后,根據(jù)檢索數(shù)據(jù)中的rowkey直接去Hbase中獲取原始數(shù)據(jù)即可。(將HBase的rowkey設(shè)定為ES的文檔ID,搜索時(shí)根據(jù)業(yè)務(wù)條件先從ES里面全文檢索出相對(duì)應(yīng)的文檔,從而獲取出文檔ID,即拿到了rowkey,再從HBase里面抽取數(shù)據(jù)。)
基于Elasticsearch與Hbase組合框架的大數(shù)據(jù)搜索引擎

架構(gòu)效果

發(fā)揮了Elasticsearch的全文檢索的優(yōu)勢,能夠快速根據(jù)關(guān)鍵字檢索出相關(guān)度最高的結(jié)果;
同時(shí)減少了Elasticsearch的存儲(chǔ)壓力,這種場景下不需要存儲(chǔ)檢索無關(guān)的內(nèi)容,甚至可以禁用_source,節(jié)約一半的存儲(chǔ)空間,同時(shí)提升最少30%的寫入速度;
避免了Elasticsearch大數(shù)據(jù)量下查詢返回慢的問題,大數(shù)據(jù)量下Hbase的抽取速度明顯優(yōu)于Elasticsearch;
各取所長,發(fā)揮兩個(gè)組件各自的優(yōu)勢。

存在問題

1、兩個(gè)組件之間存在時(shí)效不一致的問題

相對(duì)而言,Elasticsearch的入庫速度肯定是要快于Hbase的,這是需要業(yè)務(wù)容忍一定的時(shí)效性,對(duì)業(yè)務(wù)的要求會(huì)比較高。

2、同時(shí)管理兩個(gè)組件增加了管理成本

顯而易見,同時(shí)維護(hù)兩套組件的成本肯定是更大的。

3、兩者的數(shù)據(jù)不一致問題

針對(duì)此項(xiàng)目,有一個(gè)核心功能點(diǎn),如何在ES中同步對(duì)HBase中的數(shù)據(jù)建立索引?
大致有下面這幾種方案:

1:方案1

基于Elasticsearch與Hbase組合框架的大數(shù)據(jù)搜索引擎

在將原始數(shù)據(jù)入庫HBase的時(shí)候,同時(shí)在ES中對(duì)數(shù)據(jù)建立索引,此時(shí)可以把入庫HBase和ES的代碼放在一個(gè)事務(wù)中,保證HBase和ES的數(shù)據(jù)一致性。

這種方案的優(yōu)點(diǎn)是操作方便,缺點(diǎn)是入庫HBase和ES的代碼綁定到一起了,耦合性太高,如果遇到ES出現(xiàn)故障,會(huì)導(dǎo)致入庫HBase的操作也會(huì)失敗,或者是ES集群壓力過大的時(shí)候,會(huì)導(dǎo)致數(shù)據(jù)入庫HBase的效率降低。

2、方案二

基于Elasticsearch與Hbase組合框架的大數(shù)據(jù)搜索引擎

在將原始數(shù)據(jù)入庫HBase的時(shí)候,通過HBase中的協(xié)處理器實(shí)現(xiàn)數(shù)據(jù)同步,讓協(xié)處理器監(jiān)聽HBase中的新增和刪除操作,在協(xié)處理器內(nèi)部操作ES,實(shí)現(xiàn)對(duì)數(shù)據(jù)建立索引的功能。
HBase中的協(xié)處理器其實(shí)類似于MySQL中的觸發(fā)器。

這種方案的優(yōu)點(diǎn)是通過協(xié)處理器可以很方便的獲取到HBase中新增和變化的數(shù)據(jù),如果入庫HBase的程序是之前已經(jīng)開發(fā)好的,此時(shí)不需要對(duì)之前的代碼進(jìn)行任何改動(dòng),影響程度比較低。缺點(diǎn)是過于依賴HBase了,如果后期涉及到HBase集群版本升級(jí),無法保證協(xié)處理器功能的可用性。

3、方案3

基于Elasticsearch與Hbase組合框架的大數(shù)據(jù)搜索引擎

在將原始數(shù)據(jù)入庫HBase的時(shí)候,同時(shí)在Redis中使用list數(shù)據(jù)類型模擬一個(gè)隊(duì)列,存儲(chǔ)數(shù)據(jù)的Rowkey。此時(shí)將入庫HBase和Redis的操作放在一個(gè)事務(wù)里面,保證數(shù)據(jù)的一致性。然后再通過另外一個(gè)同步程序,從Redis的list隊(duì)列中讀取Rowkey,根據(jù)Rowkey到HBase中獲取數(shù)據(jù)的詳細(xì)信息,在ES中建立索引,將HBase中數(shù)據(jù)的Rowkey作為ES中數(shù)據(jù)的ID。

在這個(gè)方案里面是將入庫HBase和在ES中建立索引這兩個(gè)功能解耦了,借助于中間層的Redis實(shí)現(xiàn)的。
這種方案的缺點(diǎn)是把入庫HBase和Redis的功能耦合在一起了,但是Redis是輕量級(jí)的,出現(xiàn)問題的概率是比較低的,對(duì)性能損耗也不高,所以是可以接受的。
此時(shí)就算ES出現(xiàn)問題,只需要在同步程序內(nèi)部實(shí)現(xiàn)正常的異常處理即可,將建立索引失敗數(shù)據(jù)的Rowkey重新添加到Redis的list列表里面即可,不會(huì)導(dǎo)致HBase和ES數(shù)據(jù)不一致的問題。

使用第3種方案,可控性高一些,在項(xiàng)目中也會(huì)使用第3種方案實(shí)現(xiàn)。

四、項(xiàng)目整體執(zhí)行流程
接下來分析一下項(xiàng)目底層細(xì)節(jié)流程

如下圖所示

基于Elasticsearch與Hbase組合框架的大數(shù)據(jù)搜索引擎

1:通過入庫程序向HBase中入庫數(shù)據(jù),同時(shí)在Redis中存儲(chǔ)數(shù)據(jù)的Rowkey。

2:從Redis中獲取數(shù)據(jù)的Rowkey,根據(jù)Rowkey到HBase中查詢數(shù)據(jù)的詳細(xì)信息,然后在ES中建立索引。
此時(shí)我們的海量數(shù)據(jù)已經(jīng)存儲(chǔ)到HBase中,并且將需要查詢的字段在ES中建立索引了。

3:用戶向ES發(fā)送查詢請求。

4:ES返回符合條件的數(shù)據(jù)的ID,其實(shí)就是HBase中數(shù)據(jù)的Rowkey。在這里也可以根據(jù)需求額外再返回一些字段信息都是可以的。

5:當(dāng)用戶想要查看數(shù)據(jù)完整詳細(xì)信息的時(shí)候,需要根據(jù)Rowkey到HBase中查詢。

6:HBase會(huì)給用戶返回Rowkey對(duì)應(yīng)數(shù)據(jù)的詳細(xì)信息。

實(shí)測性能

原來只使用ElasticSearch的時(shí)候,數(shù)據(jù)只需要寫入一遍,也只需要查詢一次ES就可返回想要的數(shù)據(jù)。現(xiàn)使用了Hbase+ElasticSearch后,不僅數(shù)據(jù)需要寫入兩份,查詢也需要先查ES,然后再根據(jù)ES的查詢結(jié)果去Hbase中取數(shù)據(jù)。這樣多此一舉性能難道真的能提升嗎?

基于Elasticsearch與Hbase組合框架的大數(shù)據(jù)搜索引擎

單ES架構(gòu)和Hbase+ES架構(gòu)的性能對(duì)比可由上圖直觀的展示出來:
在數(shù)據(jù)量小的時(shí)候,單ES架構(gòu)的性能是優(yōu)于Hbase+ES架構(gòu)的。
數(shù)據(jù)量過了一定量級(jí)的時(shí)候,Hbase+ES架構(gòu)的性能就遠(yuǎn)遠(yuǎn)的把單ES架構(gòu)給甩開了。

項(xiàng)目最終整體架構(gòu)

基于Elasticsearch與Hbase組合框架的大數(shù)據(jù)搜索引擎

項(xiàng)目展示


地址:zjczdzs/Z-HE: 基于Elasticsearch+hbase的海量數(shù)據(jù)查詢、即時(shí)推送服務(wù)系統(tǒng) (github.com)

參考博客:
https://blog.csdn.net/mrliqifeng/article/details/111771109
https://blog.csdn.net/sdksdk0/article/details/53966430
https://blog.csdn.net/wudingmei1023/article/details/103914052
https://blog.csdn.net/weixin_40612128/article/details/123507161
https://blog.csdn.net/bxg_kyjgs/article/details/125993647文章來源地址http://www.zghlxwxcb.cn/news/detail-487043.html

到了這里,關(guān)于基于Elasticsearch與Hbase組合框架的大數(shù)據(jù)搜索引擎的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 盤點(diǎn)五種主流的大數(shù)據(jù)計(jì)算框架

    盤點(diǎn)五種主流的大數(shù)據(jù)計(jì)算框架

    以下是五種主流的大數(shù)據(jù)計(jì)算框架: Apache Hadoop:Apache Hadoop是最著名的大數(shù)據(jù)計(jì)算框架之一,它包括Hadoop Distributed File System(HDFS)和MapReduce。HDFS是一個(gè)可擴(kuò)展的分布式文件系統(tǒng),用于存儲(chǔ)大規(guī)模數(shù)據(jù)集。MapReduce是一種分布式計(jì)算框架,用于在集群中并行處理大規(guī)模數(shù)據(jù)。 Apac

    2024年04月26日
    瀏覽(26)
  • Lucene輕量級(jí)搜索引擎,Solr 和 ElasticSearch 都是基于 Lucene 的封裝

    Lucene輕量級(jí)搜索引擎,Solr 和 ElasticSearch 都是基于 Lucene 的封裝

    1、Lucene 是什么 Lucene 是一個(gè)本地全文搜索引擎,Solr 和 ElasticSearch 都是基于 Lucene 的封裝 Lucene 適合那種輕量級(jí)的全文搜索,我就是服務(wù)器資源不夠,如果上 ES 的話會(huì)很占用服務(wù)器資源,所有就選擇了 Lucene 搜索引擎 2、倒排索引原理 全文搜索的原理是使用了倒排索引,那么什么是倒

    2024年03月15日
    瀏覽(22)
  • ElasticSearch搜索引擎:數(shù)據(jù)的寫入流程

    ElasticSearch搜索引擎:數(shù)據(jù)的寫入流程

    (1)ES 客戶端選擇一個(gè)節(jié)點(diǎn) node 發(fā)送請求過去,這個(gè)節(jié)點(diǎn)就是協(xié)調(diào)節(jié)點(diǎn) coordinating node? (2)協(xié)調(diào)節(jié)點(diǎn)對(duì) document 進(jìn)行路由,通過 hash 算法計(jì)算出數(shù)據(jù)應(yīng)該落在哪個(gè)分片?shard 上,然后根據(jù)節(jié)點(diǎn)上維護(hù)的 shard 信息,將請求轉(zhuǎn)發(fā)到對(duì)應(yīng)的實(shí)際處理節(jié)點(diǎn)node上 shard = hash(document_id) %

    2023年04月14日
    瀏覽(26)
  • 【基于HBase和ElasticSearch構(gòu)建大數(shù)據(jù)實(shí)時(shí)檢索項(xiàng)目】

    【基于HBase和ElasticSearch構(gòu)建大數(shù)據(jù)實(shí)時(shí)檢索項(xiàng)目】

    利用HBase存儲(chǔ)海量數(shù)據(jù),解決海量數(shù)據(jù)存儲(chǔ)和實(shí)時(shí)更新查詢的問題; 利用ElasticSearch作為HBase索引,加快大數(shù)據(jù)集中實(shí)時(shí)查詢數(shù)據(jù); 使用到的大數(shù)據(jù)組件有:Hadoop-2.7.3、HBase-1.3.1、zookeeper-3.4.5、ElasticSearch-7.8.0 實(shí)驗(yàn)環(huán)境: 虛擬機(jī)(操作系統(tǒng)CentOS7.6) + 個(gè)人PC(Windows)+ Eclipse或者

    2024年02月14日
    瀏覽(27)
  • 搜索引擎(大數(shù)據(jù)檢索)論述[elasticsearch原理相關(guān)]

    搜索引擎(大數(shù)據(jù)檢索)論述[elasticsearch原理相關(guān)]

    首先需要大致知道搜索引擎有大致幾類:1.全文搜索引擎 2.垂直搜索引擎 3.類目搜索引擎等。 1.全文搜索引擎:是全文本覆蓋的,百度,google等都是全文本搜索,就是我搜一個(gè)詞項(xiàng)“方圓”,那么這個(gè)詞項(xiàng)可以是數(shù)字平方的概念,可以是一個(gè)人名,可以是一首歌等,所有的相

    2023年04月08日
    瀏覽(30)
  • 在ABAQUS中開發(fā)材料模型(UMAT)的通用框架:基于Fortran的大變形本構(gòu)行為的3D實(shí)現(xiàn)方法

    隨著計(jì)算力的增強(qiáng),有限元方法(FEM)已經(jīng)成為研究和開發(fā)新的材料行為模型的重要手段。ABAQUS作為一款廣泛使用的有限元分析軟件,其提供的用戶材料子程序(User Material Subroutine, UMAT)接口,為用戶開發(fā)自定義材料模型提供了方便。而Fortran語言因其在科學(xué)計(jì)算中的廣泛應(yīng)用

    2024年02月07日
    瀏覽(24)
  • Elasticsearch (ES) 搜索引擎: 數(shù)據(jù)類型、動(dòng)態(tài)映射、多類型(子字段)

    原文鏈接:https://xiets.blog.csdn.net/article/details/132348634 版權(quán)聲明:原創(chuàng)文章禁止轉(zhuǎn)載 專欄目錄:Elasticsearch 專欄(總目錄) ES 映射字段的 數(shù)據(jù)類型 ,官網(wǎng)文檔參考:Field data types。 下面是 ES 常用的一些基本數(shù)據(jù)類型。 字符串 類型: keyword :類型。 text :文本類型。

    2024年03月23日
    瀏覽(38)
  • elasticsearch(ES)分布式搜索引擎04——(數(shù)據(jù)聚合,自動(dòng)補(bǔ)全,數(shù)據(jù)同步,ES集群)

    elasticsearch(ES)分布式搜索引擎04——(數(shù)據(jù)聚合,自動(dòng)補(bǔ)全,數(shù)據(jù)同步,ES集群)

    **聚合(aggregations)**可以讓我們極其方便的實(shí)現(xiàn)對(duì)數(shù)據(jù)的統(tǒng)計(jì)、分析、運(yùn)算。例如: 什么品牌的手機(jī)最受歡迎? 這些手機(jī)的平均價(jià)格、最高價(jià)格、最低價(jià)格? 這些手機(jī)每月的銷售情況如何? 實(shí)現(xiàn)這些統(tǒng)計(jì)功能的比數(shù)據(jù)庫的sql要方便的多,而且查詢速度非???,可以實(shí)現(xiàn)近

    2024年02月08日
    瀏覽(36)
  • 微服務(wù)04 分布式搜索引擎 elasticsearch DSL數(shù)據(jù)聚合 自動(dòng)補(bǔ)全 數(shù)據(jù)同步 集群 Sentinel

    微服務(wù)04 分布式搜索引擎 elasticsearch DSL數(shù)據(jù)聚合 自動(dòng)補(bǔ)全 數(shù)據(jù)同步 集群 Sentinel

    聚合(aggregations)可以讓我們極其 方便的實(shí)現(xiàn)對(duì)數(shù)據(jù)的統(tǒng)計(jì)、分析、運(yùn)算 。例如: 什么品牌的手機(jī)最受歡迎? 這些手機(jī)的平均價(jià)格、最高價(jià)格、最低價(jià)格? 這些手機(jī)每月的銷售情況如何? 實(shí)現(xiàn)這些 統(tǒng)計(jì)功能的比數(shù)據(jù)庫的sql要方便的多,而且查詢速度非常快 ,可以實(shí)現(xiàn)近

    2024年02月11日
    瀏覽(28)
  • 微服務(wù)04 分布式搜索引擎 elasticsearch DSL數(shù)據(jù)聚合 自動(dòng)補(bǔ)全 數(shù)據(jù)同步 集群 微服務(wù)保護(hù) Sentinel

    微服務(wù)04 分布式搜索引擎 elasticsearch DSL數(shù)據(jù)聚合 自動(dòng)補(bǔ)全 數(shù)據(jù)同步 集群 微服務(wù)保護(hù) Sentinel

    聚合(aggregations)可以讓我們極其 方便的實(shí)現(xiàn)對(duì)數(shù)據(jù)的統(tǒng)計(jì)、分析、運(yùn)算 。例如: 什么品牌的手機(jī)最受歡迎? 這些手機(jī)的平均價(jià)格、最高價(jià)格、最低價(jià)格? 這些手機(jī)每月的銷售情況如何? 實(shí)現(xiàn)這些 統(tǒng)計(jì)功能的比數(shù)據(jù)庫的sql要方便的多,而且查詢速度非常快 ,可以實(shí)現(xiàn)近

    2024年02月15日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包