本篇博文主要對HyperBase(HBase)、Search(ElasticSearch)的索引類型及具體存儲位置進行概要總結,讓大家從整體上了解TDH平台中HyperBase和Search索引的管理。后續會在大數據核心原理與實踐專欄中對索引相關知識進行詳細講解。
ESSearch索引類型存放位置
在早期ESSearch1.X版本,會將索引存在內存,但之后發現沒啥明顯提升,就在2.X版本去掉了內存存儲方式。故現在最新的ESSearch的索引應當存放在本地磁盤。
具體的文件存儲格式有如下幾種:
simplefs
這是一個隨機訪問文件的文件存儲系統,並發性能較差,多線程下存在性能瓶頸問題。如果我們想對ESSearch索引做持久化,推薦使用niofs。
NIO FS(NIO文件系統)
通過NIO將分片索引文件寫到文件系統上,允許多線程同時讀取文件。
MMap FS(內存映射文件系統)
將索引分片存儲到文件系統上,再通過映射,將索引文件映射到內存中。map即為映射的意思。不過我們需要注意:索引文件映射到內存過程中,我們需要划分出與被映射文件大小一樣的虛擬內存空間。
# 設置Linux虛擬地址空間大小
echo "vm.max_map_count=262144" >> /etc/sysctl.conf && sysctl -p
MMap FS / NIO FS(缺省值, 即default_fs)
它會為每個類型的文件選擇最好的文件系統。
HBase 索引類型及存放位置
HBase索引分為3種:
一級索引:即原表RowKey索引。這個當然是存放在原表中(此索引存在HDFS上)
二級索引:在某個或某些列上建立二級索引,實現基於列的快速條件查詢,此索引也是與原表一起存放(此索引存在HDFS上)
全文索引:HBase底層借助ElasticSearch實現全文索引,而ElasticSearch的索引是存在本地磁盤上的,故HBase的全文索引也是存儲在磁盤上。
(注1:在最新版本,使用默認的存儲設置default_fs就行。ESSearch會在Windows的64bit系統上使用 mmapfs,在windows的32bit系統上使用 simplefs ,除此之外默認使用 default_fs (hybrid niofs 和 mmapfs),如Linux。)
(注2:在商業發行版大數據平台TDH上,也是默認存在本地磁盤,但同時也支持存在HDFS上)
總結
說了這么多,大家只要記住ElasticSearch將索引存儲在本地磁盤,HBase一級索引、二級索引存在HDFS上,全文索引存在本地磁盤即可!
原文鏈接:https://blog.csdn.net/whdxjbw/article/details/81133830