研一學生~突然搞起了Big Data。在學Hadoop中,突然意識到只會用工具是遠遠不夠的,很想搞懂立面的演算法和思想。請教達人們指點分散式存儲與運算的主要思想與演算法?
01-21
先弄清楚基本概念吧。
然後,你連標題和正分都區分不了,正確的提問方式都不去學習下,標題裡面還有錯別字,這麼漫不經心的錯誤,出現在知乎,證明你是多麼的浮躁和漫不經心。
做研究,深入的研究,從你改正錯別字開始吧。
看看 Google 那幾篇論文,Hadoop 就是依據這幾篇論文複製出來的東東,並且複製度還挺高,90%以上。
- GFS - Google File System
- Map Reduce
- BigTable
Hadoop主要分三部分構成:HDFS、MapReduce、ZooKeeper。
1、 HDFS是一個分散式數據存儲系統,底層是採用固定大小的塊存儲,多節點複製保證可靠性,只能追加數據的模式,後台不時合併回收,Master-Slaves心跳做到數據節點可增減,塊壓縮減少IO和存儲,等等。適合海量數據存儲。
2、 MapReduce 是一個並行計算框架,實現映射-化簡的演算法,將大的任務分成大量細小的任務,框架進行協調和平衡,基於HDFS作為輸入數據、中間結果、輸出數據的存儲,任務就近數據的分配策略,等等。適合批量計算任務處理。3、 ZooKeeper是一個集群管理服務,保證集群內個節點狀態一致性協調、狀態跟蹤、節點選舉,等等。基本Hadoop集群不需要ZooKeeper,通過IPC和心跳機制來做集群管理。HBase需要ZooKeeper管理Master-RegionServers。以上希望能對你有幫助。個人覺得,你去幾篇介紹分散式系統的survey來看看吧,看下這些系統的設計決策就大概知道哪裡需要trade off,什麼樣的場景需要什麼樣的演算法了。
路過隨便扯扯。Hadoop大數據運算用的是mapreduce思想,分而治之。數據存儲,建立多級索引,通過冗餘增加可靠性。
我來推薦本書吧
大規模分散式存儲系統 (豆瓣)講的很全
希望題主關注一下一致性問題,這個可以說是分散式存儲系統的核心。
忘了是誰說的,「分散式存儲的本質就是一致性」
2pc,3pc,paxos,raft了,等等都是需要了解的搞不懂這個問題下的答案排名
連paxos演算法都沒提,哎
推薦閱讀:
※Hadoop和Hadoop2有很大的區別么?
※如何入門分散式計算?
※雙十一時,阿里的技術人員在後台做了些什麼?
※當spark讀取一個非常大的本地文件時,讀入內存後分區會自動分布到多個節點上嗎?