文字上的演算法讀書筆記四--分散式系統
第三篇 應用篇
如何計算的更快
隨著資料量的爆炸式增長,如何儲存和計算海量資料就成了一個問題。解決的方法之一是使用分散式系統,可以更快更好的完成使用者的請求。
程式優化
程式執行時,經過將目標檔案中的程式碼和資料從磁碟拷貝到主存,從儲存器拷貝到暫存器堆,再從暫存器中拷貝到顯示器上。
花費大量的時間把資訊從一個地方拷貝到另一個地方。需要系統設計者考慮怎麼設計儲存器使拷貝操作儘可能快。
儲存器結構,越上層的速度越快但儲存量小,相反,越下層的速度越慢但儲存量大。
程式的優化有3個方向:
1).系統級(分散式系統)
2).演算法/資料結構級(傅立葉變換,trie樹,優先佇列,空間換時間)
3).程式碼級
儘可能使用上層儲存器,訪問速度快,少呼叫函式,引數儘可能少,引數儘可能是引用和指標,減少拷貝,資料儘可能少
區域性性原理。
為什麼要分散式系統?
分散式模型大概有這幾種:
(1)多執行緒,最基本的方法
(2)graphics Processing units ,利用圖形處理器的高度並行結構來提高速度
(3)Message Passing Interface,一種訊息傳遞程式設計模型
(4)MapReduce
設計好分散式系統,需要考慮的事情比如:叢集負載均衡,資料的正確性和完整性,伺服器的錯誤處理等等。
4.3 Hadoop
軟體平臺,是Apache 開源組織的一個分散式計算開源框架,可以很容易地開發和執行處理海量資料的應用。核心設計是MapReduce和HDFS,可以認為是基於HDFS的MapReduce的實現。
分散式分解系統(HDFS)
採用master/slave架構。包括Namenode和Datanode。
Namenode是中心伺服器,負責管理檔案系統的名字空間以及客戶端對檔案的訪問。
Datanode一般是一個節點一個,負責管理所在節點上的儲存。
MapReduce
用來處理鍵/值對。Map輸出鍵值對,Reduce輸出鍵值對。
如統計詞頻,假設有一堆分好的詞,現在的任務是統計每個詞出現的次數。
首先將文字分成若干份,然後每一份資料,分配給一個Mapper,將每個詞賦值為1,然後按照某種規律(字母序,這樣同一個詞才能分配到一個Reducer)發給相應的Reducer,Reducer就是把相同的key的value累加起來,這樣完成統計詞頻。
相關文章
- 《分散式快取》讀書筆記二分散式快取筆記
- 分散式系統小筆記分散式筆記
- 文字上的演算法讀書筆記五--nlp的需要知道的術語演算法筆記
- (原)豐田的IT系統-讀書筆記筆記
- 分散式系統學習筆記分散式筆記
- 分散式系統架構筆記分散式架構筆記
- 《淘寶技術這十年》讀書筆記 (四). 分散式時代和中介軟體筆記分散式
- 《大型網站系統與Java中介軟體》讀書筆記(上)網站Java筆記
- 人月神話讀書筆記(四) (轉)筆記
- 《資料庫系統實現》讀書筆記資料庫筆記
- 《演算法圖解》讀書筆記演算法圖解筆記
- 演算法圖解讀書筆記演算法圖解筆記
- 分散式系統的Raft演算法分散式Raft演算法
- 《圖解HTTP》讀書筆記四:HTTP 首部圖解HTTP筆記
- 讀書筆記 – 你不知道的 JavaScript(上)筆記JavaScript
- 《你不知道的JavaScript》 (上) 讀書筆記JavaScript筆記
- 讀書筆記 - 你不知道的 JavaScript(上)筆記JavaScript
- 讀書筆記-你不知道的JavaScript(上)筆記JavaScript
- 分散式系統Paxos演算法分散式演算法
- 分散式系統閱讀清單分散式
- 讀書筆記...筆記
- 讀書筆記筆記
- 《讀書與做人》讀書筆記筆記
- 【讀書筆記】如何設計一個秒殺系統筆記
- [轉帖]System Performance 讀書筆記 - 作業系統(1)ORM筆記作業系統
- Travis CI:最小的分散式系統(上)分散式
- 分散式系統原理---CBCAST演算法分散式AST演算法
- 反應式程式設計讀書筆記程式設計筆記
- 《Go 語言程式設計》讀書筆記(四)介面Go程式設計筆記
- 《圖解TCP/IP》讀書筆記四:IP協議圖解TCP筆記協議
- Head First Javascript 程式設計讀書筆記(四)JavaScript程式設計筆記
- 《Pro Android Graphics》讀書筆記之第四節Android筆記
- 分散式系統2:分散式系統中的時鐘分散式
- Cucumber讀書筆記筆記
- 散文讀書筆記筆記
- HTTP 讀書筆記HTTP筆記
- CoreJava讀書筆記-------Java筆記
- flask讀書筆記Flask筆記