雲計算知識點梳理
來自專欄編程雜記6 人贊了文章
第一章:大數據與雲計算
1. 分辨出軟體是屬於 Iass,Paas, Saas 的哪一類?
將雲計算按照服務類型可以分為三類:Iaas,Paas,Saas。
Iaas :將基礎設施作為服務,將硬體設備等基礎資源封裝成服務供用戶使用。
- Amazon EC2 彈性雲計算服務
- Amazon S3 簡單存儲服務
- Amazon Web Services
- (如上,都是底層的硬體環境,提供的只是基本硬體環境,雲計算或者存儲所需要的高性能CPU計算和大容量硬碟。)
Paas:將平台作為服務,提供用戶應用程序的運行環境。
- Google App Engine
- Microsoft Windows Azure
- Amazon MapReduce (仿 Google MapReduce)
- Amazon SimpleDB(仿 Goggle BigTable)
- (如上,都是基本的操作系統平台、引擎、資料庫系統,類似於一個空白的 IDE )
Saas:將軟體作為服務,只提供某些專門用途的服務供應用調用。
- Salesforce online CRM 在線客戶關係管理服務
- Amazon FPS 電子商務服務
- Amazon DevPay
- Amazon Alexa Web 網站訪問統計服務
- (如上,提供的都是專門的針對某一服務的特定製作的應用解決方案,類似於 App)
2. 雲計算的發展歷史以及在雲計算技術出現之前和之後出現的計算機技術了解。
雲計算的概念最先由Google在2006年提出,同年Google,Amazon,Microsoft相繼提出雲計算服務。
雲計算領域的代表:
- 國外:Amazon,Google,Microsoft,VMware,Salesforce,Facebook,YouTube,Myspace
- 國內:阿里雲、騰訊、七牛雲、UCloud
雲計算的特點:
- 超大規模
- 虛擬化
- 高可靠性
- 通用型
- 高可伸縮性
- 按需服務
- 極其廉價
3. 雲計算的發展重點是什麼?
雲計算的優勢:
- 在於它的技術特徵和規模效應所帶來的壓倒性的性能價格比優勢。
雲計算的定義:
- 通過網路提供可動態伸縮的廉價的計算和存儲能力。
雲計算的主要特徵:
- 對資源的整合和動態配置。
第二章:Google 雲計算原理與應用
1. Google 雲計算三大件(GFS,MapReduce,BigTable)的了解。
Google雲計算技術包括:
- Google文件系統GFS
- 分散式計算編程模型 MapReduce
- 分散式鎖服務 Chubby
- 分散式結構化數據表 Bigtable
- 分散式存儲系統 Megastore
- 分散式監控系統 Dapper
- 海量數據的互動式分析工具 Dreme
- 內存大數據分析系統 PowerDrill
- Google應用程序引擎
2. GFS 的存儲方式是什麼?它有什麼特點,它是如何提高可靠性的?
Google文件系統( Google File System,GFS)是一個閉源的大型分散式文件系統。它為 Google雲計算提供海量存儲,處於所有核心技術的底層。
GPS 的系統結構:
- GFS將整個系統的節點分為三類角色: Client(客戶端)、 Master(主伺服器)和 Chunk Server(數據塊伺服器)。
- Client是GFS提供給應用程序的訪問介面,以庫文件的形式提供應用程序直接調用這些庫函數,並與該庫鏈接在一起。
- Master是GFS的管理節點,在邏輯上只有一個,它保存系統的元數據,負責整個文件系統的管理,是GFS文件系統中的「大腦」。
- Chunk Server負責具體的存儲工作。數據以文件的形式存儲 在 Chunk Server上, Chunk Server的個數可以有多個,它的數目直接決定了GFS的規模。GFS將文件按照固定大小進行分塊,默認是64MB,每一塊稱為一個 Chunk(數據塊),每個 Chunk都有一個對應的索引號。
GFS 的存儲方式:
- 在 GFS 中,數據存儲在 Chunk Server(數據塊伺服器)中,GFS 將文件以塊的形式存儲在 Chunk Server 上,在 Chunk Server 內部,數據又以文件的形式進行存儲。
GFS 的特點:
- 採用中心伺服器模式:使用 Master 管理分散式文件系統中的所有元文件。便於增加新的 Chunk Server,但是也使得 Master 成為了 GFS 的主要瓶頸。
- 不緩存數據:對於需要頻繁讀取的數據直接保存到內存中,而不是進行緩存。避免了緩存與實際數據不一致的問題,減少了緩存對系統資源的耗費。提高了操作的效率。
- 在用戶態下表現:提高了通用性和穩定性。
- 只提供專用介面:主要面向 Google 自身的應用程序提供服務,所以使用專業介面,可以降低實現難度、對某些應用提供特殊支持、提高效率。
GPS 可靠性的保證:
- Master 容錯機制:
- 對 GFS 的 命名空間 和 Chunk與文件名的映射表,GFS 通過操作日誌來提供容錯功能。
- 對於 GFS 的 Chunk副本的位置信息,則一式三份直接保存到各個 Chunk Server 上。(所以,當 Master 故障時,可以迅速恢復這些數據。)
- Chunk Server 容錯機制:每一個 Chunk 有多個存儲副本,分布存儲在不同的 Chunk Server 上。當某個相應的副本受損時, Master 自動將該副本複製到其他 Chunk Server 上。
3. MapReduce 是什麼?它如何對中間結果進行合併?
MapReduce 是 Google 提出的一個軟體架構,是一種處理海量數據的並行編程模式,用於大規模數據集的並行運算。其主要思想是 Map(映射) 和 Reduce(化簡)。它具有函數式編程語言和矢量編程語言的共性,非常適合於非結構化和結構化的大數據運算環境(搜索、挖掘、分析、機器學習)。
MapReduce 的編程模型:
- 一個 Map 函數對應一部分原始數據,對這部分的原始數據進行映射操作。
- Map 之間是互相獨立的,使得它們可以充分並行化。
- 一個 Reduce 操作是對每個 Map 所產生的一部分的中間結果進行合併操作。
- Reduce 之間是互相獨立的,其產生過的最終結果簡單的連接就形成了完成的結果集。
4. BigTable 是並行運算軟體架構還是軟體模式?它是幹什麼的?它與其他傳統的資料庫有什麼區別?
BigTable 是一個 Google 開發的基於 GFS 和 Chuuy 的結構化的分散式存儲系統。
BigTable 的基本目標:
- 廣泛的適應性。
- 很強的可擴展性。
- 高可用性。
- 簡單性。
BigTable 的數據模型:
- BigTable 是一個分散式多維映射表,表中的數據通過一個行關鍵字、列關鍵字以及一個時間戳進行索引。
BigTable 與傳統資料庫之間的區別:
- 從系統架構的角度來說,互聯網應用更加看重系統性能以及伸縮性,而傳統企業級應用都是比較看重數據完整性和數據安全性。
- 傳統資料庫是面向行存儲的,適合於事務性要求嚴格場合。但是雲計算的資料庫 BigTable,HBase 等都是面向列存儲的,可以實現高性能的並發讀寫操作,有較好的水平伸縮性。
第三章:Amazon 雲計算 AWS
1. EC2 了解
EC2 是亞馬遜的彈性計算雲服務,它可以提供大小可調節的計算容量。具有低成本、靈活性、安全性、易用性和容錯性的特徵。用戶可以藉助 EC2 在不需要硬體投入的情況下,快速開發和部署應用開發,並方便的配置和管理。
EC2 的基本架構主要包括了 Amazon機器映像(AMI),實例,存儲模塊 等組成部分,並能夠與 S3 等其他 Amazon 雲計算服務結合使用。
EC2 的關鍵技術:
- 地域區域和可用區域:地域區域是按照實際的地理位置進行劃分的,目前亞馬遜總共劃分了10個地理區域;可用區域是地理區域的一個個更細劃分的子集,是根據有沒有獨立的供電系統和冷卻系統進行劃分的。
- EC2 的通信機制:EC2 中的 IP 地址總共有三大類:公共 IP 地址、私有 IP 地址 和 彈性 IP 地址。
- 彈性負載平衡:彈性負載平衡可以識別出應用實例的狀態,當一個應用運行不佳時,它會自動將流量路由到狀態較好的實例資源上,當前者恢復正常後才會重新分配流量到其實例上。
- 監控服務
- 自動縮放:用戶可以自定義 EC2 的計算能力。
- 服務管理控制台:它是一種基於 Web 的控制環境,可用於啟動、管理 EC2 實例和提供各種管理工具和 API 介面。
EC2 的安全及容錯機制:
- 安全組技術:在保障用戶可以隨時更新實例的基礎上,對實例能夠接受的網路流量進行過濾。
- 使用 SSH 密鑰實現用戶的登陸服務。
- 使用彈性 IP ,使用戶在實例發生故障時可以快速的新實例進行連接。
2. S3 了解
S3 是亞馬遜的基於 Dynamo 基礎存儲架構的簡單存儲服務,它可以用於提供任意類型文件的臨時或永久性存儲。S3 具有可靠、易用和低成本的特徵。
S3 的基本概念:
- 桶:桶是用於存儲對象的容器(但是不能像文件夾一樣進行嵌套的建立),其名稱在整個 Amazon S3 伺服器中是唯一的。
- 對象:對象是 S3 的基本存儲單元,由 數據 和 元數據 組成。每個對象在桶中有唯一的 鍵 ,一但建立後便不能再修改。
- 數據可以是任意類型的,但大小受到對象最大容量的限制。
- 元數據是數據內容的附加描述信息,通過 名稱-值 集合的方式定義。
S3 的基本操作:
- S3 支持對桶和對象的操作,主要包括 Get 、 Put 、 List (對象不支持)、 Delete 、Head(桶不支持)。
S3 的安全措施:
- 身份認證
- 訪問控制列表:訪問控制列表規定了 S3 的三大授權用戶(所有者、個人授權用戶、組授權用戶)
第五章第六章:Hadoop2.0
1. Hadoop 概念了解
分散式存儲:
- 使用 客戶-伺服器模式 ,master 負責進行統一管理各個 slave 的存儲空間,slaves 負責存儲真實的數據。這樣,就能夠將多台機器硬碟結合在一起,擴大整機的存儲容量。
分散式計算:
- Google 在 MapReduce 中給出觀點 「移動計算比移動數據更划算」,因為數據量很大(幾 T),而計算代碼很小(幾 K)。
- 分散式移動計算的步驟大致可以分為三步:Map(本地計算)、Shuffle(洗牌)、Reduce(合併再計算)。
- Map:在各個 slave 中分別獨立進行本地計算,將生成了 KV 對保存在本地。
- Shuffle:將各個 slave 中 Key 值相同的 KV 對通過網路發往同一台機器。
- Reduce:將每台機器各自的 KV 對中的 value 連成鏈表,進行合併相加。
冗餘存儲:
- 將 slave1 中的 file1 重複存儲在 slave3 中,實現冗餘存儲,防止一台 slave 宕機導致的數據的丟失。
- 通過冗餘存儲,不僅提高了分散式存儲可靠性,還提高了分散式計算的可靠性。
冗餘計算:
- 對保存有 file1 的 slave1 和 slave3 同時計算,如果都沒有丟失數據,就取最先計算結束的那台機子的計算結果。如果一台丟失,可以使用另一台的。
HDFS 的內部特徵:
- 冗餘備份:HDFS 以塊的方式對文件進行存儲。文件的所有數據塊都會有副本。且文件每次都是一次性寫入的,在任何時候都只能擁有一個寫用戶。
- 副本存放:使用機架感知的策略來改進數據的可靠性、可用性和網路帶寬的利用率。
- 副本選擇:HDFS 盡量選擇離程序最近的副本,從而減少總帶寬的消耗和讀延時。
- 心跳檢測:namenode 周期性地接收每個 datanode 發送來的心跳包和數據塊,如果 namenode 沒有接收到 datanode 的心跳包,就說明 datanode 已經宕機了,不對它發送任何 IO 請求。
- 數據完整性檢測:當客戶端接收到文件後,會檢測從 datanode 獲得的數據塊的校驗和是否和隱藏文件中的相同。
- 。。。
分散式操作系統 Yarn
- Yarn 除了像一般的操作系統功能一樣管理整個集群的計算資源(CPU、內存等),還提供用戶程序訪問系統資源的 API。
第七章:虛擬化技術
1. 虛擬化的特徵
虛擬化技術的核心思想是里利用軟體或固件管理程序構建虛擬化層,把物理資源映射為虛擬資源。在虛擬資源上可以安裝或部署多個虛擬機,實現多用戶共享物理資源。
數據中心的虛擬化可以實現資源的動態分配和調度,提高現有資源的利用率和服務可靠性;可以提供自動化的服務開通能力,降低運維成本;具有有效的安全機制和可靠性機制,滿足公眾客戶和企業客戶的安全需求;同時也可以方便系統升級、遷移和改造。
2. 虛擬化的實現
數據中心的虛擬化是通過 伺服器虛擬化 、 存儲虛擬化 、 網路虛擬化 來實現的。
- 伺服器虛擬化:採用雲計算虛擬架構相比於傳統單台伺服器部署單一應用方式的另外一個好處是,可以充分滿足不同應用對系統資源的不同要求,如有的應用只需要一個3.0 GHz CPU,512MB的內存就可以很好的運行,而有的高訪問率、高吞吐量的應用則需要2個甚至是4個雙核的CPU,8GB的內存才能保證穩定的運行,在傳統方式下,往往不可能針對每一種應用來採購伺服器,而是用一種或幾種標準配置的伺服器來統一採購,這樣,勢必會造成某些應用資源富裕,而另一些應用面臨資源緊張的情況,且應用之間不能互相調配資源。採用虛擬架構後,由於每個虛擬機所需使用的系統資源都是由虛擬架構軟體統一調配,這種調配可以在虛擬機運行過程中在線的發揮作用,使得任何一個應用都可以有充分保證的資源來穩定運行,同時,該應用在此時用不到的資源又可以被其他更需要資源的應用臨時借用過去,最大限度的提高了整體系統的資源利用率。
- 存儲虛擬化:區域彈性存儲可以根據客戶的需求實時劃分存儲空間,並通過高速區域網絡掛載到本區域內任意指定的虛擬機,在虛擬機上可以將磁碟格式化為ext2/ext3/FAT/NTFS等文件系統。在需要的時候,也可以隨時將存儲卸載,並掛載到其它虛擬機上。
- 網路虛擬化:提供了可選的分散式網路交換功能,可以從一個集中式界面為整個數據中心設置虛擬機網路連接,從而簡化網路管理,可在虛擬機跨多個物理機移動時使其保持網路運行時狀態,從而實現線內監視和集中式防火牆服務。
第八章:OpenStack 開源虛擬化平台
1. OpenStack 的組件有哪些?
OpenStack 是一個管理 計算 、 存儲 和 網路資源 的數據中心雲計算開放平台。易於構建虛擬計算或存儲服務的雲,既可以為公有雲、私有雲,也可以為大雲、小雲提供可擴展、靈活的雲計算。
OpenStack 有三個主要的成員:Nova(計算服務)、Swift(存儲服務)、Glance(鏡像服務)。
第十一章:中國雲計算技術
1. 國內雲計算現狀
BAT、UCloud、華為、曙光、雲創。。。
第十二章:總結和展望
1. 主流商業雲計算解決方案與開源方案之間的比較
全書總結
1. 主流商業三巨頭(Google、Amazon、Microsoft)產品比較(共同點、方案區別)?
三家公司雲計算體系架構的共同點:
- 整個雲計算平台對外提供統一的 Web 介面。
- 後台實現的細節對用戶透明。
主要的區別:
- Amazon 、 微軟 的雲計算服務都是由多種服務組成,需要為不同的服務提供不同的入口。Google 的雲計算服務實現相對簡單,沒有實現多個服務的單獨入口。
- 微軟的雲計算服務不僅支持雲端應用程序,還支持本地的應用程序,這是微軟雲計算和其他三種方案的最大不同之一,反應了微軟的 「雲+端」 的策略。
2. 雲計算的核心演算法 Paxos 的計算
3. 傳統資料庫在雲計算下橫向拓展表現較差的原因?
傳統的關係型資料庫中都存在著擴展問題和性能問題。可擴展性主要表現在表空間不足的問題,如果要對錶空間進行擴容,這需要新增機器,需要將這些資料庫中的數據同步等問題。支持的關係資料庫伺服器數量有限;只能向上擴展不能橫向擴展。
(參考資料:傳統資料庫缺陷 )
4. 虛擬機遷移如何實現
虛擬機遷移是將虛擬機實例從源宿主機遷移到目標宿主機,並且在目標宿主機上能夠將虛擬機運行狀態恢復到其在遷移前相同的狀態,以便能夠繼續完成應用程序的任務。
虛擬機遷移主要包括:
- P2V(物理機到虛擬機的遷移)
- V2V(虛擬機到虛擬機的遷移)
- V2P(虛擬機到物理機的遷移)
遷移的步驟:
- 預遷移:選擇一個目的計算機作為 VM 的新主機
- 預定資源:對 B 發送遷移請求,確認 B 是否有需要的資源。
- 預複製:A 以迭代的方式將內存頁複製到 B 中,每次迭代只複製前一輪複製之後被修改的內容。
- 停機複製:對 A 停機,將它的網路連接重定向到 B ,將 CPU 狀態和上一輪複製後被修改過的頁都傳送到 B 。
- 提交:B 通知 A 已經成功接收了 VM 的映像,A 確認之後,就可以銷毀自己和它上面的 VM 。
- 啟動:啟動 B 上的 VM,並使用目的計算機的設備驅動,廣播新的 IP 地址。
遷移的內容:
- 內存的遷移
- 網路資源的遷移
- 存儲設備的遷移
內存的遷移的三個階段:
- Push 階段:預複製
- Stop and Copy:停機複製
- Pull:在新的 VM 運行的時候,如果訪問到未複製過的頁,就從原來的 VM 中去複製過來。
網路資源的遷移:
- 在區域網內,通過發送 ARP 重定向包,將 VM 的 IP 地址與目的主機的 MAC 地址相綁定,之後的所有包就可以發送到目的機器上。
存儲設備的遷移:
- 在區域網中通過 NFS(Network File System)方式進行共享,而非真正的遷移。
5. 雲數據中心的虛擬機管理程序了解
6. MapReduce 的主要工作原理
(見第二章和第五章整理)
7. 雲計算髮展趨勢、產業現狀
雲計算目前的缺點:
- 平台角度:沒有統一的標準
- 計算角度:對於不容易分解為眾多互相獨立子任務的緊耦合型計算任務,效率較低
- 數據角度:目前雲計算徵集數據的方式過於原始,沒有結合網路技術,直接從網路中獲取數據。
- 資源集成角度:將各類資源和應用遷移到雲計算平台的成本過高。
- 信息安全形度:失去了絕對控制權。
雲計算的發展方向:
- 使用雲格技術,將雲計算與網路技術相結合,網路技術解決分布在不同機構的各種信息資源的共享問題,雲計算解決計算力和存儲空間的集中使用問題。
註:筆者也是剛剛開始學習的小白,如有問題請指正,謝謝。
推薦閱讀:
- 《雲計算(第三版)》劉鵬著
推薦閱讀:
※OpenStack juno版 安裝配置——第六章(Neutron)
※數字經濟時代,「雲」領未來
※公有雲按秒計費的難度是什麼?
※網易雲,不一樣的雲計算公司
※Azure,人工智慧的最佳雲平台
TAG:雲計算 |