您好,登錄后才能下訂單哦!
這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)Hadoop分布式文件系統(tǒng)中的HDFS是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
超大文件 PB 級
流式數(shù)據(jù)訪問
一次寫入,多次讀取是最高效的訪問模式
商用硬件 (不需要高昂且高可用的硬件)
節(jié)點故障率較高,某些應用不適合
低時間延遲的數(shù)據(jù)訪問
要求低時間延遲的數(shù)據(jù)訪問,例如幾十毫秒范圍不適合在HDFS上運行
大量的小文件
namenode 將文件系統(tǒng)的元數(shù)據(jù)存儲在內(nèi)容中,因此該文件系統(tǒng)所能存儲的文件總數(shù)受限于 namenode 的內(nèi)存容量
根據(jù)經(jīng)驗 每個文件、目錄和數(shù)據(jù)塊的存儲信息大約占150字節(jié)
多用戶寫入,任意 修改文件
HDFS中的文件只支持單個寫入者,而且寫操作總是以“只添加”方式在文件末尾寫數(shù)據(jù),它不支持多個寫入者的操作,也不支持在文件的任意位置進行修改。
數(shù)據(jù)塊 默認128mb
HDFS 小于一個塊大小的文件不會占據(jù)整個塊的空間
hdfs fsck / -files -blocks
namenode 和datanode
1.備份那些組成文件系統(tǒng)元數(shù)據(jù)持久狀態(tài)的文件,一般的配置是,將持久狀態(tài)寫入本地磁盤的同時,寫入NFS
運行輔助namenode 一般在單獨的物理機運行。主節(jié)點掛了之后,啟用輔助節(jié)點不能保證數(shù)據(jù)完整性
namenode 管理文件系統(tǒng)的命名空間。它維護著文件系統(tǒng)樹及整棵樹內(nèi)所有的文件和目錄。這些信息以兩個文件形式永久保存在本地磁盤上:命名空間鏡像文件和編輯日志文件。namenode 也記錄著每個文件中各個塊所在的數(shù)據(jù)節(jié)點信息,但它并不永久保存塊的位置信息,因為這些信息會在系統(tǒng)啟動時根據(jù)數(shù)據(jù)節(jié)點信息重建。
datanode 根據(jù)需要存儲并檢索數(shù)據(jù)塊,并且定期向namenode發(fā)送它們所存儲的塊的列表
namenode 容錯機制
塊緩存
默認 一個塊緩存在一個datanode的內(nèi)存中
提高讀 的性能
緩存池
聯(lián)邦HDFS
聯(lián)邦HDFS 允許系統(tǒng)通過添加namenode 實現(xiàn)擴展
每個namenode 管理文件系統(tǒng)命名空間的一部分
兩兩之間互不通信
HDFS 的高可用
namenode 之間需要通過高可用共享存儲實現(xiàn)編輯日志的共享
datanode 需要同時向兩個namenode 發(fā)送數(shù)據(jù)塊處理報告,因為數(shù)據(jù)塊的映射信息存儲在namenode 內(nèi)存中,而非磁盤
客戶端需要使用特定的機制來處理namenode 的失效問題,這一機制對用戶是透明的
輔助namenode的角色被備用namenode所包含
共享存儲的選擇 NFS或群體日志管理器(QJM)
故障切換與規(guī)避
撤銷namenode 訪問共享存儲目錄的權(quán)限
屏蔽網(wǎng)絡(luò)端口
斷電等等...
備份namenode 的方式無法實現(xiàn)高可用
HA 的架構(gòu)支持
namenode 運行端口8020
從本地copy 文件到 hdfs /user/hadoop/ 目錄下
hadoop fs -copyFromLocal max_temperature.sh a.sh
把文件復制回本地文件系統(tǒng)
hadoop fs -copyToLocal a.sh my.sh
md5sum max_temperature.sh my.sh
新建目錄
hadoop fs -mkdir books
hadoop fs -ls .
默認情況下 安全措施處于停用狀態(tài),生產(chǎn)環(huán)境應該啟用 dfs.premissions.enabled
對文件而言 執(zhí)行權(quán)限沒有意義
HDFS 只是其中一種實現(xiàn)
Hadoop 文件系統(tǒng) Local,HDFS,WebHDFS,Secure WebHDFS, HAR, View, FTP, S3, Azure, Swift
列出本地文件系統(tǒng)根目錄下的文件 hadoop fs -ls file:///
盡管運行的MapReduce 程序可以訪問任何文件系統(tǒng),但在處理大數(shù)據(jù)集的時候,建議還是選擇一個有數(shù)據(jù)本地化優(yōu)勢的分布式文件系統(tǒng),如HDFS
接口
用戶控件文件系統(tǒng), 允許將用戶空寂那實現(xiàn)的文件系統(tǒng)作為Unix 文件系統(tǒng)進行集成。
通過使用Fuse-DFS 模塊,HDFS均可以作為一個標準的本地文件系統(tǒng)進行掛載。
NFS 網(wǎng)關(guān)是更好的方案,應該選擇
使用hadoop 的NFSv3 網(wǎng)關(guān)將HDFS掛載為本地客戶端的文件系統(tǒng)是可行的。
可以使用Unix程序與該文件系統(tǒng)交互
HDFS僅能以追加模式寫文件,因此可以往文件末尾添加數(shù)據(jù),但不能隨機修改文件
HTTP接口比原生的Java客戶端要慢,不要用它來傳出特大數(shù)據(jù)
訪問方式 直接訪問(namenode 和 datanode 內(nèi)嵌的 web服務(wù)器作為 WebHDFS 的端節(jié)點運行 dfs.webhdfs.enabled 設(shè)置為true)
通過代理訪問
HttpFS代理提供和 WebHDFS 相同的HTTp接口 使用httpfs.sh 腳本
HTTP
c 語言(libhdfs,libwebhdfs)底層代碼都是java
NFS
FUSE
java接口
hadoop jar hadoopdemo-1.0-SNAPSHOT.jar URLCat hdfs:///user/hadoop/output/part-r-00000
public class FileSystemCat { public static void main(String[] args) throws Exception { String uri = args[0]; Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create(uri), conf); InputStream in = null; try { in = fs.open(new Path(uri)); IOUtils.copyBytes(in, System.out, 4096, false); } finally { IOUtils.closeStream(in); } } }
hadoop jar hadoopdemo-1.0-SNAPSHOT.jar FileSystemCat hdfs:///user/hadoop/output/part-r-00000
hadoop jar hadoopdemo-1.0-SNAPSHOT.jar FileSystemDoubleCat hdfs:///user/hadoop/output/part-r-00000
新建文件
FSDataOutputStream
目錄 public boolean mkdirs(Path f) throws IOException
查詢文件系統(tǒng)
FileStatus 類封裝了文件系統(tǒng)中文件和目錄的元數(shù)據(jù)
public boolean exists(Path f) throws IOException
寫入數(shù)據(jù)
FSDataOutputStream create(FileSystem fs,Path file, FsPermission permission) throws IOException FSDataOutputStream append(Path f) throws IOException //代碼 String localSrc = args[0]; String dst = args[1]; InputStream in = new BufferedInputStream(new FileInputStream(localSrc)); Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create(dst), conf); OutputStream out = fs.create(new Path(dst), new Progressable() { public void progress() { System.out.println("."); } }); IOUtils.copyBytes(in, out, 4096, false);
FSDataInputStream seek()是一個相對高開銷的操作,需要謹慎使用,建議用流數(shù)據(jù)來構(gòu)建應用的訪問模式,而非執(zhí)行大量的seek()方法 hadoop jar hadoopdemo-1.0-SNAPSHOT.jar FileSystemDoubleCat hdfs:///user/hadoop/output/part-r-00000
通過 FileSystem
通過URL讀取數(shù)據(jù) FsUrlStreamHandlerFactory IOUtils
上述就是小編為大家分享的Hadoop分布式文件系統(tǒng)中的HDFS是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。