es的寫入過程

2021-09-19 05:26:40 字數 650 閱讀 8561

建立((c)reate)

elasticsearch集群中的每個節點都包含了改節點上分片的元資料資訊。協調節點(預設)使用文件id參與計算,以便為路由提供合適的分片。elasticsearch使用murmurhash3函式對文件id進行雜湊,其結果再對分片數量取模,得到的結果即是索引文件的分片。

shard = hash(document_id) % (num_of_primary_shards)

當分片所在的節點接收到來自協調節點的請求後,會將該請求寫入translog(我們將在本系列接下來的文章中講到),並將文件加入記憶體緩衝。如果請求在主分片上成功處理,該請求會並行傳送到該分片的副本上。當translog被同步(fsync)到全部的主分片及其副本上後,客戶端才會收到確認通知。

記憶體緩衝會被週期性重新整理(預設是1秒),內容將被寫到檔案系統快取的乙個新段上。雖然這個段並沒有被同步(fsync),但它是開放的,內容可以被搜尋到。

每30分鐘,或者當translog很大的時候,translog會被清空,檔案系統快取會被同步。這個過程在elasticsearch中稱為沖洗(flush)。在沖洗過程中,記憶體中的緩衝將被清除,內容被寫入乙個新段。段的fsync將建立乙個新的提交點,並將內容重新整理到磁碟。舊的translog將被刪除並開始乙個新的translog。

Spark寫入ES優化

1.寫入demo,詳情看官網 elasticsearch for apache hadoop 給filesystem cache更多的記憶體 用bulk批量寫入 使用多執行緒將資料寫入es 增加refresh間隔 關閉wal事務日誌 其他優化案例 使用spark將hive的資料同步到es 常用優化策...

HDFS的寫入過程

client發起檔案上傳請求,通過rpc與namenode建立通訊,namenode檢查目標檔案是否已經存在,父目錄是否存在,返回是否可以上傳。client請求第乙個block該傳輸到哪些datanode伺服器上 namenode根據配置檔案中指定的備份數量以及機架感知原理進行檔案分配,返回可用的d...

es 插入很慢 ES批量寫入很慢

cpu e5 8核 2.5g 硬碟 企業sata 記憶體 32g settings number of shards 1 number of replicas 0 refresh interval 60s translog sync interval 60s durability async flu...