一種實現數據讀寫的方法以及分布式文件系統、客戶端的製作方法
2023-06-12 08:51:56 1
專利名稱:一種實現數據讀寫的方法以及分布式文件系統、客戶端的製作方法
技術領域:
本發明涉及分布式系統領域,尤其涉及一種實現數據讀寫的方法以及分布式文件系統、客戶端。
背景技術:
Hadoop Distributed File System,簡稱 HDFS,是一個分布式文件系統。在 HDFS架構中必要角色有三個,Namenode (控制節點)、Datanode (數據節點)和Client (客戶端),其中Namenode為集群單點,在整體架構中,Namenode既充當Client的Server,也充當Datanode的Server,其架構簡圖如圖1所示。當HDFS集群增加到一定規模,如Datanode的數量達到1000以上,Client數量達到1000以上,而每個Client 100+Rff/s (Read&ffriteper second,每秒讀寫請求次數),這時Namenode上承載的長連接數即為2000,且NamenodeRWS數量達到100萬左右。發明人在發明過程中,發現現有的HDFS架構中要完成一次完整的文件讀寫過程會被Client分解成M次Client與Namenode之間的RPC連接和N次Client與Datanode之間的TCP連接,當其中任何一個環節阻塞時,會影響後續環節。HDFS原生RPC架構為I Selector+N handler模式,當Namenode連接數大於N時,其他請求處於緩衝隊列等待讀取。因此,運用現有的分布式文件系統,由於以上限制,在大規模集群訪問時,會存在嚴重的排隊延遲現象,造成讀寫請求延時過高。同時,因Namenode節點只有一個,無法有效應對Client和Datanode數量的線性增長,存在集群擴容方面的瓶頸。
發明內容
本申請實施例提供一種實現數據讀寫的方法以及分布式文件系統、客戶端,用於解決現有的分布式文件系統在大規模集群訪問時,會存在嚴重的排隊延遲現象,造成讀寫請求延時過高的問題,實現讀寫分離。本申請實施例一提供一種實現數據讀寫的方法,應用在分布式文件系統的第一客戶端中,所述分布式文件系統包括至少兩個控制節點,與所述至少兩個控制節點分別連接的至少一個數據節點,所述第一客戶端分別與所述至少兩個控制節點及所述至少一個數據節點分別連接,其中,所述至少兩個控制節點中至少包括第一控制節點及至少一個第二控制節點,所述方法包括:判斷發出的第一請求為寫數據請求還是讀數據請求,所述寫數據請求為寫入第一數據的請求,所述讀數據請求為讀取第二數據的請求;如果是寫數據請求,將所述第一數據寫入寫目標數據節點,其中,所述寫目標數據節點具體為所述第一控制節點基於所述寫數據請求從所述至少一個數據節點中確定的數據節點;所述第一控制節點為能將所述寫目標數據節點的信息發送至所述至少一個第二控制節點的節點;如果是讀數據請求,從讀目標數據節點讀取所述第二數據,其中,所述讀目標數據節點為所述至少一個第二控制節點中一個第二控制節點基於所述讀數據請求從所述至少一個數據節點中確定的數據節點;其中,所述第一數據與所述第二數據為相同或不相同的數據,所述寫目標數據節點與所述讀目標數據節點為相同或不相同的數據節點。進一步的,如上所述的方法,所述如果是寫數據請求,將所述第一數據寫入寫目標數據節點,具體包括:獲取所述第一控制節點的地址信息;向所述第一控制節點發送寫數據請求,接收所述第一控制節點發送的基於所述寫數據請求從所述至少一個數據節點中確定的寫目標數據節點的地址信息;基於所述寫目標數據節點的地址信息,將所述第一數據寫入所述寫目標數據節點。進一步的,如上所述的方法,所述如果是讀數據請求,從讀目標數據節點讀取所述第二數據,具體包括:獲取所述至少一個第二控制節點中的一個第二控制節點的地址信息;向所述地址信息對應的第二控制節點發送讀數據請求,接收所述地址信息對應的第二控制節點發送的基於所述讀數據請求從所述至少一個數據節點中確定的讀目標數據節點的地址信息;基於所述讀目標數據節點的地址信息,從所述讀目標數據節點獲取所述第二數據。其中,所述分布式系統還包括協調服務模塊,所述方法還包括:當檢測到有新增第二控制節點,建立與所述增加第二控制節點的連接;其中,所述新增第二控制節點具體為新增控制節點通過所述協調服務模塊認證的非第一控制節點的節點。所述新增控制節點通過所述協調服務模塊認證,具體包括:所述新增控制節點向所述第一控制節點發送註冊消息;所述第一控制節點查詢註冊消息,確認所述新增控制節點是否已註冊,如果已註冊,則向所述新增控制節點發送批量數據包;如果沒有註冊,則向所述新增控制節點發送鏡像數據;所述新增控制節點加載所述批量數據包或者加載鏡像數據成功,向所述協調服務模塊發送狀態信息;
所述協調服務模塊將所述新增節點認證為所述第二控制節點。進一步的,如上所述的方法,所述方法還包括:當接收到所述協調服務模塊發送的第二控制節點斷開消息,將與所述斷開消息對應的第二控制節點斷開連接,並將所述斷開消息對應的第二控制節點從本地緩存中移除。本申請實施例還提供一種分布式文件系統,所述系統包括:至少兩個控制節點;與所述至少兩個控制節點分別連接的至少一個數據節點;
其中,所述至少兩個控制節點及所述至少一個數據節點分別連接第一客戶端,所述至少兩個控制節點中至少包括第一控制節點及至少一個第二控制節點。本申請實施例還提供一種客戶端,在分布式文件系統中讀寫數據,所述分布式文件系統包括至少兩個控制節點,與所述至少兩個控制節點分別連接的至少一個數據節點,所述客戶端分別與所述至少兩個控制節點及所述至少一個數據節點分別連接,其中,所述至少兩個控制節點中至少包括第一控制節點及至少一個第二控制節點,所述客戶端包括:接收模塊,用於接收第一請求;判斷模塊,用於判斷所述第一請求為寫數據請求還是讀數據請求,獲得判斷結果,其中,所述寫數據請求為寫入第一數據的請求,所述讀數據請求為讀取第二數據的請求;數據寫入模塊,用於當所述判斷結果表明,所述第一請求為寫數據請求時,從所述第一控制節點接收寫目標數據節點的信息,並將所述第一數據寫入所述寫目標數據節點,其中,所述寫目標數據節點是所述第一控制節點基於所述寫數據請求從所述至少一個數據節點中確定的數據節點,且在所述第一客戶端從所述第一控制節點接收寫目標數據節點的信息的同時,所述第一控制節點將所述寫目標數據節點的信息發送至所述至少一個第二控制節點;數據讀取模塊,用於當所述判斷結果表明,所述第一請求為讀數據請求時,從所述至少一個第二控制節點中一個第二控制 節點接收讀目標數據節點的信息,並從所述讀目標數據節點讀取所述第二數據,其中,所述讀目標數據節點是所述至少一個第二控制節點中一個第二控制節點基於所述讀數據請求從所述至少一個數據節點中確定的數據節點;進一步的,所述數據寫入模塊,具體包括:獲取單元一,用於獲取所述第一控制節點的地址信息;寫數據請求發送單元,用於向所述第一控制節點發送寫數據請求,接收所述第一控制節點發送的基於所述寫數據請求從所述至少一個數據節點中確定的寫目標數據節點的地址信息;寫入單元,用於基於所述寫目標數據節點的地址信息,將所述第一數據寫入所述寫目標數據節點。進一步的,所述數據讀取模塊,具體包括:獲取單元二,用於獲取所述至少一個第二控制節點中的一個第二控制節點的地址
信息;讀數據請求發送單元,用於向所述地址信息對應的第二控制節點發送讀數據請求,接收所述地址信息對應的第二控制節點發送的基於所述讀數據請求從所述至少一個數據節點中確定的讀目標數據節點的地址信息;讀取單元,用於基於所述讀目標數據節點的地址信息,從所述讀目標數據節點獲取所述第二數據。本申請通過上述一個或多個實施例提供的技術方案,具有以下有益技術效果或者優點之一:1.本申請實施例通過提供(1+N)多Namenode模式的分布式文件系統,讀請求被N臺Namenode共同分擔後,單個Namenode的讀壓力負載極大下降,集群整體讀速度會有極大提聞。
2.Namenode的擴展性加強,如系統讀請求較高時,動態增加一臺新的Namenode即可;反之如系統讀請求降低,動態移除一臺Slave Namenode即可。3.所有Namenode啟動方式完全一樣,無其他額外開銷。4.讀數據和寫數據的過程是通過不同的Namenode來進行的,是分開的,且讀寫算法都是在客戶端進行,無熱點,即沒有被長期大量訪問的節點,避免導致節點很熱進而出現問題。
圖1為本申請實施例1中實現數據讀寫的方法流程圖;圖2為本申請實施例提供的HDFS架構中三個重要角色之間的數據交互圖;圖3為本申請實施例提供的客戶端結構圖。
具體實施例方式本申請實施例提供一種實現數據讀寫的方法以及分布式文件系統、客戶端,用於解決現有的分布式文件系統在大規模集群訪問時,會存在嚴重的排隊延遲現象,造成讀寫請求延時過高的問題,實現讀寫分離。為了更清楚的理解上述技術方案以及有益效果,下面結合附圖和具體實施方式
對上述方案進行詳細的闡述。實施例1如圖1所示,為實現數據讀寫的方法流程圖,本申請實施例提供一種實現數據讀寫的方法,應用在分布式文件·系統的第一客戶端中,該分布式文件系統包括至少兩個控制節點,與所述至少兩個控制節點分別連接的至少一個數據節點,第一客戶端分別與所述至少兩個控制節點及所述至少一個數據節點分別連接,其中,所述至少兩個控制節點中至少包括第一控制節點及至少一個第二控制節點,所述方法包括:步驟101,判斷發出的第一請求為寫數據請求還是讀數據請求,該寫數據請求為寫入第一數據的請求,該讀數據請求為讀取第二數據的請求;步驟102,如果是寫數據請求,將第一數據寫入寫目標數據節點,其中,該寫目標數據節點具體為第一控制節點基於寫數據請求從所述至少一個數據節點中確定的數據節點;第一控制節點為能將寫目標數據節點的信息發送至所述至少一個第二控制節點的節點;步驟103,如果是讀數據請求,從讀目標數據節點讀取第二數據,其中,該讀目標數據節點為所述至少一個第二控制節點中一個第二控制節點基於所述讀數據請求從所述至少一個數據節點中確定的數據節點;其中,所述第一數據與所述第二數據為相同或不相同的數據,所述寫目標數據節點與所述讀目標數據節點為相同或不相同的數據節點。如圖2所示,為本申請實施例提供的HDFS架構中三個重要角色之間的數據交互圖。為了實現讀寫分離,本申請實施例針對HDFS原生的write-one-read-many訪問模型,提出了(I+N)多Namenode模式,其中I個Namenode作為Master Namenode, 一般情況下只負責所有寫入類操作,另外N個Namenode作為Slave Namenode,只負責所有讀取操作。
而Master Namenode和Slave Namenode通過自由選舉算法在啟動HDFS時從所有的Namenode中產生。當然,本申請實施例提供的模式中,產生出一個Master Namenode,其餘的都作為Slave Namenode0N個Slave Namenode之間具備負載均衡算法,保證每個Slave Namenode的請求負載數在一段時間內完全一樣。如圖2所示,引入了 Zookeeper ( —致性節點)組成的分布式集群,該Zookeeper
運行在Namenode之上,在本申請實施例中將Namenode與Zookeeper的比例設置為--對
應關係,當然不一定是一一對應關係,這裡使用了一一對應的關係,是為了更好最大化的使用資源,這個關係是不固定的。可以根據實際情況來設置該比例。理論上來講,Zookeeper集群數量越大,性能相對越好,但是這個性能的提升相對於多使用的伺服器硬體來說,是微
不足道的,也就是性價比其實很低。Namenode與Zookeeper的比例設置為--對應關係是
個比較好的一個性價比模式。Master Namenode備份Metadata到所有的Slave Namenode,該數據同步過程是異步的。其中,該數據同步包含發送接受和處理兩個步驟,其中發送接受是同步過程,數據處理是異步過程,即保證數據可以發送到所有的Slave Namenode,而不用等待所有的SlaveNamenode處理完成。Client和Datanode與Namenode之間建立長連接Session,用於事件回調和通知。下面對客戶端向數據節點Datanode寫入數據的過程進行詳細的描述,假設如圖2所不的三個Namenode,其中一個為主Namenode,其他兩個為從Namenode,三個Datanode,以及兩個客戶端,具體寫入數據的過程如下:`
步驟si, Client從本地緩存中獲取到Master Namenoded的地址信息,如果本地緩存為空,則經過負載均衡分析向負載最低的Zookeeper節點獲取Master節點信息;步驟s2, Client向Master Namenode發送寫數據請求,建立RPC連接,如果已建立則略過。接收所述Master Namenode發送的基於所述寫數據請求從所述3個Datanode中確定的寫目標數據節點的地址信息;同時,為了保證Slave Namenode數據的同步,MasterNamenode將確定的寫目標數據節點的地址信息同步到所有的Slave Namenode,運用單獨的多點同步機制保證數據被正確的發送到Slave Namenode。步驟s3,基於所述寫目標數據節點的地址信息,Client將數據寫入所述寫目標數據節點。下面對客戶端向數據節點Datanode讀取數據的過程進行詳細的描述,同樣假設如圖2所不的三個Namenode,其中一個為Master Namenode,其他兩個為Slave Namenode,三個Datanode,以及兩個客戶端,具體讀取數據的過程如下:步驟HI, Client 獲取所述 2 個 Slave Namenode 中的一個 Slave Namenode 的地址信息;首先,Client從本地緩存獲取2個Slave Namenode的地址信息,如果本地緩存為空,則經過負載均衡分析向負載最低的Zookeeper節點獲取2個Slave Namenode的地址信息;然後,Client經過負載均衡算法,選擇其中一個Slave Namenode節點訪問。如果該SlaveNamenode無法連通,則選擇另外一個Slave Namenode訪問。將該Slave Namenode列入Bad隊列。步驟H2,向所述地址信息對應的Slave Namenode發送讀數據請求,接收所述地址信息對應的Slave Namenode發送的基於所述讀數據請求從所述3個數據節點Datanode中確定的讀目標數據節點的地址信息;步驟H3,基於所述讀目標數據節點的地址信息,從所述讀目標數據節點獲取數據。實施例2運用本申請實施例提供的如圖2所示的HDFS架構,對於衝破現有的HDFS架構中線性擴展瓶頸起到了有益的技術效果,實現動態擴容,有效應對Client和Datanode數量的線性增長。如系統讀請求較高,則需要動態增加一臺新的Namenode ;具體擴展過程如下:1、當系統新增一個Namenode,在啟動過程中,會通過分布式選舉算法推選自己為Master Namenode ;2、該選舉過程會失敗,因為系統中已經存在Master Namenode,因此,該新增Namenode 向 Master Namenode 發起註冊信息。3、Master Namenode查詢該註冊信息,確認該新增Namenode是否已經註冊過,如果註冊過且在指定時間內,比如在24小時內註冊過,則Master Namenode開啟批量同步任務,將該時間段內的所有數據一次性同步到該新增Namenode ;4、如果該新增Namenode完全沒有註冊過,則Master Namenode開啟鏡像同步任務,將所有鏡像數據同步到該新增Namenode ;5、該新增Namenode加載鏡像數據成功或者加載批量數據包成功,則向Zookeeper集群上報狀態;
6、Zookeeper認證該新增Namenode合法,則將該新增Namenode加載到SlaveNamenode內部列表中,並將該Slave Namenode列表數據全部下發到所有的Client ;7、Client接收到新的Slave Namenode列表信息,建立與該新增Slave Namenode的連接,到此新增一個Namenode完畢。反之如果系統讀請求降低,動態移除一臺Slave Namenode即可。具體移除過程如下:I)關閉一臺 Slave Namenode ;2) Zookeeper集群檢測到Session (會話)連接斷開,產生Node Disconnect (節點斷開)事件,並將所述Node Disconnect下發到所有的Client和Namenode ;3)Client將該Slave Namenode地址從本地緩存移除,與該Slave Namenode的所有連接事務都斷開。4)同時,Master Namenode 也斷開與該 Slave Namenode 的同步連接。實施例3如圖3所示,本申請實施例還提供一種客戶端,在分布式文件系統中讀寫數據,所述分布式文件系統包括至少兩個控制節點,與所述至少兩個控制節點分別連接的至少一個數據節點,所述客戶端分別與所述至少兩個控制節點及所述至少一個數據節點分別連接,其中,所述至少兩個控制節點中至少包括第一控制節點及至少一個第二控制節點,所述客戶端包括:接收模塊301,用於接收第一請求;判斷模塊302,用於判斷所述第一請求為寫數據請求還是讀數據請求,獲得判斷結果,其中,所述寫數據請求為寫入第一數據的請求,所述讀數據請求為讀取第二數據的請求;數據寫入模塊303,用於當所述判斷結果表明,所述第一請求為寫數據請求時,從所述第一控制節點接收寫目標數據節點的信息,並將所述第一數據寫入所述寫目標數據節點,其中,所述寫目標數據節點是所述第一控制節點基於所述寫數據請求從所述至少一個數據節點中確定的數據節點,且在所述第一客戶端從所述第一控制節點接收寫目標數據節點的信息的同時,所述第一控制節點將所述寫目標數據節點的信息發送至所述至少一個第二控制節點;數據讀取模塊304,用於當所述判斷結果表明,所述第一請求為讀數據請求時,從所述至少一個第二控制節點中一個第二控制節點接收讀目標數據節點的信息,並從所述讀目標數據節點讀取所述第二數據,其中,所述讀目標數據節點是所述至少一個第二控制節點中一個第二控制節點基於所述讀數據請求從所述至少一個數據節點中確定的數據節
佔.
其 中,所述第一數據與所述第二數據為相同或不相同的數據,所述寫目標數據節點與所述讀目標數據節點為相同或不相同的數據節點。其中,所述數據寫入模塊303,具體包括:獲取單元一,用於獲取所述第一控制節點的地址信息;寫數據請求發送單元,用於向所述第一控制節點發送寫數據請求,接收所述第一控制節點發送的基於所述寫數據請求從所述至少一個數據節點中確定的寫目標數據節點的地址信息;寫入單元,用於基於所述寫目標數據節點的地址信息,將所述第一數據寫入所述寫目標數據節點。所述數據讀取模塊304,具體包括:獲取單元二,用於獲取所述至少一個第二控制節點中的一個第二控制節點的地址
信息;讀數據請求發送單元,用於向所述地址信息對應的第二控制節點發送讀數據請求,接收所述地址信息對應的第二控制節點發送的基於所述讀數據請求從所述至少一個數據節點中確定的讀目標數據節點的地址信息;讀取單元,用於基於所述讀目標數據節點的地址信息,從所述讀目標數據節點獲取所述第二數據。本申請通過上述一個或多個實施例提供的技術方案,具有以下有益技術效果或者優點之一:1.本申請實施例通過提供(1+N)多Namenode模式的分布式文件系統,讀請求被N臺Namenode共同分擔後,單個Namenode的讀壓力負載極大下降,集群整體讀速度會有極大提聞。2.Namenode的擴展性加強,如系統讀請求較高時,動態增加一臺新的Namenode即可;反之如系統讀請求降低,動態移除一臺Slave Namenode即可。3.所有Namenode啟動方式完全一樣,無其他額外開銷。4.讀數據和寫數據的過程是通過不同的Namenode來進行的,是分開的,且讀寫算法都是在客戶端進行,無熱點,即沒有被長期大量訪問的節點,避免導致節點很熱進而出現問題。儘管已描述了本發明的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本發明範圍的所有變更和修改。顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和範圍。這樣,倘若本發明的這些修改和變型屬於本發明權利要求及其等同技術的範圍之內,則本發明也意圖包含這 些改動和變型在內。
權利要求
1.一種實現數據讀寫的方法,應用在分布式文件系統的第一客戶端中,所述分布式文件系統包括至少兩個控制節點,與所述至少兩個控制節點分別連接的至少一個數據節點,所述第一客戶端分別與所述至少兩個控制節點及所述至少一個數據節點分別連接,其中,所述至少兩個控制節點中至少包括第一控制節點及至少一個第二控制節點,其特徵在於,所述方法包括: 接收第一請求; 判斷所述第一請求為寫數據請求還是讀數據請求,獲得判斷結果,其中,所述寫數據請求為寫入第一數據的請求,所述讀數據請求為讀取第二數據的請求; 當所述判斷結果表明,所述第一請求為寫數據請求時,從所述第一控制節點接收寫目標數據節點的信息,並將所述第一數據寫入所述寫目標數據節點,其中,所述寫目標數據節點是所述第一控制節點基於所述寫數據請求從所述至少一個數據節點中確定的數據節點,且在所述第一客戶端從所述第一控制節點接收寫目標數據節點的信息的同時,所述第一控制節點將所述寫目標數據節點的信息發送至所述至少一個第二控制節點; 當所述判斷結果表明,所述第一請求為讀數據請求時,從所述至少一個第二控制節點中一個第二控制節點接收讀目標數據節點的信息,並從所述讀目標數據節點讀取所述第二數據,其中,所述讀目標數據節點是所述至少一個第二控制節點中一個第二控制節點基於所述讀數據請求從所述至少一個數據節點中確定的數據節點; 其中,所述第一數據與所述第二數據為相同或不相同的數據,所述寫目標數據節點與所述讀目標數據節點為相同或不相同的數據節點。
2.如權利要求1所述的方法,其特徵在於,所述當所述判斷結果表明,所述第一請求為寫數據請求時,從所述第一控制節點接收寫目標數據節點的信息,並將所述第一數據寫入所述寫目標數據節點,具體包括: 獲取所述第一控制節點·的地址信息; 向所述第一控制節點發送寫數據請求,接收所述第一控制節點發送的基於所述寫數據請求從所述至少一個數據節點中確定的寫目標數據節點的地址信息; 基於所述寫目標數據節點的地址信息,將所述第一數據寫入所述寫目標數據節點。
3.如權利要求1所述的方法,其特徵在於,所述當所述判斷結果表明,所述第一請求為讀數據請求時,從所述至少一個第二控制節點中一個第二控制節點接收讀目標數據節點的信息,並從所述讀目標數據節點讀取所述第二數據,具體包括: 獲取所述至少一個第二控制節點中的一個第二控制節點的地址信息; 向所述地址信息對應的第二控制節點發送讀數據請求,接收所述地址信息對應的第二控制節點發送的基於所述讀數據請求從所述至少一個數據節點中確定的讀目標數據節點的地址信息; 基於所述讀目標數據節點的地址信息,從所述讀目標數據節點獲取所述第二數據。
4.如權利要求1 3任一權利要求所述的方法,所述分布式系統還包括協調服務模塊,其特徵在於,所述方法還包括: 當檢測到有新增第二控制節點,建立與所述增加第二控制節點的連接; 其中,所述新增第二控制節點具體為新增控制節點通過所述協調服務模塊認證的非第一控制節點的節點。
5.如權利要求4所述的方法,其特徵在於,所述新增控制節點通過所述協調服務模塊認證,具體包括: 所述新增控制節點向所述第一控制節點發送註冊消息; 所述第一控制節點查詢註冊消息,確認所述新增控制節點是否已註冊,如果已註冊,則向所述新增控制節點發送批量數據包; 如果沒有註冊,則向所述新增控制節點發送鏡像數據; 所述新增控制節點加載所述批量數據包或者加載鏡像數據成功,向所述協調服務模塊發送狀態信息; 所述協調服務模塊將所述新增節點認證為所述第二控制節點。
6.如權利要求4所述的方法,其特徵在於,所述方法還包括: 當接收到所述協調服務模塊發送的第二控制節點斷開消息,將與所述斷開消息對應的第二控制節點斷開連接,並將所述斷開消息對應的第二控制節點從本地緩存中移除。
7.—種分布式文件系統,其特徵在於,所述系統包括: 至少兩個控制節點; 與所述至少兩個控制節點分別連接的至少一個數據節點; 其中,所述至少兩個控制節點及所述至少一個數據節點分別連接第一客戶端,所述至少兩個控制節點中至少包括第一控制節點及至少一個第二控制節點。
8.一種客戶端, 在分布式文件系統中進行讀寫數據,所述分布式文件系統包括至少兩個控制節點,與所述至少兩個控制節點分別連接的至少一個數據節點,所述客戶端分別與所述至少兩個控制節點及所述至少一個數據節點分別連接,其中,所述至少兩個控制節點中至少包括第一控制節點及至少一個第二控制節點,其特徵在於,所述客戶端包括: 接收模塊,用於接收第一請求; 判斷模塊,用於判斷所述第一請求為寫數據請求還是讀數據請求,獲得判斷結果,其中,所述寫數據請求為寫入第一數據的請求,所述讀數據請求為讀取第二數據的請求; 數據寫入模塊,用於當所述判斷結果表明,所述第一請求為寫數據請求時,從所述第一控制節點接收寫目標數據節點的信息,並將所述第一數據寫入所述寫目標數據節點,其中,所述寫目標數據節點是所述第一控制節點基於所述寫數據請求從所述至少一個數據節點中確定的數據節點,且在所述第一客戶端從所述第一控制節點接收寫目標數據節點的信息的同時,所述第一控制節點將所述寫目標數據節點的信息發送至所述至少一個第二控制節佔.數據讀取模塊,用於當所述判斷結果表明,所述第一請求為讀數據請求時,從所述至少一個第二控制節點中一個第二控制節點接收讀目標數據節點的信息,並從所述讀目標數據節點讀取所述第二數據,其中,所述讀目標數據節點是所述至少一個第二控制節點中一個第二控制節點基於所述讀數據請求從所述至少一個數據節點中確定的數據節點; 其中,所述第一數據與所述第二數據為相同或不相同的數據,所述寫目標數據節點與所述讀目標數據節點為相同或不相同的數據節點。
9.如權利要求8所述的客戶端,其特徵在於,所述數據寫入模塊,具體包括: 獲取單元一,用於獲取所述第一控制節點的地址信息; 寫數據請求發送單元,用於向所述第一控制節點發送寫數據請求,接收所述第一控制節點發送的基於所述寫數據請求從所述至少一個數據節點中確定的寫目標數據節點的地 址信息; 寫入單元,用於基於所述寫目標數據節點的地址信息,將所述第一數據寫入所述寫目標數據節點。
10.如權利要求8所述的客戶端,其特徵在於,所述數據讀取模塊,具體包括: 獲取單元二,用於獲取所述至少一個第二控制節點中的一個第二控制節點的地址信息; 讀數據請求發送單元,用於向所述地址信息對應的第二控制節點發送讀數據請求,接收所述地址信息對應的第二控制節點發送的基於所述讀數據請求從所述至少一個數據節點中確定的讀目標數據節點的地址信息; 讀取單元,用於基於所述讀目標數據節點的地址信息,從所述讀目標數據節點獲取所述第二數據。
全文摘要
本發明公開一種實現數據讀寫的方法以及分布式文件系統、客戶端。所述方法具體應用在分布式文件系統的客戶端中,該分布式文件系統包括至少兩個控制節點,與至少兩個控制節點分別連接的至少一個數據節點,所述客戶端分別與至少兩個控制節點及至少一個數據節點分別連接,其中,在至少兩個控制節點中至少包括第一控制節點及至少一個第二控制節點,所述方法包括判斷發出的第一請求為寫數據請求還是讀數據請求,該寫數據請求為寫入第一數據的請求,該讀數據請求為讀取第二數據的請求;如果是寫數據請求,將第一數據寫入寫目標數據節點;如果是讀數據請求,從讀目標數據節點讀取第二數據。
文檔編號H04L29/08GK103248656SQ20121003042
公開日2013年8月14日 申請日期2012年2月10日 優先權日2012年2月10日
發明者張雲龍 申請人:聯想(北京)有限公司