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