搜索引擎:HERMES

jopen 9年前發布 | 13K 次閱讀 HERMES 搜索引擎

Hermes 的出現,并不是為了替代 Solr、ES 的,就像 ES 的出現并不是為了干掉 Oracle 和 MySQL 一樣,而是為了滿足不同層面的需求。

Hermes 使用特點:

1. 一個基于大索引技術的海量數據實時檢索分析平臺。側重數據分析。
2. 數據規模從幾億到萬億不等。最小的表也是千萬級別。

搜索引擎:HERMES

Hermes在索引上的改進:

1.索引按需加載

大 部分的索引處于關閉狀態,只有真正用到索引才會去打開;一級跳躍表采用按需Load,并不會Load整個跳躍表,用來節省內存和提高打開索引的速度。 Hermes經常會根據業務的不同動態的打開不同的索引,關閉那些不經常使用的索引,這樣同樣一臺機器,可以被多種不同的業務所使用,機器利用率高。

2. 排序和統計按需加載

排序和統計并不會使用數據的真實值,而是通過標簽技術將大數據轉換成占用內存很小的數據標簽,占用內存是原先的幾十分之一。

另外不會將這個列的全部值都Load到內存里,而是用到哪些數據Load哪些數據,依然是按需Load。不用了的數據會從內存里移除。

3. 索引存儲在HDFS中

理論上只要HDFS有空間,就可以不斷的添加索引,索引規模不再嚴重受機器的物理內存和物理磁盤的限制,容災和數據遷移容易得多。

4. 采用Gaia進行進程管理(騰訊版的Yarn)

數據在HDFS中,集群規模和擴容都是一件很容易的事情,Gaia在騰訊集群規模已達萬臺)。

5. 采用多條件組合跳躍降低數據傾斜

如果某個詞語存在數據傾斜,則會與其他條件組合進行跳躍合并(參考Doclist的Skip List資料)。

6. 多級Merger與自定義分區

7. GC上進行了一些優化

自 己進行內存管理,關鍵地方的內存對象的創建和釋放Java內部自己控制,減少GC的壓力(類似Hbase的Block Buffer Cache)。 不使用WeakHashMap和全局鎖,WeakHashMap使用不當容易內存泄露,而且性能太差。用于分詞的相關對象是共用的,減少反復的創建對象和 釋放對象。

項目主頁:http://www.baiduhome.net/lib/view/home/1419302183687

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!