分布式文件系統(tǒng)HDFS及其簡單使用
在現(xiàn)代的企業(yè)環(huán)境中,單機(jī)容量往往無法存儲大量數(shù)據(jù),需要跨機(jī)器存儲。統(tǒng)一管理分布在集群上的文件系統(tǒng)稱為分布式文件系統(tǒng)。
HDFS
HDFS(Hadoop Distributed File System)是 Apache Hadoop 項(xiàng)目的一個子項(xiàng)目. Hadoop 非常適于存儲大型數(shù)據(jù) (比如 TB 和 PB), 其就是使用 HDFS 作為存儲系統(tǒng). HDFS 使用多臺計(jì)算機(jī)存儲文件, 并且提供統(tǒng)一的訪問接口。
HDFS是根據(jù)谷歌的論文:《The Google File System》進(jìn)行設(shè)計(jì)的
HDFS的四個基本組件:HDFS Client、NameNode、DataNode和Secondary NameNode。
Client
Client是客戶端。HDFS Client文件切分。文件上傳 HDFS 的時候,Client 將文件切分成 一個一個的Block,然后進(jìn)行存儲。Client 提供一些命令來管理 和訪問HDFS,比如啟動或者關(guān)閉HDFS。
NameNode
NameNode就是 master,它是一個主管、管理者。管理 HDFS 元數(shù)據(jù)(文件路徑,文件的大小,文件的名字,文件權(quán)限,文件的block切片信息)。
NameNode管理 Block 副本策略:默認(rèn) 3 個副本,處理客戶端讀寫請求。
DataNode
DataNode就是Slave。NameNode下達(dá)命令,DataNode 執(zhí)行實(shí)際的操作。
DataNode存儲實(shí)際的數(shù)據(jù)塊,執(zhí)行數(shù)據(jù)塊的讀/寫操作。定時向namenode匯報(bào)block信息。
Secondary NameNode
SecondaryNameNode不是NameNode的備份。當(dāng)NameNode掛掉的時候,它并不能馬上替換NameNode并提供服務(wù)。
輔助 NameNode,分擔(dān)其工作量。在緊急情況下,可輔助恢復(fù) NameNode。
副本機(jī)制
HDFS被設(shè)計(jì)成能夠在一個大集群中跨機(jī)器可靠地存儲超大文件。它將每個文件存儲成一系列的數(shù)據(jù)塊,這個數(shù)據(jù)塊被稱為block,除了最后一個,所有的數(shù)據(jù)塊都是同樣大小的。
為了容錯,文件的所有block都會有副本。每個文件的數(shù)據(jù)塊大小和副本系數(shù)都是可配置的。
在hadoop2 當(dāng)中, 文件的 block 塊大小默認(rèn)是 「128M」(134217728字節(jié))。
如上圖所示,一個大小為300M的a.txt上傳到HDFS中,需要進(jìn)行128M的切分,不足128M分為到另一block中。
HDFS基本命令
HDFS 簡單使用
根據(jù)部署的服務(wù),我們的 HDFS 根目錄是 hdfs://192.168.147.128:9820,下面我們嘗試在根目錄下面創(chuàng)建子目錄 user,如下命令所示:
- [hadoop@node01 ~]$ hadoop fs -mkdir /user
然后在Hadoop頁面打開HDFS。
此時的user文件夾將會看見。
下面將一個大小為300M的文件上傳到HDFS的user文件夾中
然后在Hadoop頁面看見剛剛上傳的文件。
此時被分開了三個block。
點(diǎn)擊download,即可下載。
































