開源分布式存儲系統:katta
Katta是一個可擴展的、故障容錯的、分布式實施訪問的數據存儲。
Katta可用于大量、重復、索引的碎片,以滿足高負荷和巨大的數據集。這些索引可以是不同的類型。當前該實現在Lucene和Hadoop mapfiles
- 讓大型高負荷的索引變簡單
- 能為許多具有大型Lucene或Hadoop Mapfile 的索引碎片的服務器提供服務
- 在不同服務器上復制碎片以保證性能和容錯性
- 支持插件化的網絡拓撲
- 故障管理
- 快速、輕量級、易于集成
- 與Hadoop集群工作良好
- Apache License,Version 2.0
Intro
Katta is a distributed application running on many commodity hardware servers very similar to Hadoop MapReduce, Hadoop DFS, HBase, Bigtable or Hypertable
Overview
master負責管理節點和索引分片。節點為索引分片服務。客戶端可以去所有節點搜索并合并結果集。目錄/分片種類可以不同,取決于節點服務器的內容服務器
Content Server
每個節點負責一個內容服務器。現在提供Lucene indices和 Hadoop mapfiles. 你可以實現自己的
數據結構
索引文件夾由子索引分片文件夾組成。如lucene的索引分片能用indexwriter創造,僅僅簡單把lucene的索引集合起來。所以katta的目錄能被mapreduce制造。你可以構造自己想要的索引
主節點通信
katta通過zk實現通信,把信息寫在虛擬文件系統里。節點啟動時寫入臨時文件/node/livemaster訂閱虛擬文件系統的任何改變,當節點失敗的時候,zk移除虛擬文件并通知master。
主節點和次主節點也是通過類似方式,由活躍的master寫在/master里
master和nodes都各自有個queue,用來處理自己的操作和任務,具體的:
- 客戶端分配索引部署任務給master queue
- master布置分片任務給nodes
- node做自己queue里的任務,比如去hdfs里拷文件加到lucene內容服務器里,成功后記錄在zk下的“/shard-to-nodes”文件里
- node成功或crash的結果通告給master,然后在zk里公布索引以及一些元數據,如“/indices/indexX”
- 搜索客戶端監視目錄文件夾,會被通知更新.通過讀取“/shard-to-nodes” 文件夾,獲知哪些node在服務新的索引分片
客戶端節點通信
客戶端要和所有節點通信.使用hadoop RPC(很快且比較容易用java實現同步).對搜索請求,發送給所有需要去找索引分片搜索的nodes.請求是多線程處理的,而且hadoop RPC保持TCP/IP連接
給node裝載分片
katta先把分片復制到node的硬盤驅動器。映射的時候是hdfs地址,也支持S3。為了不減慢搜索,為分片部署提供節流機制。
為lucene的評分實現分布式
由于term在分布式情況下在每個分片里不平均,所以每次請求進行兩輪: 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!