HDFS
優缺點
優點
- 高容錯性
- 適合處理大數據
- 可構建在廉價機器上
缺點
- 不適合低延時數據訪問
- 無法高效的對大量小文件進行存儲
- 存儲大量小文件的話,它會佔用NameNode大量的內存來存儲文件目錄和塊信息。
- 小文件存儲的尋址時間會超過讀取時間
- 不支持併發寫入、文件隨機修改
- 一個文件只能有一個寫,不允許多個線程同時寫
- 僅支持數據追加(append),不支持文件的隨機修改
組成架構
- NameNode:它是主管理者
- 管理HDFS的名稱空間
- 配置副本策略
- 管理數據塊映射信息
- 處理客戶端讀寫請求
- DataNode:slave。NameNode下達命令,DataNode執行實際的操作
- 存儲實際的數據塊
- 執行數據塊的I/O操作
- Client:客戶端
- 文件切分
- 與NameNode交互,獲取文件的位置信息
- 與DataNode交互,IO
- Client提供一些命令來管理HDFS
- Client可以通過一些命令來訪問HDFS
- Secondary NameNode:並非NameNode的備份。他並不能替換NameNode。
- 輔助NameNode,分擔工作量,比如定期合併Fsimage和Edits,推送給NameNode。
- 緊急情況下可輔助恢復NameNode
文件塊大小
-
HDFS中文件在物理上是分塊存儲的,塊的大小可以通過配置參數來規定,默認大小在Hadoop2.x版本中是128M
-
如果尋址時間約10ms,查找到目標block的時間爲10ms
-
尋址時間爲傳輸時間的1%時,則爲最佳狀態。
-
目前的傳輸速率普遍爲100MB/S
HDFS塊太小會增加尋址時間
HDFS塊太大從磁盤傳輸數據的時間會明顯大於定位這個塊開始位置所需的時間
PS:HDFS塊的大小設置主要取決於磁盤的傳輸速度
HDFS 的 Shell操作
-
基本語法
bin/hadoop fs 具體命令
或者bin/hdfs dfs
-
常用命令
-
啓動hadoop 集羣
sbin/start-dfs.sh
sbin/start-yarn.sh
-
-help
:輸出這個命令的參數 -
-ls
:顯示目錄信息 -
-mkdir -P
:在HDFS上創建目錄 -
-moveFromLocal
:從本地剪切到HDFS上 -
-appendToFile
:追加一個文件到已存在的文件末尾。注意:HDFS只支持文件追加 -
-cat
:顯示文件內容 -
-chgrp、-chmod、-chown
:修改文件所有者,用法於與Linux上一樣-copyFromLocal
:從本地文件系統中拷貝到HDFS路徑去
-
-cp
:從HDFS的一個路徑拷貝到HDFS 的另一個路徑 -
-mv
:從HDFS的一個路徑移動到HDFS 的另一個路徑 -
-get
:等同於-copyToLocal
從HDFS下載到本地 -
-getmerge
:合併下載多個文件,比如HDFS的目錄 -
-put
:等同於-copyFromLocal
-
-tail
:顯示一個文件末尾 -
-rm
:刪除文件或文件夾 -
-rmdir
:刪除空目錄 -
-du -h [-s]
:統計文件夾的大小信息
-
客戶端操作
- 根據自己電腦的操作系統拷貝對應的編譯後的hadoop jar包到非中文路徑
- 配置HADOOP_HOME 環境變量