分佈式 文件管理系統

基礎知識篇:

文件儲存在硬盤上,硬盤的最小存儲單位叫做"扇區"(Sector)。每個扇區儲存512字節(相當於0.5KB),

操作系統讀取硬盤的時候,是一次性讀取一個"塊"(block)。這種由多個扇區組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續八個 sector組成一個 block。

儲存文件元信息的區域就叫做inode,中文譯名爲"索引節點"。包含:文件的字節數, 文件擁有者的User ID, 文件的Group ID, 文件的讀、寫、執行權限, 文件的時間戳, 鏈接數,即有多少文件名指向這個inode, 文件數據block的位置


共享磁盤(Shared-disk)/Storage-area network(SAN),在並行控制上做了很多工作,以至於其擁有比較一致連貫的文件系統視圖。

分佈式文件系統(DFS):不是塊級別的共享的形式了,所有加進來的存儲(文件系統)都是整個文件系統的一部分,所有數據的傳輸也是依靠網絡來的,實現的方式有NFS、CIFS、SMB、NCP等,比較著名的產品有Google GFS、Hadoop HDFS、GlusterFS、Lustre等。


RAID:磁盤陣列(Redundant Arrays of Independent Disks,RAID),有“獨立磁盤構成的具有冗餘能力的陣列”之意。

條帶化技術就是將一塊連續的數據分成很多小部分並把他們分別存儲到不同磁盤上去,這就能使對這種數據進行順序訪問的時候可以獲得最大程度上的 I/O 並行能力.

FUSE(用戶空間文件系統)是這樣一個框架:它使得FUSE用戶在用戶態下編寫文件系統成爲可能,而不必和內核打交道。由三個部分組成:linux內核模塊、FUSE庫 以及mount 工具。

*************************************************

序列化系統 ( 序列化就是將對象(實例)轉換爲字符流(字符數組)的過程)

在hadoop裏面有自己定義的序列化格式:Hadoop中定義了兩個序列化相關的接口:Writable接口和Comparable接口,這兩個接口可以合成一個接口WritableComparable. 它是hadoop的核心之一,並已提取爲Avro子項目,

遠程過程調用(Remote Procedure Call,RPC)是一個計算機通信協議,該協議允許運行於一臺計算機的程序調用另一臺計算機的子程序。Hadoop的RPC主要是通過Java的動態代理(Dynamic Proxy)與反射(Reflect)實現。

爲什麼要用RPC呢?舉個例子:當客戶端要訪問服務端數據時就無需每次拷貝整個數據庫或它的大部分程序到客戶端系統。其實,服務端只處理請求,甚至只執行一些數據計算,把得出的結果再發送給客戶端。因爲當數據存放在一個地方時,數據庫同步很容易實現,所以多個客戶端可同時訪問相同的數據。

 Avro依賴模式(Schema)來實現數據結構定義。可以把模式理解爲Java的類,它定義每個實例的結構,可以包含哪些屬性。可以根據類來產生任意多個實例對象。對實例序列化操作時, 需要模式與數據同時存在。Avro數據以模式來讀和寫(文件或是網絡),並且寫入的數據都不需要加入其它標識,這樣序列化時速度快且結果內容少。由於程序可以直接根據模式來處理數據,所以Avro更適合於腳本語言的發揮。 Avro支持兩種序列化編碼方式:二進制編碼和JSON編碼。

Google的Protocol Buffers

Facebook的Thrift:

Thrift通過一箇中間語言(IDL, 接口定義語言)來定義RPC的接口和數據類型,然後通過一個編譯器生成不同語言的代碼(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和OCaml),並由生成的代碼負責RPC協議層和傳輸層的實現。

基於 JSON 消息格式的 RESTful 服務等


********************************************

常見DFS比較:見連接

如果你追求的高效,並且在一定程度上可以容忍少量數據的丟失,那麼lustre將會是你的不二選擇,至於數據的安全性,你可以使用第三方的軟件或者系統來實現,或者說直接就忽略之;

如果你的業務需求是做數據挖掘數據分析,那麼不用多想了,沒有人不選擇HDFS而去選擇其他的;

如果你想使用起來功能比較完善,並且管理起來比較方便,那麼GlusterFS會是不錯的選擇;



Gluster 學習博客:

GlusterFS學習之集羣文件系統研究

Glusterfs全局統一命名空間

Gluster 學習實例

HBase + Gluster 實例

MySQL + Gluster 實例


**************************************************

HBase  加載數據 方法 初探

HBase 加載數據的研究

數據導入HBase最常用的三種方式





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章