學習Hadoop,兩個東西肯定是繞不過,MapReduce和HDFS,上一篇博客介紹了MapReduce的處理流程,這一篇博客就來學習一下HDFS。
HDFS是一個分布式的文件系統(tǒng),就是將多臺機器的存儲當做一個文件系統(tǒng)來使用,因為在大數(shù)據(jù)的情景下,單機的存儲量已經完全不夠用了,所以采取分布式的方法來擴容,解決本地文件系統(tǒng)在文件大小、文件數(shù)量、打開文件數(shù)等的限制問題。我們首先來看一下HDFS的架構
HDFS架構
從上圖可以看到,HDFS的主要組成部分為Namenode、Datanodes、Client,還有幾個名詞:Block、Metadata、Replication 、Rack,它們分別是什么意思呢?
對于分布式的文件系統(tǒng),數(shù)據(jù)存儲在很多的機器上,而Datanode代表的就是這些機器,是數(shù)據(jù)實際存儲的地方,數(shù)據(jù)存好之后,我們需要知道它們具體存在哪一個Datanode上,這就是Namenode做的工作,它記錄著元數(shù)據(jù)信息(也就是Metadata,其主要內容就是哪個數(shù)據(jù)塊存在哪個Datanode上的哪個目錄下,這也是為什么HDFS不適合存大量小文件的原因,因為 為了響應速度,Namenode 把文件系統(tǒng)的元數(shù)據(jù)放置在內存中,所以文件系統(tǒng)所能容納的文件數(shù)目是由 Namenode 的內存大小來決定。一般來說,每一個文件、文件夾和 Block 需要占據(jù) 150 字節(jié)左右的空間,如果存100 萬個小文件,至少需要 300MB內存,但這么多小文件實際卻沒有存太多數(shù)據(jù),這樣就太浪費內存了),有了元數(shù)據(jù)信息,我們就能通過Namenode來查到數(shù)據(jù)塊的具體位置了,而與Namenode打交道的工具就是Client,Client給我們用戶提供存取數(shù)據(jù)的接口,我們可以通過Client進行數(shù)據(jù)存取的工作。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數(shù)據(jù)結構來看看(二) 2017-07-26