HDFS學習記錄
1、HDFS只是分散式檔案管理系統的一種。
2、HDFS (Hadoop Distributed File System),它是一個檔案系統,用於儲存檔案,通過目錄樹
來定位檔案;其次,它是分散式的,由很多伺服器聯合起來實現其功能,叢集中的伺服器有各
自的角色。
HDFS的使用場景:適合-一次寫入,多次讀出的場景,且不支援檔案的修改。適合用來做數
據分析,並不適合用來做網盤應用。
3、HDFS的優點:
高容錯性(資料自動儲存多個副本,通過增加副本的形式來提高容錯性,當一個副本丟失的時候回自動回覆)
適合處理大資料:(資料規模:能夠處理資料規模達到GB、TB、甚至PB級別的資料; .檔案規模:能夠處理百萬規模以上的檔案數量,數量相當之大。)
可以構建在聯機的機器上。通過多副本機制,提高可靠性
4、HDFS的缺點:
不適合低延時資料訪問,比如毫秒級的儲存資料,是做不到的。
無法高效的對大量小檔案進行儲存。(儲存大量小檔案的話,它會佔用NameNode大量的記憶體來儲存檔案目錄和塊資訊。這樣是不可取的,因為NameNode的記憶體總是有限的;小檔案儲存的定址時間會超過讀取時間,它違反了HDFS的設計目標。)
不支援併發寫入,不允許隨機修改(一個檔案只能有一個寫,不允許多個執行緒同時寫,僅支援資料append不支援檔案的隨機修改)
5、HDFS的組成架構:
Namenode就是master他的主管、管理者(管理HDFS的名稱空間、配置副本策略、管理資料塊、對映資訊、處理客戶端讀寫請求)
Datanode就是slave,namenode下達命令DataNode執行命令(儲存實際的資料塊、執行資料塊的讀寫操作)
client就是客戶端:(檔案切分。檔案上傳HDFS的時候, Client將檔案切分成- -個- 一個的Block,然後進行上傳;與NarneNode互動, 獲取檔案的位置資訊;與DataNode互動, 讀取或者寫入資料;Client提供一 些命令來管理HDFS ,比如NameNode格式化;Client可以通討一 些命今來訪問HDFS .比如對HDFS增刪吉改操作:)
Secondauy NameNode:並非NameNode的熱備。當NameNode掛掉的時候, 它並不
6、HDFS檔案塊的大小:
HDFS中的檔案在物理上是分塊儲存( Block)塊的大小可以通過配置引數( dfs.blocksize)來規定,預設大小在Hadoop2.x版本中是128M,老版本中是64M。(HDFS的塊設定太小,會增加定址時間,程式-直在找塊的開始位置)(如果塊設定的太大,從磁碟傳輸資料的時間會明顯大於定位這個塊開始位置所需的時間。導致程式在處理這塊資料時,會非常慢。)
7、HDFS的SHELL操作基本語法
8、命令大全:
[atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs [-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCrc] <src> ...] [-checksum <src> ...] [-chgrp [-R] GROUP PATH...] [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] [-copyFromLocal [-f] [-p] <localsrc> ... <dst>] [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] [-count [-q] <path> ...] [-cp [-f] [-p] <src> ... <dst>] [-createSnapshot <snapshotDir> [<snapshotName>]] [-deleteSnapshot <snapshotDir> <snapshotName>] [-df [-h] [<path> ...]] [-du [-s] [-h] <path> ...] [-expunge] [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] [-getfacl [-R] <path>] [-getmerge [-nl] <src> <localdst>] [-help [cmd ...]] [-ls [-d] [-h] [-R] [<path> ...]] [-mkdir [-p] <path> ...] [-moveFromLocal <localsrc> ... <dst>] [-moveToLocal <src> <localdst>] [-mv <src> ... <dst>] [-put [-f] [-p] <localsrc> ... <dst>] [-renameSnapshot <snapshotDir> <oldName> <newName>] [-rm [-f] [-r|-R] [-skipTrash] <src> ...] [-rmdir [--ignore-fail-on-non-empty] <dir> ...] [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]] [-setrep [-R] [-w] <rep> <path> ...] [-stat [format] <path> ...] [-tail [-f] <file>] [-test -[defsz] <path>] [-text [-ignoreCrc] <src> ...] [-touchz <path> ...] [-usage [cmd ...]]
大概的流向圖:(put和copyfromlocal一樣)(get和copytolocal一樣)(tail - f進行內容追加)