Block數據&##x5757;apache
基本存儲單位,通常大小爲64M(配置大的塊主要是由於:1)減小搜尋時間,通常硬盤傳輸速率比尋道時間要快,大的塊能夠減小尋道時間;2)減小管理塊的數據開銷,每一個塊都須要在NameNode上有對應的記錄;3)對數據塊進行讀寫,減小創建網絡的鏈接成本)瀏覽器
一個大文件會被拆分紅一個個的塊,而後存儲於不一樣的機器。若是一個文件少於Block大小,那麼實際佔用的空間爲其文件的大小安全
基本的讀寫S#x5355;位,相似於磁盤的頁,每次都是讀寫一個塊網絡
每一個塊都會被複制到多臺機器,默認複製3份ssh
NameNode分佈式
存儲文件的metadata,運行時全部數據都保存到內存,整個HDFS可存儲的文件數受限於NameNode的內存大小ide
一個Block在NameNode中對應一條記錄(通常一個block佔用150字節),若是是大量的小文件,會消耗大量內存。同時map task的數量是由splits來決定的,因此用MapReduce處理大量的小文件時,就會產生過多的map task,線程管理開銷將會增長做業時間。處理大量小文件的速度遠遠小於處理同等大小的大文件的速度。所以Hadoop建議存儲大文件oop
數據會定時保存到本地磁盤,但不保存block的位置信息,而是由DataNode註冊時上報和運行時維護(NameNode中與DataNode相關的信息並不保存到NameNode的文件系統中,而是NameNode每次重啓後,動態重建)spa
NameNode失效則整個HDFS都失效了,因此要保證NameNode的可用性線程
Secondary NameNode
定時與NameNode進行同步(按期合併文件系統鏡像和編輯日&#x#x5FD7;,而後把合併後的傳給NameNode,替換其鏡像,並清空編輯日誌,相似於CheckPoint機制),但NameNode失效後仍須要手工將其設置成主機
DataNode
保存具體的block數據
負責數據的讀寫操做和複製操做
DataNode啓動時會向NameNode報告當前存儲的數據塊信息,後續也會定時報告修改信息
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文件系統的基本管理。
實驗環境:
虛擬機環境:
實驗步驟:
一、準備環境
1)master、slave1~3上配置域名解析與主機名
在0.11~0.13分別操做 主機名不同分別爲slave2,slave3.
2)JDK安裝
3)添加hadoop運行用戶
同理:在slave1-slave3上重複步驟2)和步驟3),這裏就不在截圖。
二、配置SSH密鑰對
要求master免密碼登陸各slave,用於開啓相應服務。
Master無密碼鏈接slave,先切換hadoop用戶,用ssh-keygen按照默認配置直接按Enter鍵生成密鑰對,經過ssh-copy-id將公鑰複製至3個slave主機中,複製過程須要輸入slave主機的hadoop用戶密碼,做用是master遠程啓動slave。
三、安裝hadoop,在master和slave上配置環境變量。
1)安裝hadoop
2)配置環境變量
執行source /etc/profile
3)配置hadoop
每一個slave主機重複步驟1)和步驟2)(即它們也須要安裝hadoop並設置環境變量),等前兩步完成了再由master經過SSH安全通道把剛纔配置的6個文件複製給每一個slave。
每一個slave主機上重複1)和2)步驟的截圖這裏省略,請參考上面去作,命令所有同樣
四、使用HDFS初始化master
1)格式化HDFS文件系統
2)檢查新生成的目錄
3)啓動hadoop羣集(開機hadoop的冗餘功能)
啓停hadoopde的管理命令位於$HADOOP_HOME/sbin下,以start-*或stop-*開頭;單獨啓動HDFS分佈式文件系統可以使用start-dfs.sh,也可使用如下命令啓動整個hadoop集羣。
4)驗證訪問
經過瀏覽器查看NameNode,即master,訪問http://192.168.0.10:50070,能夠查看視圖統計信息和HDFS存儲信息等。
驗證以前先關閉master和全部slave的防火牆
5)hadoop基本命令
使用「hadoop fs」命令能夠結合普通的文件管理命令實現不少操做,如查看、修改權限、統計、獲取幫助、建立、刪除、上傳下載文件等,更多的用法可以使用「hadoop fs -help」或「hadoop fs -usage」命令查看。
6)HDFS高級命令
⑴開機安全模式
⑵複製
①將本地文件複製到HDFS上(注意不要在安全模式下)
②將HDFS上的文件複製到本地
⑶權限和歸屬
①修改屬組
②修改權限
③修改全部者
⑷統計顯示目錄中文件大小
⑸合併文件
五、爲HDFS集羣添加節點
⑴slave4節點安裝jdk與hadoop,配置環境變量
⑵配置/etc/hosts解析,NameNode與4臺DataNode都要配置
⑶配置ssh無密碼鏈接
⑷在master上修改hadoop配置後,複製到其餘節點
⑸新節點啓動並平衡節點已經存儲的數據
在slave4上
su - hadoop
以後執行下面的命令
⑹查看集羣信息
六、刪除DataNode節點
⑴增長exclude配置,做用爲存放要刪除的DataNode信息。
⑵檢查slave4的進程
⑶查看集羣信息