CSS技術預覽版特性:基于OBS的存算分離
什么是ES存算分離技術
云搜索服務對存儲在服務里面的數據,可以通過接口操作,將數據從EVS、直通盤的儲存數據直接轉移到對象存儲OBS里面。將數據轉儲到OBS的過程稱為冷凍。
技術原理
這項技術并非簡單的將存儲轉移到對象存儲,重點是如何實現Shadow Replica可靠的消除存儲副本,以及消除超大存儲帶來的Cache開銷,否則無法實現小節點帶大存儲。
緩存及其優化辦法
將數據轉儲到OBS后,為了盡可能的減少對OBS的訪問請求,并提升ES的查詢性能,系統會將緩存部分數據。第一次獲取到數據時,會直接訪問OBS,之后將獲取到的數據緩存在內存中,后續訪問會先檢查是否有緩存。數據緩存在堆外內存中。
ES訪問不同的文件訪問的模式是不一樣的,緩存系統支持多級緩存,分別使用不同的block大小來緩存不同的文件,如對fdx,tip文件,使用大量的小block緩存,對fdt文件,使用較少的大block緩存。
以下為針對緩存的所有配置:
配置名
類型
默認值
說明
low_cost.obs.blockcache.names
Array
default
緩存系統支持多級緩存,分別用來緩存不同訪問粒度的數據,此配置列出所有緩存的名字。即使不配置,系統也會默認有一個緩存,名字為default,如果自定義配置,請確保有一個名字為default的緩存,其他名字任意。
low_cost.obs.blockcache.
Int
13
緩存每個block的大小,為字節左移數,如配置為16,表示block大小為65536字節,即64K.默認8K
low_cost.obs.blockcache.
Int
1
緩存分區數
low_cost.obs.blockcache.
Int
8192
每個緩存分區中包含的block數
low_cost.obs.blockcache.
Array
不緩存的文件后綴名。如果某些后綴既不包含中exclude列表,又不包含中include列表,則會使用default緩存。
low_cost.obs.blockcache.
Array
緩存的文件后綴名。如果某些后綴既不包含中exclude列表,又不包含中include列表,則會使用default緩存。
以下為一個較為常見的緩存配置,該配置使用兩級緩存,名字分別為default和large,其中default緩存使用64K的block大小,并且一共有6*4096個block,default緩存用于緩存除fdt后綴的其他文件。large緩存使用4M的block大小,一共有3*500個block,large緩存用于緩存fdx,dvd,tip后綴的文件。
low_cost.obs.blockcache.names: ["default", "large"]
low_cost.obs.blockcache.default.blockshift: 16
low_cost.obs.blockcache.default.number.blocks.perbank: 4096
low_cost.obs.blockcache.default.bank.count: 6
low_cost.obs.blockcache.default.exclude.file.types: ["fdt"]
low_cost.obs.blockcache.large.blockshift: 22
low_cost.obs.blockcache.large.number.blocks.perbank: 500
low_cost.obs.blockcache.large.bank.count: 3
low_cost.obs.blockcache.large.file.types: ["fdx", "dvd", "tip"]
如何使用
1、??通過接口直接使用
指定要操作的索引,使用接口
POST {index}/_freeze_low_cost
該請求為異步請求,下發下去后會啟動轉儲任務,并返回task id:
可以使用tasks接口查看任務是否已完成:
GET _tasks/{taskId}
返回樣例:
2、??結合索引生命周期,參考章節1.2.3
3、??其他接口
1)??????列出集群中已冷凍的索引
GET _cat/freeze_indices?v
返回樣例:
2)??????執行冷凍
POST {index}/_freeze_low_cost
3)??????查看冷凍進度
GET {index}/_freeze_low_cost_progress
返回樣例:
{
"shards" : [
{
"index" : "log2",
"uuid" : "J_yYlVHxSd-E-EL9r5oyjA",
"shard" : 0,
"start_ms" : 1583837699953,
"end_ms" : 1583837702103,
"total_bytes" : 3004,
"finished_bytes" : 3004,
"total_files" : 4,
"finished_files" : 4
}
]
4)??????查看緩存狀態
{
"_nodes" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"cluster_name" : "Es-0111",
"nodes" : {
"C-CPEm-QSueKR4bhuqoT2Q" : {
"name" : "Es-0111-ess-esn-1-1",
"transport_address" : "192.168.115.115:9300",
"host" : "192.168.115.115",
"ip" : "192.168.115.115",
"large" : {
"block_cache_capacity" : 1500,
"block_cache_blocksize" : 4194304,
"block_cache_size" : 1499,
"block_cache_hit" : 240284719,
"block_cache_miss" : 14356,
"block_cache_eviction" : 12314,
"block_cache_store_fail" : 738
},
"default" : {
"block_cache_capacity" : 24576,
"block_cache_blocksize" : 65536,
"block_cache_size" : 24575,
"block_cache_hit" : 705825,
"block_cache_miss" : 328788,
"block_cache_eviction" : 301871,
"block_cache_store_fail" : 3065
},
"obs_list_count" : 4080,
"obs_get_meta_count" : 28406,
"obs_get_obj_count" : 195829,
"obs_put_obj_count" : 0,
"obs_list_ms" : 53754,
"obs_get_meta_ms" : 132073,
"obs_get_obj_ms" : 3391771,
"obs_put_obj_ms" : 0,
"obs_op_total_ms" : 3577598,
"obs_op_total_count" : 228315
}
}
}
注意事項
確保在執行冷凍操作前
1、??需冷凍的索引沒有數據寫入。在冷凍操作執行前,會將索引配置為read only,會導致寫入數據出錯。
2、??在執行冷凍索引時,不能同步在執行force merge,如果在冷凍索引時該索引在force merge,則會先將索引close,再open后進行冷凍。建議在執行冷凍前執行一次徹底的force merge,將小的segment文件合并成大文件能有效提升冷凍以后的查詢性能。
執行冷凍操作后
1、索引變為只讀。
2、索引數據將會轉儲到OBS,轉移過程中,會占用網絡帶寬。
3、轉儲后的索引,查詢時延會增加,聚合時由于查詢復雜,數據讀取多,時延邊長會體現的更明顯。
4、?已冷凍的索引不支持解凍,即不能回退可寫的索引。
CSS 對象存儲服務 OBS
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。