2022-11-11
文件 存儲 數據
在大數據的學習過程中,我們經常會聽到“分布式”這三個字,那個所謂的“分布式”到底是什么意思?我們看到一些古裝電視劇電影,在古代,生產力比較低下,沒有現在的各種便捷的交通工具。人們需要運輸一些貨物的時候,最常見的方式就是套馬車,用馬來拉動車。如果需要拉的貨物比較多,一匹馬拉不動呢?人們的做法并不是訓練一匹更加強壯的馬,而是會使用多匹馬同時來拉動這輛馬車。這就是分布式的思想!
那么在程序世界中,單臺服務器的能力是有限的,雖然我們可以堆配置來構建一臺性能非常強悍的服務器,但是上限還是容易達到的,且成本會非常的高。為了解決這樣的問題,我們就可以使用多臺服務器協同工作,共同來完成指定的任務,組成一個服務器集群,而這樣的集群我們通常也就稱為--分布式集群。
分布式集群可以提供數據的存儲、計算等操作。今天我們就來聊一聊分布式存儲,也就是一個分布式文件系統。其實在HDFS之前,也有一些其他的分布式文件系統,籠統的來說,只要是實現了將數據分散的存儲在多個節點上進行存儲,并且可以實現數據的讀取就可以稱為是“分布式文件系統”。
傳統的分布式文件系統的缺點
現在想象一下這種情況:有四個文件 0.5TB的file1,1.2TB的file2,50GB的file3,100GB的file4;有7個服務器,每個服務器上有10個1TB的硬盤。
在存儲方式上,我們可以將這四個文件存儲在同一個服務器上(當然大于1TB的文件需要切分),我們需要使用一個文件來記錄這種存儲的映射關系吧。用戶是可以通過這種映射關系來找到節點硬盤相應的文件的。那么缺點也就暴露了出來:
第一、負載不均衡。
因為文件大小不一致,勢必會導致有的節點磁盤的利用率高,有的節點磁盤利用率低。
第二、網絡瓶頸問題。
一個過大的文件存儲在一個節點磁盤上,當有并行處理時,每個線程都需要從這個節點磁盤上讀取這個文件的內容,那么就會出現網絡瓶頸,不利于分布式的數據處理。
HDFS的塊結構
HDFS與其他普通文件系統一樣,同樣引入了塊(Block)的概念,并且塊的大小是固定的。但是不像普通文件系統那樣小,而是根據實際需求可以自定義的。塊是HDFS系統當中的最小存儲單位,在hadoop2.0中默認大小為128MB(hadoop1.x中的塊大小為64M)。在HDFS上的文件會被拆分成多個塊,每個塊作為獨立的單元進行存儲。多個塊存放在不同的DataNode上,整個過程中 HDFS系統會保證一個塊存儲在一個數據節點上 。但值得注意的是,如果某文件大小或者文件的最后一個塊沒有到達128M,則不會占據整個塊空間 。
塊的存儲位置
在hdfs-site.xml中我們配置過下面這個屬性,這個屬性的值就是塊在linux系統上的存儲位置
<!-- 確定DFS數據節點應該將其塊存儲在本地文件系統的何處-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
HDFS的優點
1. 高容錯性(硬件故障是常態):數據自動保存多個副本,副本丟失后,會自動恢復
2. 適合大數據集:GB、TB、甚至PB級數據、千萬規模以上的文件數量,1000以上節點規模。
3. 數據訪問: 一次性寫入,多次讀取;保證數據一致性,安全性
4. 構建成本低:可以構建在廉價機器上。
5. 多種軟硬件平臺中的可移植性
6. 高效性:Hadoop能夠在節點之間動態地移動數據,并保證各個節點的動態平衡,因此處理速度非常快。
7. 高可靠性:Hadoop的存儲和處理數據的能力值得人們信賴.
HDFS的缺點
1. 不適合做低延遲數據訪問:
HDFS的設計目標有一點是:處理大型數據集,高吞吐率。這一點勢必要以高延遲為代價的。因此HDFS不適合處理用戶要求的毫秒級的低延遲應用請求
2. 不適合小文件存取:
1. 從存儲能力出發(固定內存)
因為HDFS的文件是以塊為單位存儲的,且如果文件大小不到128M的時候,是不會占用整個塊的空間的。但是,這個塊依然會在內存中占用150個字節的元數據。因此,同樣的內存占用的情況下,大量的小文件會導致集群的存儲能力不足。
例如: 同樣是128G的內存,最多可存儲9.2億個塊。如果都是小文件,例如1M,則集群存儲的數據大小為9.2億*1M = 877TB的數據。但是如果存儲的都是128M的文件,則集群存儲的數據大小為109.6PB的數據。存儲能力大不相同。
2. 從內存占用出發(固定存儲能力)
同樣假設存儲1M和128M的文件對比,同樣存儲1PB的數據,如果是1M的小文件存儲,占用的內存空間為1PB/1Mb*150Byte = 150G的內存。如果存儲的是128M的文件存儲,占用的內存空間為1PB/128M*150Byte = 1.17G的內存占用。可以看到,同樣存儲1PB的數據,小文件的存儲比起大文件占用更多的內存。
3. 不適合并發寫入,文件隨機修改:
HDFS上的文件只能擁有一個寫者,僅僅支持append操作。不支持多用戶對同一個文件的寫操作,以及在文件任意位置進行修改
開班時間:2021-04-12(深圳)
開班盛況開班時間:2021-05-17(北京)
開班盛況開班時間:2021-03-22(杭州)
開班盛況開班時間:2021-04-26(北京)
開班盛況開班時間:2021-05-10(北京)
開班盛況開班時間:2021-02-22(北京)
開班盛況開班時間:2021-07-12(北京)
預約報名開班時間:2020-09-21(上海)
開班盛況開班時間:2021-07-12(北京)
預約報名開班時間:2019-07-22(北京)
開班盛況Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號