為什么我們需要HDFS
文件系統由三部分組成:與文件管理有關軟件、被管理文件以及實施文件管理所需數據結構。
既然讀取一塊磁盤的所有數據需要很長時間,寫入更是需要更長時間(寫入時間一般是讀取時間的3倍)。我們需要一個巨大文件難道得換傳輸速度10GB/S的磁盤(現在沒有這樣的磁盤),而且即使有文件為1ZB,或者小點10EB時,這樣的磁盤也無法做到隨讀隨取。
當數據集的大小超過一臺獨立物理計算機的存儲能力時,就有必要對它進行分區并存儲到若干臺單獨的計算機上。
HDFS全稱。從概念圖上看,分布化的文件系統會因為分布后的結構不完整,導致系統復雜度加大,并且引入的網絡編程,同樣導致分布式文件系統更加復雜。
對于以上的問題我們來HDFS是如何迎刃而解的?
HDFS以流處理訪問模式來存儲文件的。
一次寫入,多次讀取。數據源通常由源生成或從數據源直接復制而來,接著長時間在此數據集上進行各類分析,大數據不需要搬來搬去。
DFS是用流處理方式處理文件,每個文件在系統里都能找到它的本地化映像,所以對于用戶來說,別管文件是什么格式的,也不用在意被分到哪里,只管從DFS里取出就可以了。
hdfs中文名字的全稱是,一般來說,文件處理過程中無法保證文件安全順利到達,傳統文件系統是使用本地校驗方式保證數據完整,文件被散后,難道需要特意安排每個分片文件的校驗碼?
分片數量和大小是不確定的,海量的數據本來就需要海量的校驗過程,分片后加入每個分片的跟蹤校驗完全是在數滿天恒星的同時數了他們的行星。×
HDFS的解決方案是分片冗余,本地校驗。
數據冗余式存儲,直接將多份的分片文件交給分片后的存儲服務器去校驗
冗余后的分片文件還有個額外功能,只要冗余的分片文件中有一份是完整的,經過多次協同調整后,其他分片文件也將完整。
以下哪個不是hadoop的特性?經過協調校驗,無論是傳輸錯誤,I/O錯誤,還是個別服務器宕機,整個系統里的文件是完整的
分布后的文件系統有個無法回避的問題,因為文件不在一個磁盤導致讀取訪問操作的延時,這個是HDFS現在遇到的主要問題。
現階段,HDFS的配置是按照高數據吞吐量優化的,可能會以高時間延時為代價。但萬幸的是,HDFS是具有很高彈性,可以針對具體應用再優化。
HDFS的概念
HDFS可以用下面這個抽象圖的具體實現
hadoop菜鳥入門?何為元數據?
元數據是用于描述要素、數據集或數據集系列的內容、覆蓋范圍、質量、管理方式、數據的所有者、數據的提供方式等有關的信息。更簡單的說,是關于數據的數據。
HDFS就是將巨大的數據變成大量數據的數據。
PS: 磁盤存儲文件時,是按照數據塊來存儲的,也就是說,數據塊是磁盤的讀/寫最小單位。數據塊也稱磁盤塊。構建于單個磁盤上的文件系統是通過磁盤塊來管理文件 系統,一般來說,文件系統塊的大小是磁盤塊的整數倍。特別的,單個磁盤文件系統,小于磁盤塊的文件會占用整個磁盤塊。磁盤塊的大小一般是512字節。
在HDFS中,也有塊(block)這個概念,默認為64MB,每個塊作為獨立的存儲單元。
hdfs由什么組成。與其他文件系統不一樣,HDFS中每個小于塊大小的文件不會占據整個塊的空間。具體原因在后面的介紹。下面介紹為什么是64MB一個文件塊
在文件系統中,系統存儲文件時,需要定位該數據在磁盤中的位置,再進行傳輸處理。
定位在磁盤的位置是需要時間的,同樣文件傳輸也是需要時間。
T(存儲時間)=T(定位時間)+T(傳輸時間)
如果每個要傳輸的塊設置得足夠大,那么從磁盤傳輸數據的時間可以明顯大于定位這個塊開始位置的時間
分布式文件存儲hdfs、T(存儲時間)=T(定位時間) )[-∞]+T(傳輸時間)[∞]
近似等于:T(存儲時間)=T(傳輸時間)
舉個例子:我們來傳輸一個10000MB的文件
單個磁盤下:
存儲1個10000MB的文件我們需要時間是
學hadoop需要什么基礎,10msX100+1000msX100=101s
10臺數據節點:?傳輸10000MB的文件所花的時間:10msX10+10ms+10s=10.11s
此例子是理論數據,實際比這個稍長。
總結:
這樣的設定使存儲一個文件主要時間就花在傳輸過程中,塊大小決定傳輸由多個快組成文件的存儲速率,這也是HSDF的核心技術。
hdfs相關的shell命令,當然不是設置每個塊越大越好。
HDFS提供給MapReduce數據服務,而一般來說MapReduce的Map任務通常一次處理一個塊中的數據,如果任務數太少(少于集群中節點的數量),就沒有發揮多節點的優勢,甚至作業的運行速度就會和單節點一樣。
分布式的文件抽象能夠帶來的優勢是:
1、一個文件可以大于每個磁盤
2、文件不用全在一個磁盤上。
為什么需要分布式存儲,3、簡化了存儲子系統的設計。
不僅如此,基于元數據塊的存儲方式非常適合用于備份,利用備份可提供數據容錯能力和可用性。
HDFS的關鍵運作機制
HDFS是基于主從結構(master/slaver)構件。
詳細運行機制將在下篇文章介紹。。。。。。
nas和移動硬盤區別、如何使用HDFS
HDFS是在安裝hadoop-0.20.2.tar.gz并成功配置后即可使用。具體安裝過程不再贅述。參見:《安裝并運行hadoop》、《Ubuntu 14.04下安裝JDK8?》
無論是使用shell腳本,或者使用WEB UI進行操作,使用前必須得明白HDFS的配置。便于存儲操作或者操作優化。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态