大資料Hadoop工具python教程1-HDFS Hadoop分散式檔案系統
Hadoop分散式檔案系統(HDFS:Hadoop Distributed File System)是基於Java的分散式檔案系統
分散式,可擴充套件和可移植的檔案系統,旨在跨越大型商用伺服器叢集。 HDFS的設計基於谷歌檔案系統GFS( https://ai.google/research/pubs/pub51 )。與許多其他分散式檔案系統一樣,HDFS擁有大量資料並提供對許多客戶端的透明訪問。
HDFS以可靠和可擴充套件的方式儲存非常大的檔案:PB(1PB=1024TB,,針對非常大的檔案)、GB和MB。它使用塊結構檔案系統來完成的。單個檔案被拆分為固定大小的塊,儲存在叢集中的計算機上。由多個塊組成的檔案通常不會將所有塊儲存在一臺機器。
HDFS通過複製塊並在叢集中分發副本來確保可靠性。預設複製因子為3,表示每個塊在群集上存在三次。即使單機出現故障,塊級複製也保證資料可用。
本章首先介紹HDFS的核心概念,並解釋如何使用本機內建命令與檔案系統進行互動。
HDFS概述
HDFS的體系結構設計由兩個程序組成:一個NameNode程序儲存檔案系統的元資料,一個或多個DataNode程序儲存塊。 NameNode和DataNode可以在一臺機器上執行,但HDFS叢集通常包含專機執行NameNode程序,可能還有數千臺執行DataNode程序的計算機。
NameNode是HDFS中最重要的機器。它儲存整個檔案系統的元資料:檔名,檔案許可權以及每個檔案對應塊的位置。為了允許快速訪問,NameNode將整個元資料結構儲存在記憶體中。
NameNode還跟蹤塊的複製,確保機器故障不會導致資料丟失。由於NameNode存在單點故障,可以使用第2個NameNode生成主NameNode記憶體結構的快照,從而降低NameNode失敗時資料丟失的風險。
在HDFS中儲存塊的機器稱為DataNode。 DataNode通常是具有大儲存容量的商用機器。與NameNode不同,少量DataNode失敗,HDFS將繼續正常執行。當DataNode失敗時,NameNode將複製丟失的塊,以保證最少複製數。

圖片.png
HDFS互動
與HDFS互動主要使用hdfs的指令碼
$ hdfs COMMAND [-option <arg>]
通用檔案操作
在HDFS上執行基本檔案操作操作,使用dfs子命令。 dfs命令支援類似Linux shell中的許多檔案操作。
注意:hdfs命令以系統使用者的許可權執行。 以下示例用“hduser”的使用者執行。
列出HDFS中目錄的內容,請使用-ls命令: