ES讀寫流程

2022-06-18 21:51:15 字數 1226 閱讀 3078

簡述es的寫流程,get讀取資料流程和search搜尋資料流程。

es的讀寫流程主要是協調節點,主分片節點、副分片節點間的相互協調。

es的讀取分為get和search兩種操作。get根據文件id從正排索引中獲取內容;search不指定id,根據關鍵字從倒排索引中獲取內容。

客戶端向集群中的某個節點傳送寫請求,該節點就作為本次請求的協調節點;

協調節點使用文件id來確定文件屬於某個分片,再通過集群狀態中的內容路由表資訊獲知該分片的主分片位置,將請求**到主分片所在節點;

主分片節點上的主分片執行寫操作。如果寫入成功,則它將請求並行**到副分片所在的節點,等待副分片寫入成功。所有副分片寫入成功後,主分片節點向協調節點報告成功,協調節點向客戶端報告成功。

客戶端向集群中的某個節點傳送讀取請求,該節點就作為本次請求的協調節點;

協調節點使用文件id來確定文件屬於某個分片,再通過集群狀態中的內容路由表資訊獲知該分片的副本資訊,此時它可以把請求**到有副分片的任意節點讀取資料。

協調節點會將客戶端請求輪詢傳送到集群的所有副本來實現負載均衡。

收到讀請求的節點將文件返回給協調節點,協調節點將文件返回給客戶端

es的search操作分為兩個階段:query then fetch。需要兩階段完成搜尋的原因是:在查詢時不知道文件位於哪個分片,因此索引的所有分片都要參與搜尋,然後協調節點將結果合併,在根據文件id獲取文件內容。

query查詢階段

客戶端向集群中的某個節點傳送search請求,該節點就作為本次請求的協調節點;

協調節點將查詢請求**到索引的每個主分片或者副分片中;

每個分片在本地執行查詢,並使用本地的term/document frequency資訊進行打分,新增結果到大小為from+size的本地有序優先佇列中;

每個分片返回各自優先佇列中所有文件的id和排序值給協調節點,協調節點合併這些值到自己的優先佇列中,產生乙個全域性排序後的列表。

fetch拉取階段

query節點知道了要獲取哪些資訊,但是沒有具體的資料,fetch階段要去拉取具體的資料。相當於執行多次上面的get流程

協調節點向相關的節點傳送get請求;

分片所在節點向協調節點返回資料;

協調階段等待所有的文件被取得,然後返回給客戶端。

參考自《es原始碼解析與優化實踐》

hdfs讀寫流程 HDFS 讀寫流程(詳解)

hdfs hadoop distributed file system 是gfs的開源實現。1 優點 因為有多個副本,可以保證資料可靠,容錯性高 計算向資料移動,適用於批處理 適合大資料處理,gb tb pb級資料,百萬以上的檔案,十萬以上的節點 可以構建在廉價機器上,通過多副本提高可靠性 2 缺點...

hdfs讀寫流程 HDFS 檔案讀寫流程

開啟分布式檔案 呼叫分布式檔案 distributedfilesystem.open 方法 定址請求 從 namenode 處得到 datanode 的位址,distributedfilesystem使用 rpc 方式呼叫了namenode,namenode 返回存有該副本的datanode 位址,...

HBase 讀寫流程

1.讀流程 client先訪問zookeeper,從meta表讀取region的位置,然後讀取meta表中的資料。meta中又儲存了使用者表的region資訊 根據namespace 表名和rowkey在meta表中找到對應的region資訊 找到這個region對應的regionserver 查詢...