自學大數據(一)

前言

幾年前茶餘飯後與一大數據工程師同事聊天吹水得時候,聽同事侃侃而談大數據,感覺很牛B得樣子。同事培訓機構剛出來1年,薪資就有就有12k,而自己4年工作經驗也才12.5k,感覺做大數據得真的很牛B。本着求知的心態,經常聽他科普大數據。

開始我們聊數據存儲,也就是HDFS,同事說:“這東西叫分佈式文件存儲,就是把文件通過計算存儲到3塊磁盤上,假如其中一塊磁盤壞掉了可以通過其他磁盤恢復,3塊磁盤是最低要求”。
聽到這我本着自己原有的知識面在想,尼瑪這不是RAID(磁盤陣列)嗎?

於是乎想當然的覺得大數據就應該用這技術,原來HDFS就是磁盤陣列技術。然而自己也並沒有深入去查資料,總覺得自己不會往這個方向發展,只不過是瞭解點技術罷了。

時至今日,感覺自己遇到了技術瓶頸需要繼續深入拓展和亟待學習新的技術,準備自學下大數據。查閱了相關資料之後發現,HDFS並非之前同事所說的那般,並且Hadoop官方還不推薦使用raid。

raid

raid是將一個完整的信息,通過計算分別存儲在不同的磁盤上,這樣可以有效利用磁盤空間和高效讀取,但是存儲一份數據是分在多個磁盤下。

HDFS

而HDFS則是將一個完整的數據備份三分存儲在三塊磁盤上,每個磁盤上存儲了一份完整的數據。當然這麼說並不完全正確,事實上是將一個大文件分塊,然後將一個分塊備份三份存儲到三個不同磁盤上。

HDFS與raid的區別
  • raid在一塊磁盤上拿不到任何完整的數據,而HDFS在每一塊磁盤上都可以拿到完整的部分數據。
  • raid省磁盤數據多大它就佔用多大空間,可能多存儲點校驗信息,而HDFS耗費大量存儲空間。假設1T的數據,在Raid情況下他就佔1t的存儲空間,而HDFS需要3T。
  • raid和HDFS都是爲了解決磁盤的橫向拓展問題。

關於raid的特性大家自己拓展了。
總而言之,HDFS不是Raid的概念。HDFS是通過分塊並備份數據達到目的,本質上與raid不同。

我估計那同事可能也是一知半解的狀態。所以吹的水略有偏差。
當然查閱了下相關資料,臉書等公司還是有HDFS-Raid的解決方案。當然當你的數據量能達到需要通過省磁盤來節省開銷的時候可以考慮相關方案,現在嘛還是一步步來。

HDFS介紹

hdfs全稱爲hadoop distributed file system,hadoop分佈式文件系統。
HDFS中重要的兩個概念NameNode和DataNode。
HDFS採用master/slave架構。一個HDFS集羣是由一個NameNode和一定數目的DataNodes組成。

NameNode
  • NameNode負責統一調度數據塊的創建、刪除和複製。
  • NameNode執行文件系統的名字空間操作,比如打開、關閉、重命名文件或目錄。它也負責確定數據塊到具體DataNode節點的映射。
  • NameNode是一箇中心服務器,負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問。
DataNode
  • 集羣中的DataNode一般是一個節點一個,負責管理它所在節點上的存儲。HDFS暴露了文件系統的名字空間,用戶能夠以文件的形式在上面存儲數據。從內部看,一個文件其實被分成一個或多個數據塊,這些塊存儲在一組DataNodes上。
  • DataNode負責處理文件系統客戶端的讀寫請求。

關於初學瞭解以上信息就夠了,剩下的多看看HDFS的api。關於內部的數據流轉原理,容錯,可靠保障等。這些都是運維級的事情了,說簡單也簡單。有興趣童鞋可以自己拓展。對於我來說,對他的基礎概念瞭解完,內部原理好像自然而然就融會貫通了。

總結

目前的技術可以做到一個磁盤4TB那麼假如你的數據是PB級別怎麼存儲。難道一塊磁盤一塊磁盤去寫,得寫到何年何月?那麼讀取和檢索呢?所以這就是HDFS存在意義。

發佈了119 篇原創文章 · 獲贊 28 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章