掃盲:Hadoop分散式檔案系統(HDFS)基礎概念講解!
無論你如何將Hadoop與Spark進行對比,無論Spark生態多麼成熟和完善,其底層終歸要基於HDFS,畢竟這是目前最成熟的分散式底層檔案系統,幾乎沒有哪家公司願意重新花費精力研發一個全新的檔案系統。
本文將討論Hadoop分散式檔案系統(HDFS)的基本概念以及管理HDFS的十大Hadoop Shell命令。HDFS是Apache Hadoop框架的底層檔案系統,是一個分散式儲存框架,跨越數千種商用硬體。該檔案系統提供容錯、高吞吐、流資料訪問以及高可靠性等功能。HDFS的體系架構適用於儲存大量資料及快速處理,HDFS是Apache生態系統的一部分。
在此之前,我們先來了解Apache Hadoop框架,其主要包含以下幾大模組:
-
Hadoop Common——包含Hadoop其他模組所需的庫和實用程式;
-
HDFS——商用機儲存資料的分散式檔案系統,在叢集中提供非常高的聚合頻寬;
-
Hadoop YARN ——資源管理平臺,負責管理叢集上的計算資源並使用它們排程使用者應用程式;
-
Hadoop MapReduce——用於大規模資料處理的程式設計模型。
Hadoop中的所有模組都設計了一個基本假設,即硬體故障(單個機器或整個機架)是顯而易見的,因此應由Hadoop框架在軟體應用程式中自動處理,Apache Hadoop的HDFS元件最初來自Google的MapReduce和Google File System(GFS)。
HDFS是Hadoop應用程式使用的主要分散式儲存,HDFS叢集主要由NameNode和DataNode組成。NameNode管理檔案系統後設資料,DataNode用於儲存實際資料。
HDFS架構圖解釋了NameNode、DataNode和客戶端之間的基本互動,客戶端元件呼叫NameNode以獲取檔案後設資料或修改,客戶端直接使用DataNodes執行實際的檔案I / O操作。HDFS可能存在一些使用者感興趣的顯著特徵:
1、非常適合使用低成本商用硬體進行分散式儲存和處理。Hadoop具有可擴充套件性,容錯性且易於擴充套件。MapReduce以其大量分散式應用程式的簡單性和適用性而著稱。HDFS則具有高度可配置性,預設配置足以滿足大多數應用程式的需求。通常,僅需要針對非常大的叢集調整預設配置;
2、Hadoop是基於Java平臺編寫的,幾乎在所有主要平臺上都受支援;
3、Hadoop支援shell和shell類命令與HDFS的通訊;
4、NameNode和DataNode具有內建Web伺服器,可以輕鬆檢查叢集的當前狀態;
5、HDFS中經常實現新的功能和更新,以下列表是HDFS中可用的功能子集:
-
檔案許可權和身份驗證;
-
Rackawareness:有助於在計劃任務和分配儲存時考慮節點的物理位置;
-
Safemode:管理主要用於維護的模式;
-
fsck:這是一個實用程式,用於診斷檔案系統的執行狀況以及查詢丟失的檔案或塊;
-
fetchdt:這是一個用於獲取DelegationToken並將其儲存在本地系統檔案中的實用程式;
-
Rebalancer:當資料在DataNode之間分佈不均時,這是一個用於平衡叢集的工具;
-
升級和回滾:軟體升級後,可以在升級前回滾到上一狀態,以防出現任何意外;
-
SecondaryNameNode:此節點執行名稱空間的Checkpoint,並幫助將包含HDFS修改日誌的檔案大小保持在NameNode的特定限制內;
-
Checkpoint節點:此節點執行名稱空間的Checkpoint,並有助於最小化儲存在NameNode中的日誌大小,其中包含對HDFS所做的更改,它還替換了以前由Secondary NameNode填充的角色或功能。作為替代方案,NameNode允許多個節點作為Checkpoint,只要系統沒有可用(註冊)的備份節點即可;
-
Backup節點:可以將其定義為Checkpoint節點的擴充套件。除了Checkpoint之外,它還用於從NameNode接收編輯流。因此,它維護自己名稱空間的記憶體副本,始終與活動的NameNode和名稱空間狀態同步,一次只允許向NameNode註冊一個備份節點。
HDFS的設計目標
Hadoop的目標是在非常大的叢集中使用常用伺服器,並且每個伺服器都有一組廉價內部磁碟驅動器。為了獲得更好的效能,MapReduce API嘗試在儲存要處理的資料的伺服器上分配工作負載,這稱為資料區域性性。因此,在Hadoop環境中,建議不要使用 。對於使用SAN或NAS的Hadoop部署,額外的網路通訊開銷可能會導致效能瓶頸,尤其是在叢集規模較大的情況下。
假設,我們目前擁有1000臺機器叢集,每臺機器都有三個內部磁碟驅動器。因此,請考慮由3000個廉價驅動器+ 1000個廉價伺服器組成的叢集的故障率,這個數值會非常大!不過,好在廉價硬體相關的MTTF故障率實際上已被很好地理解和接受,這讓使用者對Hadoop的包容性變得很高。Hadoop具有內建的容錯和故障補償功能,HDFS也是如此,因為資料被分成塊,這些塊的副本儲存在Hadoop叢集的其他伺服器上。為了使其易於理解,我們可以說單個檔案實際上儲存為較小的塊,這些塊在整個叢集中的多個伺服器之間進行復制,以便更快地訪問檔案。
我們可以考慮一個應用場景,假設我們現在需要儲存某區域內所有居民的電話號碼,將姓氏以A開頭的儲存在伺服器1上,以B開頭的在伺服器2上,依此類推。在Hadoop環境中,此電話簿的各個部分將分散式儲存在整個叢集中。如果要重建整個電話簿的資料,程式需要訪問叢集中每個伺服器的塊。為了實現更高的可用性,HDFS預設將較小的資料複製到另外兩臺伺服器上。這裡會涉及到冗餘的概念,但支援冗餘是為了避免故障並提供容錯解決方案,可以基於每個檔案或針對整個環境增加或減少該冗餘。這種冗餘具備多種好處,最明顯的一個是資料高可用。除此之外,資料冗餘允許Hadoop叢集將工作分解為更小的塊,並在叢集中的所有伺服器上執行較小的作業,以實現更好的可伸縮性。最後,作為終端使用者,我們獲得了資料區域性性的好處,這在處理大型資料集時至關重要。
管理HDFS的十大Hadoop Shell命令
以下是透過shell命令管理Hadoop HDFS的十大基本操作,這些操作對於管理HDFS叢集上的檔案非常有用。出於測試目的,你可以使用Cloudera或者Hortonworks等中的某些VM呼叫此命令,或者用於偽分散式叢集設定。
1、在給定路徑的HDFS中建立目錄
2、列出目錄內容
3、在HDFS中上傳和下載檔案
Upload:
hadoop fs -put:
將單個src檔案或多個src檔案從本地檔案系統複製到Hadoop資料檔案系統
將檔案複製/下載到本地檔案系統
Download:
hadoop fs -get:
4、檢視檔案的內容
與unix cat命令相同:
5、將檔案從源複製到目標
此命令也允許多個源,在這種情況下,目標必須是目錄。
6、將檔案從(到)本地檔案系統複製到HDFS
與put命令類似,但源僅限於本地檔案引用。
7、將檔案從源移動到目標
注意:不允許跨檔案系統移動檔案。
8、刪除HDFS中的檔案或目錄
刪除指定為引數的檔案,僅在目錄為空時刪除目錄:
9、顯示檔案的最後幾行
類似於Unix中的tail命令
10、顯示檔案的聚合長度
結論
我們已經看到HDFS是Apache Hadoop生態系統的重要元件之一。相比於本地檔案系統,HDFS確實非常強大。因此,所有大資料應用程式都使用HDFS進行資料儲存,這也是作為大資料人必須瞭解HDFS的原因。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31077337/viewspace-2199558/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Hadoop基礎(一):分散式檔案系統HDFSHadoop分散式
- Hadoop 系列(一)—— 分散式檔案系統 HDFSHadoop分散式
- 理解Hadoop分散式檔案系統HDFS(二)Hadoop分散式
- Hadoop學習(一)——HDFS分散式檔案系統Hadoop分散式
- HDFS分散式檔案系統分散式
- 分散式檔案系統-HDFS分散式
- Hadoop分散式檔案系統(HDFS)會不會被淘汰?Hadoop分散式
- 大資料時代之hadoop(四):hadoop 分散式檔案系統(HDFS)大資料Hadoop分散式
- HDFS架構指南(分散式系統Hadoop的檔案系統架構)架構分散式Hadoop
- Hadoop 三劍客之 —— 分散式檔案儲存系統 HDFSHadoop分散式
- Hadoop HDFS分散式檔案系統 常用命令彙總Hadoop分散式
- 大資料 | 分散式檔案系統 HDFS大資料分散式
- 高可用性的HDFS—Hadoop分散式檔案系統深度實踐Hadoop分散式
- 【史上最全】Hadoop 核心 - HDFS 分散式檔案系統詳解(上萬字建議收藏)Hadoop分散式
- 分散式檔案系統(HDFS)與 linux系統檔案系統 對比分散式Linux
- Linux系統(三)系統基礎掃盲大全Linux
- WebHDFS :通過Web訪問Hadoop分散式檔案系統 (HDFS)的開源工具WebHadoop分散式開源工具
- 架構師入門必看系列,分散式檔案系統HDFS解讀架構分散式
- 必須掌握的分散式檔案儲存系統—HDFS分散式
- 分散式系統基礎分散式
- 分散式檔案系統FastDFS詳解分散式AST
- 分散式檔案系統分散式
- 分散式檔案系統HDFS,大資料儲存實戰(一)分散式大資料
- 瞭解分散式系統和Hadoop分散式Hadoop
- SQL 基礎知識掃盲SQL
- 在 Ubuntu 22 的基礎上進行 Hadoop 偽分散式(HDFS)的搭建UbuntuHadoop分散式
- Hadoop hdfs完全分散式搭建教程Hadoop分散式
- 白日夢的ES筆記三:萬字長文 Elasticsearch基礎概念統一掃盲筆記Elasticsearch
- 分散式檔案系統---GlusterFS分散式
- FastDFS分散式檔案系統AST分散式
- 分散式檔案系統如何做?終於有個人把分散式檔案上傳講清楚了分散式
- 檔案系統基礎
- PYTHON-基礎掃盲1Python
- Hadoop 基礎概念Hadoop
- Hadoop 基石HDFS 一文了解檔案儲存系統Hadoop
- Hadoop安裝手冊1-基礎掃盲及準備工作Hadoop
- cephFS分散式檔案系統操作分散式
- FastDFS-分散式檔案系統AST分散式