1. 程式人生 > >Hadoop生態叢集之HDFS

Hadoop生態叢集之HDFS

、HDFS是什麼

二、HDFS的搭建

三、HDFS的組成

四、HDFS的儲存流程和原理

五、HDFS的shell命令

 

一、HDFS是什麼

  HDFS是hadoop叢集中的一個分散式的我檔案儲存系統。他將多臺叢集組建成一個叢集,進行海量資料的儲存。為超大資料集的應用處理帶來了很多便利。

  和其他的分散式檔案儲存系統相比他有以下優點:

  高容錯:即在HDFS執行過程中,若其中一臺機器宕機了,也無需擔心資料的丟失,因為在儲存的過程中進行了備份,備份數量可以選擇,這個將在後面的部落格說明。

  成本低:即使配置條件不足的情況下,都可以搭建一個HDFS,對硬體的要求不高。

  易擴充套件:若出現叢集容量不足的情況,直接新增機器,進行配置即可,無需太麻煩的操作。

  高吞吐量:HDFS能夠提供比較吞吐量的資料訪問,這裡是訪問不是修改

  在滿足以上有點的同時,也存在一些不足:

  對於對資料的訪問時間要求較高的情況下,HDFS並沒有什麼優勢,這一點會在原理上進行解釋。

  不利於同時有大量的用使用者進行檔案的修改操作。

二、HDFS的平臺搭建

  搭建HDFS叢集的方式有很多種,目前在企業工作中應用較多的是通過cloudera manager來對整個hadoop叢集進行搭建,同時提供一整套的監控平臺進行監控,大大提高了維護成本。但是對於初學者來說還是進行原始碼的方式安裝

這樣有助於大家更加深入的瞭解HDFS的工作原理和配置引數的作用,小編在這就通過這種方式進行安裝,當然如果有興趣的讀者,我會在接下來的時間通過cloudera manager的方式進行搭建。

  搭建準備:注意這是在linux機器上進行搭建,如對如何配置linux環境的同學不動的話,可以在網上進行搜尋,小編也會更新博文給大家提供便利。

主機名:hdp-01  對應的ip地址:192.168.33.61
主機名:hdp-02  對應的ip地址:192.168.33.62
主機名:hdp-03  對應的ip地址:192.168.33.63
主機名:hdp-04  對應的ip地址:192.168
.33.64

  第一步:關閉防火牆

[[email protected] ~]# service iptables stop  # 臨時關閉
[[email protected] ~]# chkconfig iptables off  # 關閉防火牆開機自動啟動

  第二步:安裝jdk,因為hdfs是通過java語言開發的,所以需要我們安裝java的執行環境

  jdk下載地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  

 

    下載對應版本:我這裡下載的是 

tar -zxvf jdk-8u191-linux-x64.tar.gz

 

  對應整個叢集環境,為了方便管理可以將安裝包上傳到 /usr/local/src下面

  解壓:

二、HDFS資料儲存原理

  要了解HDFS資料的儲存原理,就必須知道HDFS的工作原理,通過工作原理,我們就可以得出HDFS的資料儲存原理。

hdfs有著檔案系統共同的特徵:

1、有目錄結構,頂層目錄是:  /

2、系統中存放的就是檔案

3、系統可以提供對檔案的:建立、刪除、修改、檢視、移動等功能

hdfs跟普通的單機檔案系統有區別:

1、單機檔案系統中存放的檔案,是在一臺機器的作業系統中

2、hdfs的檔案系統會橫跨N多的機器

3、單機檔案系統中存放的檔案,是在一臺機器的磁碟上

4、hdfs檔案系統中存放的檔案,是落在n多機器的本地單機檔案系統中(hdfs是一個基於linux本地檔案系統之上的檔案系統)

hdfs的工作機制:簡單的講,hdfs是分散式的檔案儲存系統,它可以將一個大的檔案切塊,將這些塊儲存在不同的伺服器上。

1、客戶把一個檔案存入hdfs,其實hdfs會把這個檔案切塊後,分散儲存在N臺linux機器系統中(負責儲存檔案塊的角色:datanode)<準確來說:切塊的行為是由客戶端決定的>,切塊的大小,切塊的副本數這些都可以由

客戶端進行指定,若沒有進行指定,則HDFS會自動載入配置檔案中配置的資訊,進行切塊大小,副本數量資訊。

2、一旦檔案被切塊儲存,那麼,hdfs中就必須有一個機制,來記錄使用者的每一個檔案的切塊資訊,及每一塊的具體儲存機器(負責記錄塊資訊的角色是:name node),這樣可以方便客戶端在訪問hdfs檔案系統時準確的

找到每一塊檔案儲存在哪些節點上,將切塊的資料進行歸整,同時他又可以合理的控制磁碟IO問題。

3、為了保證資料的安全性,hdfs可以將每一個檔案塊在叢集中存放多個副本,保證當其中一臺機器宕機後,namenode可以通過記錄的副本資訊找到切塊的檔案。(到底存幾個副本,是由當時存入該檔案的客戶端指定的)

綜述:一個hdfs系統,由一臺運行了namenode的伺服器,和N臺運行了datanode的伺服器組成!

如下圖所示,就是一個簡單的HDFS分散式檔案系統的模型:

     儲存檔案的詳情:請看下圖

    

      HDFS檔案儲存資訊:

        1、hdfs客戶端與服務端進行互動,將檔案儲存在hdfs叢集中。

           2、hdfs服務端將客戶端傳來的檔案,根據引數進行切塊、複製,並將這些塊儲存在hdfs的datanode節點中。

                          3、hdfs的namenode節點記錄某個檔案的元資料(元資料包含檔案大小,檔案路徑,檔案塊儲存在哪個地方,副本資訊等)

       

         HDFS讀取資料流程如下圖:

      

 

      HDFS寫資料流程資料流程如下圖: