1. 程式人生 > >hadoop 檔案系統簡介

hadoop 檔案系統簡介

       本來是個輕鬆的週末,卻被一天半的講座填的滿滿的,除了抱怨之外其實自己所收穫的東西著實也有不少。之前一段時間學東西總是有些著急了,是時候靜下來慢下來思考和整理一下自己的思維了。

      關於hadoop,之前瞭解著實有些少,hadoop其實就是一種分散式系統的架構。通過hadoop這個架構可以實現一些任務的分散式計算。hadoop有自己的檔案系統稱為HDFS,該檔案系統具有高度的容錯性,適合部署在廉價的極機器上。HDFS能提供較高資料吞吐量,非常適合大規模資料集的應用。

      由於一個HDFS系統可能由成百上千個節點構成,在每個節點中儲存著檔案系統的部分資料,一旦其中某個節點發生錯誤就可能造成嚴重的後果,因此,錯誤檢查,快速和自動恢復是整個系統的核心。同時由於HDFS的目標是大規模資料的訪問,因此對於與使用者互動的要求可能沒有那麼高,為了實現大規模資料的傳輸,對硬體約束方面可能作出一些修改,比如增加block的大小(將block由4k變為16M,減少磁碟定址的延遲)。另外在分散式系統中一般要求計算跟靠近資料,這樣可能會減少甚至避免網路阻塞和延遲,提升資料的吞吐量。

      HDFS採用NameNode和DataNode組織結構,一個節點上執行NameNode,其他的節點上執行DataNode。在nameNode上儲存MatarData其中包括檔案屬性,真實資料儲存的DataNode對映等,同時NameNode 也負責檔案的開啟,讀寫等操作。另外namenode節點會收到來自其他節點的心跳,當收到心跳的時候表示該節點正常工作。由於HDFS是由java編寫的,所以nameNode和DataNode可以執行在普通的linux作業系統中。

     為了保證資料的可靠性,需要在系統中進行一些資料的備份,備份的數量可以由使用者自己進行設定。在備份的時候需要選擇datanode,對於在同一個區域網中的datanode有更大的可能性同時被損壞,因此在選擇datanode的時候應該儘量選擇不同的叢集的datanode。一般而言,有3個備份的時候,有2個儲存在本地叢集,其他一個副本放在其他叢集中。當進行資料訪問的時候應該儘量選擇距離較近的節點。