hdfs分佈式文件系統

  • Block數據&##x5757;apache

    1. 基本存儲單位,通常大小爲64M(配置大的塊主要是由於:1)減小搜尋時間,通常硬盤傳輸速率比尋道時間要快,大的塊能夠減小尋道時間;2)減小管理塊的數據開銷,每一個塊都須要在NameNode上有對應的記錄;3)對數據塊進行讀寫,減小創建網絡的鏈接成本)瀏覽器

    2. 一個大文件會被拆分紅一個個的塊,而後存儲於不一樣的機器。若是一個文件少於Block大小,那麼實際佔用的空間爲其文件的大小安全

    3. 基本的讀寫S#x5355;位,相似於磁盤的頁,每次都是讀寫一個塊網絡

    4. 每一個塊都會被複制到多臺機器,默認複製3份ssh

  • NameNode分佈式

    1. 存儲文件的metadata,運行時全部數據都保存到內存,整個HDFS可存儲的文件數受限於NameNode的內存大小ide

    2. 一個Block在NameNode中對應一條記錄(通常一個block佔用150字節),若是是大量的小文件,會消耗大量內存。同時map task的數量是由splits來決定的,因此用MapReduce處理大量的小文件時,就會產生過多的map task,線程管理開銷將會增長做業時間。處理大量小文件的速度遠遠小於處理同等大小的大文件的速度。所以Hadoop建議存儲大文件oop

    3. 數據會定時保存到本地磁盤,但不保存block的位置信息,而是由DataNode註冊時上報和運行時維護(NameNode中與DataNode相關的信息並不保存到NameNode的文件系統中,而是NameNode每次重啓後,動態重建)spa

    4. NameNode失效則整個HDFS都失效了,因此要保證NameNode的可用性線程

  • Secondary NameNode

    1. 定時與NameNode進行同步(按期合併文件系統鏡像和編輯日&#x#x5FD7;,而後把合併後的傳給NameNode,替換其鏡像,並清空編輯日誌,相似於CheckPoint機制),但NameNode失效後仍須要手工將其設置成主機

  • DataNode

    1. 保存具體的block數據

    2. 負責數據的讀寫操做和複製操做

    3. DataNode啓動時會向NameNode報告當前存儲的數據塊信息,後續也會定時報告修改信息

    4. DataNode之間會進行通訊,複製數據塊,保證數據的冗餘性





項目案例-hdfs分佈式文件系統


Hadoop是apache軟件基金會的開源分佈式計算平臺hadoop集羣包括兩種角色Mater和Slave。一個HDFS集羣由一個運行於Master上的NameNode和若干個運行於Slave節點的DataNode組成。NameNode負責管理文件系統命名空間和客戶端對文件系統的訪問操做;DataNode管理存儲的數據。文件以塊形式在DataNode中存儲,假如一個塊大小設置爲50MB,塊的副本數爲3(經過設置塊的副本數來達到冗餘效果,防止單個DataNode磁盤故障後數據丟失),一個40MB的文件將被存儲在一個塊中,而後將相同的3個塊存儲在3個DataNode中實現冗餘。大文件將被切成小塊存儲。

本實驗的目的

搭建hadoop的HDFS,經過DataNode節點的添加與刪除實現HDFS空間動態增長與減小,以及HDFS文件系統的基本管理。

實驗環境:blob.png

虛擬機環境:

blob.png

實驗步驟:

一、準備環境

1)master、slave1~3上配置域名解析與主機名

blob.png

blob.pngblob.png

blob.png

blob.png

在0.11~0.13分別操做 主機名不同分別爲slave2,slave3.

blob.pngblob.png

blob.png

2)JDK安裝

blob.png

blob.pngblob.png

3)添加hadoop運行用戶

blob.png

同理:在slave1-slave3上重複步驟2)和步驟3),這裏就不在截圖。

二、配置SSH密鑰對

要求master免密碼登陸各slave,用於開啓相應服務。

Master無密碼鏈接slave,先切換hadoop用戶,用ssh-keygen按照默認配置直接按Enter鍵生成密鑰對,經過ssh-copy-id將公鑰複製至3個slave主機中,複製過程須要輸入slave主機的hadoop用戶密碼,做用是master遠程啓動slave。

blob.png

blob.png

blob.png

blob.png

三、安裝hadoop,在master和slave上配置環境變量。

1)安裝hadoop

blob.png

blob.png

2)配置環境變量

blob.png

blob.png

執行source  /etc/profile

3)配置hadoop

blob.png

blob.png

blob.png

blob.png

blob.png

blob.png

blob.png

blob.png

blob.png

blob.png

blob.png

blob.png

blob.png

每一個slave主機重複步驟1)和步驟2)(即它們也須要安裝hadoop並設置環境變量),等前兩步完成了再由master經過SSH安全通道把剛纔配置的6個文件複製給每一個slave。

每一個slave主機上重複1)和2)步驟的截圖這裏省略,請參考上面去作,命令所有同樣

blob.png

blob.png

blob.png

四、使用HDFS初始化master

1)格式化HDFS文件系統

blob.png

blob.png

2)檢查新生成的目錄

blob.png

3)啓動hadoop羣集(開機hadoop的冗餘功能)

啓停hadoopde的管理命令位於$HADOOP_HOME/sbin下,以start-*stop-*開頭;單獨啓動HDFS分佈式文件系統可以使用start-dfs.sh,也可使用如下命令啓動整個hadoop集羣。

blob.png

4)驗證訪問

經過瀏覽器查看NameNode,即master,訪問http://192.168.0.10:50070,能夠查看視圖統計信息和HDFS存儲信息等。

驗證以前先關閉master和全部slave的防火牆

blob.png

blob.png

blob.png

5)hadoop基本命令

使用hadoop  fs」命令能夠結合普通的文件管理命令實現不少操做,如查看、修改權限、統計、獲取幫助、建立、刪除、上傳下載文件等,更多的用法可以使用「hadoop fs -help」或「hadoop fs -usage」命令查看。

blob.png


blob.png

blob.png

blob.png

blob.png

6)HDFS高級命令

⑴開機安全模式

blob.png

⑵複製

①將本地文件複製到HDFS上(注意不要在安全模式下

blob.png

②將HDFS上的文件複製到本地

blob.png

⑶權限和歸屬

①修改屬組

blob.png

②修改權限

blob.png

③修改全部者

blob.png

⑷統計顯示目錄中文件大小

blob.png


⑸合併文件



五、爲HDFS集羣添加節點

⑴slave4節點安裝jdk與hadoop,配置環境變量

blob.png

blob.png

⑵配置/etc/hosts解析,NameNode4臺DataNode都要配置

blob.png


blob.png

blob.png

blob.png

blob.pngblob.pngblob.pngblob.png

⑶配置ssh無密碼鏈接

blob.png

⑷在master上修改hadoop配置後,複製到其餘節點

blob.png

blob.pngblob.png

blob.png

blob.png

blob.png

⑸新節點啓動並平衡節點已經存儲的數據

slave4上

 su  -  hadoop

以後執行下面的命令

blob.png

⑹查看集羣信息

blob.pngblob.png

六、刪除DataNode節點

⑴增長exclude配置,做用爲存放要刪除的DataNode信息。

blob.png

blob.png

blob.png

blob.png

blob.png

⑵檢查slave4的進程

blob.png

⑶查看集羣信息

blob.png

相關文章
相關標籤/搜索