Hadoop HDFS學習之HDFS概述
一、HDFS產(chǎn)生背景及定義
隨著數(shù)據(jù)量越來越大,在一個操作系統(tǒng)存不下所有的數(shù)據(jù),那么就分配到更多的操作系統(tǒng)管理磁盤中,但是不方便管理和維護,迫切需要一種系統(tǒng)來管理多臺機器上的文件,這就是分布式文件管理系統(tǒng)。HDFS只是分布式文件管理系統(tǒng)中的一種。
HDFS(Hadoop Distributed File System),是一個文件系統(tǒng),用于存儲文件,通過目錄樹來定位文件;其次它是分布式的,由很多服務器聯(lián)合起來實現(xiàn)其功能,集群中的服務器有各自的角色。
HDFS的使用場景:適合一次寫入,多次讀出的場景,且不支持文件的修改。適合用來做數(shù)據(jù)分析,并不適合用來做網(wǎng)盤應用。
二、優(yōu)缺點
(1)、高容錯性
數(shù)據(jù)自動保存多個副本,它通過增加副本的形式,提高容錯性 某一個副本丟失后,它可以自動恢復。
(2)、適合處理大數(shù)據(jù)
數(shù)據(jù)規(guī)模:能夠處理數(shù)據(jù)規(guī)模達到GB、TB、甚至PB級別的數(shù)據(jù) 文件規(guī)模:能夠處理百萬規(guī)模以上的文件數(shù)量,數(shù)量相當之大
(3)、可構建在廉價的機器上,通過多副本機制,提高可靠性。
(1)、不適合低延時數(shù)據(jù)訪問,比如毫秒級的存儲數(shù)據(jù),是做不到的。
(2)、無法高效的對大量小文件進行存儲。
存儲大量小文件的話,它會占用NameNode大量的內(nèi)存來存儲文件目錄和塊信息。這樣是不可取的,因為NameNode的內(nèi)存總是有限的 小文件存儲的尋址時間會超過讀取時間,它違反了HDFS的設計目標
(3)、不支持并發(fā)寫入、文件隨機修改
一個文件只能有一個寫,不允許多個線程同時寫 僅支持數(shù)據(jù)append(追加),不支持文件隨機修改
三、HDFS組成架構
1、NameNode(nm):就是Master,它是一個主管、管理者。
管理HDFS的名稱空間 配置副本策略 管理數(shù)據(jù)塊(Block)映射信息 處理客戶端讀寫請求
2、DataNode(dn):就是Slave,NameNode下達命令,DataNode執(zhí)行實際操作。
存儲實際數(shù)據(jù)塊 執(zhí)行數(shù)據(jù)塊的讀/寫操作
3、Client:就是客戶端。
文件切分:文件上傳HDFS的時候,Client將文件切分成一個一個的Block,然后進行上傳,默認塊大小128MB 與NameNode交互,獲取文件的位置信息 與DataNode交互,讀取或者寫入數(shù)據(jù) Client提供一些命令來管理HDFS,比如NameNode格式化 Client可以通過一些命令來訪問HDFS,比如對HDFS增刪改查操作
4、Secondary NameNode:并非NameNode的熱備。當NameNode掛掉的時候,它并不能馬上替換NameNode并提供服務。
輔助NameNode,分擔其工作量,比如定期合并Fsimage(鏡像文件)和Edits(編輯日志),并推送給NameNode 在緊急情況下,可輔助恢復NameNode
四、HDFS文件塊大小(面試重點)
HDFS中的文件在物理上是分塊存儲(Block),塊的大小可以通過配置參數(shù)(dfs.block.size)來規(guī)定,默認大小在Hadoop2.x版本中是128MB,老版本中是64MB。 尋址時間10ms,尋址時間為傳輸時間的1%時,則為最佳狀態(tài),所以傳輸時間為10ms/1%=1000ms=1s,磁盤傳輸速率為100MB/s,所以塊大小最佳為100MB,近似取值128MB,該取值與磁盤傳輸速率有關。 思考:為什么塊的大小不能設置太小,也不能設置太大? (1)、HDFS的塊設置太小,會增加尋址時間,程序一直在找塊的開始位置; (2)、如果塊設置的太大,從磁盤傳輸數(shù)據(jù)的時間會明顯大于定位這個塊開始位置所需的時間。導致程序在處理這塊數(shù)據(jù)時,會非常慢。 總結:HDFS塊的大小設置主要取決于磁盤傳輸速率。
Hadoop
版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。