1. 程式人生 > >體系結構複習5——倉庫級計算機的並行

體系結構複習5——倉庫級計算機的並行

體系結構複習 CH8 倉庫級計算機的並行

注:本章不做重點要求,簡略複習

8.1 倉庫級計算機

8.1.1 倉庫級計算機WSC

一般把作為商用因特網基礎的超大型規模的叢集稱做倉庫級計算機(WSC),WSC的建設主要關心:

  • 成本和效能
  • 能耗效率
  • 可靠性(冗餘備份)
  • 網路I/O
  • 工作負載平衡
  • 並⾏性
  • 運⾏成本
  • 規模

計算WSC的可靠性(通過軟體冗餘來遮蔽停用次數):

availability==×+×

8.1.2 WSC和HPC對比

HPC是高效能運算機(叢集),HPC和WSC不同之處在於:

  1. HPC節點間網路比WSC快的多,且程式獨立性強,通訊頻繁
  2. HPC傾向於定製硬體,而WSC實用大眾化商用晶片降低成本
  3. HPC強調執行緒級並行或資料級並行,而WSC強調請求級並行
  4. HPC常常滿負載持續數週完成大規模執行作業,而WSC是面向併發請求的,通常不會滿負載

8.1.3 倉庫級計算機體系結構

機架是容納伺服器、交換機等的外殼框架,一個機架上往往放置有多個伺服器,伺服器通過機架交換機通訊;伺服器陣列由多個機架排列成的二維陣列構成,陣列內部機架間通過陣列交換機通訊

因此WSC訪存型別有三種:

  • 本地訪問
  • 機架內伺服器訪問
  • 陣列內伺服器訪問

平均儲存器延遲是各種訪問方式(延遲)的加權平均值

8.2 雲端計算

8.2.1 雲端計算

雲端計算是一種按使用量付費服務模式,這種模式提供可用的、便捷的、按需的網路訪問, 進入可配置的計算資源共享池(資源包括網路,伺服器,儲存,應用軟體,服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務供應商進行很少的互動(美國國家標準與技術研究院定義)

一般把雲端計算服務分成三種:

  • IaaS(基礎設施即服務):以服務的形式提供虛擬硬體資源(如虛擬主機、儲存、⺴絡、資料庫管理等資源),使用者無需購買伺服器、網路裝置、儲存裝置,只需通過網際網路租賃即可搭建⾃己的應⽤系統,例如AWS、阿里雲VPS等
  • PaaS(平臺即服務):提供應用服務引擎
    (如互聯⺴應用程式設計介面、執行平臺等),⽤戶基於該應⽤服務引擎,可以使用API構建該類應用,如GAE、SAE等
  • SaaS(軟體即服務):使用者通過Internet來使用軟體,不必購買軟體,只需按需租用軟體服務即可,如Google Docs、Oracle CRM On Demand等

8.2.2 雲端計算關鍵技術

  • 虛擬化:硬體資源虛擬化、網路設施虛擬化、應⽤虛擬化、桌⾯虛擬化等
  • 分散式儲存:Google GFS、Hadoop HDFS
  • 並行程式設計:Hadoop MapReduce
  • 資料管理:Google BigTable、Hadoop HBase
  • 分散式資源管理:Google Chubby

8.3 Hadoop MapReduce簡介

8.3.1 MapReduce基礎

MapReduce是Google提出的一個軟體架構,⽤於大規模資料集(⼤於1TB)的並行運算。當前的軟體實現是指定一個Map(對映)函式,⽤來把一組鍵值對對映成一組新的鍵值對;指定併發的Reduce(化簡)函式,⽤來保證所有對映的鍵值對中的每一個共享相同的鍵組

MapReduce系統主要由三個模組組成:

  • 客戶端用於將使用者撰寫的並行處理作業提交至Master節點
  • 主節點(Master)自動將使用者作業分解為Map任務和Reduce任務,並將任務排程到工作節點(Worker)
  • 工作節點向master請求執⾏任務,同時多個⼯作節點組成的分散式檔案系統HDFS⽤於儲存輸入輸出資料

8.3.2 MapReduce工作流程

  1. MapReduce庫先把user program的輸入檔案劃分為M份(由輸入檔案的大小和使用者定義的塊大小決定)
  2. master是負責排程的,為空閒worker分配作業(Map作業或者Reduce作業
  3. 被分配了Map作業的worker,開始讀取對應分片的輸入資料,Map作業數量和split一一對應;Map作業從輸入資料中抽取出鍵值對,每一個鍵值對都作為引數傳遞給map函式,map函式產生的中間鍵值對被快取在記憶體中。
  4. 快取的中間鍵值對會被定期寫入本地磁碟,而且被分為R個區,R的大小是由使用者定義的,將來每個區會對應一個Reduce作業;這些中間鍵值對的位置會被通報給master,master負責將資訊轉發給Reduce worker。
  5. master通知分配了Reduce作業的worker它負責的分割槽在什麼位置,當Reduce worker把所有它負責的中間鍵值對都讀過來後,先對它們進行排序,使得相同鍵的鍵值對聚集在一起。
  6. reduce worker遍歷排序後的中間鍵值對,對於每個唯一的鍵,都將鍵與關聯的值傳遞給reduce函式,reduce函式產生的輸出會新增到這個分割槽的輸出檔案中。
  7. 當所有的Map和Reduce作業都完成了,master喚醒正版的user program,MapReduce函式呼叫返回user program的程式碼。