云計算基本知識_第1頁
云計算基本知識_第2頁
云計算基本知識_第3頁
云計算基本知識_第4頁
云計算基本知識_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第一講:云計算概述1什么是云計算? 云計算是一種能夠?qū)討B(tài)伸縮的虛擬化資源通過互聯(lián)網(wǎng)以服務(wù)的方式提供給用戶的計算模式.根據(jù)云提供的服務(wù)類型,可以劃分為基礎(chǔ)設(shè)施云、平臺云、應(yīng)用云。根據(jù)云的服務(wù)方式,可以劃分為公有云、私有云、混合云.2云計算的優(yōu)勢?eq\o\ac(○,1)優(yōu)化產(chǎn)業(yè)布局–成本關(guān)鍵由硬件成本轉(zhuǎn)為電力成本、散熱成本–分散的、高能耗模式轉(zhuǎn)變?yōu)榧械摹①Y源友好的模式–自給自足資源作坊轉(zhuǎn)變?yōu)橐?guī)模效應(yīng)的工業(yè)化資源工廠eq\o\ac(○,2)推進專業(yè)分工–專業(yè)的大型云計算廠商–實力雄厚的科研技術(shù)團隊推動硬件技術(shù)革新–具有豐富知識和經(jīng)驗的維護管理團隊和配套軟件–產(chǎn)業(yè)鏈中的新產(chǎn)業(yè)契機eq\o\ac(○,3)提升資源利用率–更加高效的解決常規(guī)業(yè)務(wù)–更好的應(yīng)對突發(fā)任務(wù)或事件–更加平衡的資源分配和負載eq\o\ac(○,4)減少初期投資–更少的IT基礎(chǔ)設(shè)施投入–更少的軟件投入–更少的人力投入–更短的培訓(xùn)周期–更靈活的轉(zhuǎn)型支持eq\o\ac(○,5)降低管理開銷–服務(wù)化管理–無需自己建立維護管理團隊–隨需應(yīng)變的解決方案–知識、經(jīng)驗更加豐富的管理隊伍–通過業(yè)務(wù)模塊的可配置提高系統(tǒng)的靈活性3云計算的動因?eq\o\ac(○,1)芯片與硬件技術(shù)–硬件能力的激增、成本的大幅下降,使得獨立運作的公司集中客觀的硬件能力實現(xiàn)規(guī)模效益成為可能eq\o\ac(○,2)資源虛擬化–資源在云端,需要被統(tǒng)一的管理–異構(gòu)硬件、兼容性問題–虛擬化技術(shù)eq\o\ac(○,3)應(yīng)用需求eq\o\ac(○,3)面向服務(wù)的架構(gòu)SOA–開放式數(shù)據(jù)模型–統(tǒng)一通信標準–更加豐富的服務(wù)–更加松散耦合、靈活的IT架構(gòu)–轉(zhuǎn)變了人們對IT系統(tǒng)的認識eq\o\ac(○,4)軟件即服務(wù)SaaS–轉(zhuǎn)變了人們使用服務(wù)的方式–使得終端用戶熟悉服務(wù)的交互模式–改變了IT界的商業(yè)模式–實力雄厚的大公司負責基礎(chǔ)設(shè)施,小企業(yè)通過創(chuàng)新挖掘充滿潛力的市場–“長尾理論”eq\o\ac(○,5)互聯(lián)網(wǎng)技術(shù)–基礎(chǔ)設(shè)施–多種接入方式–更加廣闊的覆蓋–帶寬和可靠性得到大幅提升–使得IT新模式的穩(wěn)定性、可靠性、安全性、可用性、靈活性、可管理性、自動化程度、節(jié)能環(huán)保等得到保障eq\o\ac(○,6)Web2。0技術(shù)–用戶從信息的獲得者變成信息的貢獻者–博客(微博)、內(nèi)容聚合、百科全書(Wiki)、社交網(wǎng)絡(luò)、對等網(wǎng)絡(luò)(P2P)–富互聯(lián)網(wǎng)應(yīng)用(RichInternetApplication)成為網(wǎng)絡(luò)應(yīng)用發(fā)展的趨勢–改變了人們的生活方式–為云計算提出了內(nèi)在需求4查找資料:業(yè)界主流的云計算產(chǎn)品典型的云計算應(yīng)用補充:1云計算特征是什么?eq\o\ac(○,1)硬件和軟件都是資源eq\o\ac(○,2)資源可以根據(jù)需要進行動態(tài)擴展與配置eq\o\ac(○,3)按用計費、無需管理eq\o\ac(○,4)物理上分布式共享,邏輯上以單一整體呈現(xiàn)2云計算的發(fā)展歷程?eq\o\ac(○,1)超級計算機eq\o\ac(○,2)集群計算eq\o\ac(○,3)分布式計算eq\o\ac(○,4)網(wǎng)格計算eq\o\ac(○,5)效用計算eq\o\ac(○,6)云計算第二講:云服務(wù)1云服務(wù)的基本層次? 云計算的基本層次分為三層,依次為IaaS,PaaS和SaaS。 IaaS(架構(gòu)即服務(wù)),提供了核心計算資源和網(wǎng)絡(luò)架構(gòu)的服務(wù)。基礎(chǔ)設(shè)施棧包括操作系統(tǒng)訪問、防火墻、路由和負載平衡。示例產(chǎn)品:Flexiscale和AmazonEC2。 PaaS(平臺即服務(wù))提供平臺給系統(tǒng)管理員和開發(fā)人員,令其可以基于平臺構(gòu)建、測試及部署定制應(yīng)用程序。也降低了管理系統(tǒng)的成本.典型服務(wù)包括Storage、Database、Scalability。示例產(chǎn)品:GoogleAppEngine、AWS:S3、MicrosoftAzure。 SaaS(軟件即服務(wù))通過Internet提供軟件的模式,用戶向提供商租用基于Web的軟件來管理企業(yè)經(jīng)營活動,且無需對軟件進行維護,服務(wù)提供商會全權(quán)管理和維護軟件。示例產(chǎn)品:GoogleDocs、CRM、FinancialPlanning、HumanResources、WordProcessing等。2IaaS的基本功能?eq\o\ac(○,1)資源抽象eq\o\ac(○,2)資源監(jiān)控eq\o\ac(○,3)負載管理eq\o\ac(○,4)數(shù)據(jù)管理eq\o\ac(○,5)資源部署eq\o\ac(○,6)安全管理eq\o\ac(○,7)計費管理3PaaS的基本功能?eq\o\ac(○,1)開發(fā)平臺eq\o\ac(○,2)運行時環(huán)境eq\o\ac(○,3)運營環(huán)境補充:1IaaS服務(wù)流程?規(guī)劃階段->部署階段-〉運行階段2PaaS實現(xiàn)步驟?eq\o\ac(○,1)總體設(shè)計eq\o\ac(○,2)開發(fā)平臺eq\o\ac(○,3)運行環(huán)境eq\o\ac(○,4)運營環(huán)境3云平臺上開發(fā)應(yīng)用的優(yōu)勢?–提供高級編程接口,簡單易用,縮短編程人員上手時間–應(yīng)用的開發(fā)與運行基于相同的平臺,兼容性問題較少–開發(fā)者無需考慮應(yīng)用的可伸縮性、服務(wù)容量問題–平臺層的運營管理功能還能夠幫助開發(fā)人員對應(yīng)用進行監(jiān)控和計費4應(yīng)用層的特征?–網(wǎng)絡(luò)訪問模式–租用付費–高度整合第四講:虛擬化1虛擬化的概念? 虛擬化是表示計算機資源的抽象方法,通過虛擬化可以用與訪問抽象前資源一致的方法來訪問抽象后的資源。這種資源的抽象方法并不受實現(xiàn)、地理位置或底層資源的物理配置限制。(wiki)2服務(wù)器虛擬化的特性?eq\o\ac(○,1)多實例–一個物理服務(wù)器上可以運行多個虛擬服務(wù)器–支持多個客戶操作系統(tǒng)–物理系統(tǒng)資源以可控的方式分配給虛擬機eq\o\ac(○,2)隔離性–虛擬機之間完全隔離–一個虛擬機的崩潰不會對其他虛擬機造成影響–虛擬機之間的數(shù)據(jù)相對獨立,不會泄露–虛擬機之間如果需要互相訪問,方式等同于獨立物理服務(wù)器之間的互相訪問eq\o\ac(○,3)封裝性–硬件無關(guān)–對外表現(xiàn)為單一的邏輯實體–一個虛擬機可以方便的在不同硬件之間復(fù)制、移動–將不同訪問方式的硬件封裝成統(tǒng)一標準化的虛擬硬件設(shè)備,保證了虛擬機的兼容性eq\o\ac(○,4)高性能–可通過擴展獲得“無限"的性能–虛擬化抽象層需要一定管理開銷3服務(wù)器虛擬化的關(guān)鍵技術(shù)?eq\o\ac(○,1)計算虛擬化–CPU虛擬化–計算負載的動態(tài)分配–能耗管理eq\o\ac(○,2)存儲虛擬化–內(nèi)存虛擬化–磁盤存儲動態(tài)分配eq\o\ac(○,3)設(shè)備與I/O虛擬化–軟件方式實現(xiàn)–統(tǒng)一、標準化的接口–操作指令轉(zhuǎn)譯eq\o\ac(○,4)實時遷移技術(shù)–將整個虛擬機的運行狀態(tài)完整、快速地從原宿主機的硬件平臺轉(zhuǎn)移到新的宿主機硬件平臺。4創(chuàng)建虛擬化解決方案的步驟?eq\o\ac(○,1)創(chuàng)建虛擬化解決方案eq\o\ac(○,2)部署虛擬化解決方案eq\o\ac(○,3)管理虛擬化解決方案5什么是數(shù)據(jù)中心? 數(shù)據(jù)中心是一整套復(fù)雜的設(shè)施,它不僅僅包括計算機系統(tǒng)和其它與之配套的設(shè)備(例如通信和存儲系統(tǒng)),還包含冗余的數(shù)據(jù)通信連接、環(huán)境控制設(shè)備、監(jiān)控設(shè)置以及各種安全裝置。6虛擬化與云計算的關(guān)系? 虛擬化技術(shù)以及各種計算機科學概念,如效用計算、SOA等,的發(fā)展和商業(yè)實現(xiàn)打開了云計算的大門,而云計算本質(zhì)上說應(yīng)該就是虛擬化服務(wù)。從虛擬化和云計算的過程,我們實現(xiàn)了跨系統(tǒng)的資源調(diào)度,將大量的計算機資源組成資源池,用于動態(tài)地創(chuàng)建高度虛擬化的資源提供給用戶,從而最終實現(xiàn)應(yīng)用、數(shù)據(jù)、IT資源以服務(wù)的方式通過網(wǎng)絡(luò)提供給客戶。可以說云計算是虛擬化的最高境界,虛擬化是云計算的底層結(jié)構(gòu)。補充:1虛擬化的典型類型?eq\o\ac(○,1)基礎(chǔ)設(shè)施虛擬化eq\o\ac(○,2)系統(tǒng)虛擬化eq\o\ac(○,3)軟件虛擬化2虛擬化的目的eq\o\ac(○,1)對象脫離原有環(huán)境eq\o\ac(○,2)在計算機上被表示eq\o\ac(○,3)通過計算機控制按需獲取第五講:OpenStack1AWS模式是什么,有什么優(yōu)點? AmazonWebServices(AWS) 模式:用戶應(yīng)用使用IaaS基礎(chǔ)IT資源,將PaaS和通用服務(wù)作為應(yīng)用架構(gòu)中的組件來構(gòu)建自己的服務(wù) 特點:通過WebService接口開放數(shù)據(jù)和功能;一切以服務(wù)實現(xiàn);通過SOA框架使系統(tǒng)達到松耦合。2IaaS模式核心需求有哪些? 云擁有者:配置和操作基礎(chǔ)架構(gòu);服務(wù)的提供者:注冊云服務(wù)、查看服務(wù)的使用情況;查看服務(wù)的計算情況;服務(wù)的使用者:創(chuàng)建和存儲自定義的鏡像、啟動監(jiān)控和終止實例。3Openstack都包含哪些核心項目,作用是什么? Nova(計算)、Swift(對象存儲)、Glance(鏡像)、Keystone(身份)、Dashboard(自助門戶)、Quantum(網(wǎng)絡(luò)連接)、Cinder(塊存儲服務(wù))。4鏡像和實例有什么區(qū)別和聯(lián)系?鏡像:固定搭配實例:固定搭配的一個實例鏡像的存在便于對大量實例的管理,如歸類、縮短選擇時間、計費等5Nova有哪些核心模塊,工作過程是什么? Nova是一套控制器,用于為單個用戶或使用群組啟動虛擬機實例。將提供預(yù)制的鏡像或是為用戶創(chuàng)建的鏡像提供存儲機制,這樣用戶就能夠?qū)㈢R像以虛擬機的形式啟動。 Nova—api:負責接收和響應(yīng)終端用戶有關(guān)虛擬機計算和云硬盤存儲的請求,是整個Nova的入口。 Nova—compute:主要的執(zhí)行守護進程,職責是基于各種虛擬化技術(shù)實現(xiàn)創(chuàng)建和終止虛擬機。整合了CPU/內(nèi)存、存儲和網(wǎng)絡(luò)三類資源部署管理虛擬機,實現(xiàn)計算能力的交付. Nova-volumn:職責是創(chuàng)建、掛載和卸載持久化的磁盤虛擬機。 Nova—network:職責是實現(xiàn)網(wǎng)絡(luò)資源池的管理. Nova-schedule:職責是調(diào)度虛擬機在哪個物理宿主機上部署。 AMQP消息中間件:實現(xiàn)服務(wù)接口與實現(xiàn)解耦以及子系統(tǒng)之間的通信.通過HTTP協(xié)議,采用REST風格實現(xiàn)接口定義和響應(yīng),發(fā)送執(zhí)行消息指令至隊列,由具體的訂閱實現(xiàn)模塊執(zhí)行指令.6Keystone權(quán)限控制過程是什么? User:用戶,就是一個人的賬號 Credential:用來證明用戶身份的證據(jù) Authentication:鑒權(quán),也即對用戶身份鑒別的一個過程。 Token:令牌。對用戶鑒權(quán)完畢之后,Keystone會為用戶頒發(fā)一個令牌,這樣用戶在請求其他服務(wù)的時候,只需要亮出自己的令牌即可,而不需要發(fā)送自己的密鑰.當然以防仿冒令牌,令牌是有時限的。 Service:服務(wù),Keystone提供了系統(tǒng)能夠提供的服務(wù)目錄,例如Nova,Glance,Swift等。 Endpoint:直譯為端點,其實指的是要訪問的服務(wù)的地址.如果細分的話,又可以進一步分為對外提供服務(wù)的地址,管理地址等。 Role:即賦予該用戶的權(quán)限,Openstack提供的是一個多租戶環(huán)境,在Openstack中租戶對應(yīng)到項目(Project)。一個用戶可以同時屬于多個不同的項目,當然在不同的項目中可以充當不同的角色,也即擁有不同的權(quán)限。 關(guān)鍵的兩點:1)User從Keystone獲取令牌以及服務(wù)列表;2)User訪問服務(wù)時,亮出自己的令牌,相關(guān)的服務(wù)向Keystone求證令牌的合法性。7Quantum原理是什么? 實現(xiàn)網(wǎng)絡(luò)連接管理,解決網(wǎng)絡(luò)虛擬化問題。8Swift的核心概念有哪些?–Object:對象?;镜拇鎯嶓w,所有數(shù)據(jù)按照對象進行存儲.–Container:容器。對象的裝載體,組織數(shù)據(jù)的方式,存儲的隔間,類似于文件夾,但不能嵌套,object存儲于container中。–Account:賬戶。權(quán)限單位,account擁有若干container.9Swift的組件有哪些,都有什么作用? ProxyServer:提供SwiftAPI的服務(wù)器進程,負責Swift其余組件間的相互通信 StorageServer:提供了磁盤設(shè)備上的存儲服務(wù) ConsistencyServer:查找并解決由數(shù)據(jù)損壞和硬件故障引起的錯誤,包含Auditor、Updater和Replicator Ring:用于記錄存儲對象和物理位置間的映射關(guān)系10Ring算法思想是什么? 一致性哈希算法:Swift利用一致性哈希算法構(gòu)建了一個冗余的可擴展的分布式對象存儲集群。Swift采用一致性哈希的主要目的是在改變集群的Node數(shù)量時,能夠盡可能少地改變已存在Key和Node的映射關(guān)系。該算法的思路分為以下三個步驟。首先計算每個節(jié)點的哈希值,并將其分配到一個0~2^32的圓環(huán)區(qū)間上。其次使用相同方法計算存儲對象的哈希值,也將其分配到這個圓環(huán)上。隨后從數(shù)據(jù)映射到的位置開始順時針查找,將數(shù)據(jù)保存到找到的第一個節(jié)點上。如果超過2^32仍然找不到節(jié)點,就會保存到第一個節(jié)點上。Replica。 Zone:把集群的Node分配到每個Zone中,其中同一個Partition的Replica不能同時放在同一個Node上或同一個Zone內(nèi)。 Weight:未來添加存儲能力更大的Node時,分配到更多的Partition。11Quorum協(xié)議的內(nèi)容是什么? 在分布式存儲系統(tǒng)中用于控制一致性級別的一種策略。 N=numbersofnodesthatstoredata(同一份數(shù)據(jù)的Replica的份數(shù)) W=numberofsuccessfulwritesinaputrequest(更新一個數(shù)據(jù)對象時需要確保成功更新的份數(shù)) R=numberofsuccessfulreadsinagetrequest(讀取數(shù)據(jù)時需要讀取的Replica的份數(shù)) W+R〉NW>N/2(常用:N=3、w=R=2)第六講:云存儲1大規(guī)模數(shù)據(jù)存儲面臨的新問題與挑戰(zhàn)–成本問題–容量問題–可靠問題–使用問題2GFS體系結(jié)構(gòu) Client:GFS提供給應(yīng)用程序的庫文件形式訪問接口;Master:GFS的管理節(jié)點,邏輯上只有一個,保存系統(tǒng)元數(shù)據(jù);ChunkServer:GFS的數(shù)據(jù)存儲節(jié)點,大小固定(64MB)。采用中心服務(wù)器模式,不緩存數(shù)據(jù),在用戶態(tài)下實現(xiàn),提供專用的訪問接口。 Master節(jié)點任務(wù):存儲元數(shù)據(jù);文件系統(tǒng)目錄管理與加鎖;與ChunkServer進行周期性通信;數(shù)據(jù)塊創(chuàng)建、復(fù)制與負載均衡;垃圾回收;陳舊數(shù)據(jù)塊刪除。3GFS的容錯機制eq\o\ac(○,1)Master容錯–三類元數(shù)據(jù):命名空間(目錄結(jié)構(gòu))、Chunk與文件名的映射以及Chunk副本的位置信息.–前兩類通過日志提供容錯,Chunk副本信息存儲于ChunkServer,Master出現(xiàn)故障時可恢復(fù).eq\o\ac(○,2)ChunkServer容錯–每個Chunk有多個存儲副本(通常是3個),分別存儲于不通的服務(wù)器上。–每個Chunk又劃分為若干Block(64KB),每個Block對應(yīng)一個32bit的校驗碼,保證數(shù)據(jù)正確(若某個Block錯誤,則轉(zhuǎn)移至其他Chunk副本).4Paxos協(xié)議 分布式環(huán)境下保持一致性的協(xié)議。–決議(value)只有在被proposers提出后才能被批準,未經(jīng)批準的決議稱為“提案(proposal)”.–在一次Paxos算法的執(zhí)行實例中,只批準(chosen)一個value。–learners只能獲得被批準(chosen)的value。5Chubby鎖機制 Chubby是Google為解決分布式一致性問題而設(shè)計的提供粗粒度鎖服務(wù)的文件系統(tǒng).Chubby系統(tǒng)本質(zhì)上就是一個分布式的、存儲大量小文件的文件系統(tǒng).Chubby中的鎖就是文件,創(chuàng)建文件就是進行加鎖操作.用戶通過打開、關(guān)閉和存取文件,獲取共享鎖或獨占鎖,并且通過通信機制,向用戶發(fā)送更新信息.6Chubby的通信協(xié)議 操作的允許授權(quán)是通過限時的、倒計時“租期”系統(tǒng)來處理的。7Bigtable數(shù)據(jù)結(jié)構(gòu)–分布式多維映射表–通過行關(guān)鍵字+列關(guān)鍵字+時間戳進行索引–Bigtable對存儲的數(shù)據(jù)不做解析,看做字符串,具體數(shù)據(jù)結(jié)構(gòu)實現(xiàn)需要用戶自行處理–每行數(shù)據(jù)有一個可排序的關(guān)鍵字和任意列項;–可將多個列歸并為一組,稱為“族”,同一個族的數(shù)據(jù)被壓縮在一起保存。–邏輯上的表被劃分成若干子表,每個子表存儲了table的一部分行(每個子表由多個SSTable文件組成,SSTable文件存儲在GFS上)8Bigtable優(yōu)化機制eq\o\ac(○,1)局部性群組–根據(jù)需要,將原本不存儲在一起的數(shù)據(jù),以列族為單位存儲至單獨的子表。eq\o\ac(○,2)布隆過濾器–判斷某個元素是否隸屬于集合。eq\o\ac(○,3)合并壓縮–合并壓縮操作讀取多個SSTable,創(chuàng)建一個新的SSTable來保持其中的最新數(shù)據(jù)。9云存儲應(yīng)用的特點 通用的設(shè)備支持;數(shù)據(jù)同步與共享;任意格式/大小文件;免費+付費。第七講:MapReduce算法原理1Mapreduce算法的架構(gòu) 每個mapreduce任務(wù)都被初始化為一個job,每個job分為兩個階段,實現(xiàn)了Map和Reduce兩個功能: Map:把一個函數(shù)應(yīng)用于集合中所有成員,然后返回一個基于這個處理的結(jié)果集。 Reduce:對結(jié)果集進行分類和歸納。2Wordcount算例eq\o\ac(○,1)自動分割文本.eq\o\ac(○,2)分割后的每一對〈key,value〉進行用戶定義的map處理,生成新的〈key,value>對。eq\o\ac(○,3)系統(tǒng)自動對輸出結(jié)果集歸攏排序,傳給reduce。eq\o\ac(○,4)通過reduce生成最后結(jié)果。3Hadoop執(zhí)行MR的過程eq\o\ac(○,1)master節(jié)點運行jobTracker實例,接收客戶端job請求,一個job是對一個數(shù)據(jù)集的處理,slave節(jié)點運行TaskTracker實例,一個task是一次map或者reduce處理過程.eq\o\ac(○,2)MR程序由一個jar文件和一個xml文件組成,jar包含程序代碼,xml包含程序配置操作。eq\o\ac(○,3)客戶端設(shè)定配置之后,交job,將job數(shù)據(jù)發(fā)送到j(luò)obTracker的文件系統(tǒng)中,Mapreduce庫會把所輸入文件分割成M塊,放到不同的datanote上。 eq\o\ac(○,4)JobTracker將job放入隊列進行調(diào)度,并把jar和配置文件放到共享空間 eq\o\ac(○,5)Hadoop有一個機器內(nèi)進程間操作通信的機制,taskTracker周期性告訴jobTracker工作狀態(tài),如果空,job給task分配任務(wù),開一個進程處理。eq\o\ac(○,6)MR程序被傳送到各個數(shù)據(jù)所在的HDFS的datanote上運行,mapper被輸送到數(shù)據(jù)節(jié)點上進行計算,中間結(jié)果被輸送到reducer上進行計算,Reducer將計算結(jié)果分布式保存到HDFS。 eq\o\ac(○,7)當所有map和reduce任務(wù)完成時,master會喚醒用戶程序,通知任務(wù)完成,再取執(zhí)行新的任務(wù)。4MR算法執(zhí)行過程中的數(shù)據(jù)流轉(zhuǎn)過程eq\o\ac(○,1)用戶文件上傳到HDFS,由mapreduce庫切割分別存儲到datanote上 eq\o\ac(○,2)以行號,文本形式傳入map中,經(jīng)過自定義map處理產(chǎn)生<key,value〉對,構(gòu)成中間結(jié)果集緩存在本地內(nèi)存中。eq\o\ac(○,3)reducer接到master的收集中間結(jié)果集任務(wù)后,通過遠程調(diào)用讀取中間結(jié)果,并將其排序,key相同的value進行合并處理化簡。 eq\o\ac(○,4)最終結(jié)果寫入到GFS文件系統(tǒng)中 補充:1什么是MapReduce?eq\o\ac(○,1)一個軟件架構(gòu),是一種處理海量數(shù)據(jù)的并行編程模式;eq\o\ac(○,2)用于大規(guī)模數(shù)據(jù)集(通常大于1TB)的并行運算;eq\o\ac(○,3)MapReduce實現(xiàn)了Map和Reduce兩個功能:–Map把一個函數(shù)應(yīng)用于集合中的所有成員,然后返回一個基于這個處理的結(jié)果集–Reduce對結(jié)果集進行分類和歸納–Map()和Reduce()兩個函數(shù)可能會并行運行,即使不是在同一的系統(tǒng)的同一時刻2MapReduce的優(yōu)化?–任務(wù)備份機制–本地處理–跳過有問題的記錄3MapReduce中的術(shù)語? job:MapReduce的一整個過程 task:在一個job中,每個mapper和每個reducer做的事情 taskattempt:運行一個task。 主節(jié)點運行JobTracker實例,它接受來自客戶端的工作要求。JobTracker的主要功能包括: eq\o\ac(○,1)作業(yè)控制:在hadoop中每個應(yīng)用程序被表示成一個作業(yè),每個作業(yè)又被分成多個任務(wù),JobTracker的作業(yè)控制模塊則負責作業(yè)的分解和狀態(tài)監(jiān)控。 eq\o\ac(○,2)資源管理。 taskTracker實例運行在slave節(jié)點.TaskTracker的功能包括: eq\o\ac(○,1)匯報心跳:Tracker周期性將所有節(jié)點上各種信息通過心跳機制匯報給JobTracker. eq\o\ac(○,2)執(zhí)行命令:JobTracker會給TaskTracker下達各種命令,主要包括:啟動任務(wù)(LaunchTaskAction)、提交任務(wù)(CommitTaskAction)、殺死任務(wù)(KillTaskAction)、殺死作業(yè)(KillJobAction)和重新初始化(TaskTrackerReinitAction)。第八講:MapReduce算法應(yīng)用1Mapreduce算法設(shè)計思想 任務(wù)的分解與結(jié)果的匯總。2運用mapreduce算法解決實際問題eq\o\ac(○,1)詞頻: WordCount基礎(chǔ)上map函數(shù)中,加入〈*,num〉鍵值對,一次mapreduce過程得到每個詞出現(xiàn)的個數(shù)及總數(shù) eq\o\ac(○,2)invertedindex(若干文本文件->倒排索引結(jié)果): map輸出:〈{token,fileID},one〉 combiner 輸出:<{token,fileID},sum〉 reduce 輸出:<key,value〉 = 〈word,articleId:num〉 eq\o\ac(○,3)計算文本相似度: —進行倒排索引 —計算兩兩文章對的相似性 map:同一個詞對應(yīng)的文章鏈表中,兩兩文章構(gòu)成一組<{article1,article2},num〉 reduce:進行收集 —統(tǒng)計文章相似度 3算法調(diào)優(yōu) 給shuffle過程盡可能多的內(nèi)存空間;Map和Reduce函數(shù)盡量少用內(nèi)存;運行Map和Reduce任務(wù)的JVM的內(nèi)存盡量大;Map端盡量估算Map輸入的大小,減少溢出寫磁盤的次數(shù);Reduce端的中間數(shù)據(jù)盡可能的多駐留在內(nèi)存;增加Hadoop的文件緩沖區(qū)。4Mapreduce運行過程中的各種參數(shù)及其作用 緩沖區(qū)大小(100MB);緩沖區(qū)容量閾值(0。8);最多合并流數(shù)(10);溢出寫次數(shù)最小值(3);壓縮標志(false);壓縮方式;TaskTracker的工作線程數(shù)(40);Reduce任務(wù)復(fù)制線程(5);Reduce獲取一個Map輸出最大時間(300s);Map輸出內(nèi)存緩沖區(qū)占堆空間的百分比(0.7);緩沖區(qū)溢出閾值(0.66);Map輸出閾值(1000);合并因子(10);輸入內(nèi)存閾值(0.0);Hadoop文件緩沖區(qū)(4KB)5參數(shù)調(diào)優(yōu) 將map輸出作為輸入傳給reducer,確保每個reducer的輸入都按鍵排序的過程叫shuffle,shuffle是調(diào)優(yōu)的重點。eq\o\ac(○,1)Map —產(chǎn)生輸出時,通過緩沖寫入內(nèi)存:緩沖區(qū)大小,容量閾值,指定路徑 —按照要傳送到的reducer對數(shù)據(jù)進行partirion,每個partition內(nèi)部按照key進行鍵內(nèi)排序:合并流數(shù); —壓縮map輸出效率更高:壓縮標志;壓縮方式 —reducer通過http方式從map處得到輸出文件分區(qū),分區(qū)的工作線程數(shù)由tasktracker控制:工作線程數(shù)(tracker.http。threads) eq\o\ac(○,2)Reduce -只要一個map任務(wù)完成,reduce任務(wù)就開始復(fù)制其輸出:復(fù)制線程數(shù);獲取map最大時間 -若map輸出小,復(fù)制到內(nèi)存中;否則先寫入到內(nèi)存緩沖區(qū),達到閾值后寫到磁盤:內(nèi)存緩沖區(qū)占堆空間百分比;溢出閾值;map輸出閾值; —后臺線程根據(jù)合并因子將其合并成更大的排好序的文件:合并因子 -reduce開始時,內(nèi)存中map輸出大小不能超過輸入內(nèi)存閾值,以便為reduce?供盡可能多的內(nèi)存:輸入內(nèi)存閾值 —輸出結(jié)果寫入HDFS系統(tǒng):hadoop文件緩沖區(qū)大小 6案例的mapreduce算法第九講:Hadoop1Hadoop項目的由來 起源于一個開源的網(wǎng)絡(luò)搜索引擎項目Apache Nutch,借鑒GFS,實現(xiàn)了一個開源的實現(xiàn)HDFS,05年nutch上實現(xiàn)了一個mapreduce系統(tǒng),完成了所有主要算法的mapreduce+HDFS移植。2HDFS的體系結(jié)構(gòu) 采用了主從(Master/Slave)結(jié)構(gòu)模型,一個HDFS集群是由一個NameNode和若干DataNode組成,其中NameNode作為主服務(wù)器,管理文件系統(tǒng)的命名空間和客戶端對文件的訪問操作。DataNode管理存儲的數(shù)據(jù)。 HDFS允許用戶以文件的形式存儲數(shù)據(jù),文件被分成若干個數(shù)據(jù)塊,而且這若干個數(shù)據(jù)塊存放在一組DataNode上.NameNode是整個HDFS的核心,它通過維護一些數(shù)據(jù)結(jié)構(gòu)來記錄每一個文件被分割成了多少個塊、這些塊可以從哪些DataNode中獲得,以及各個DataNode的狀態(tài)等重要信息。NameNode 執(zhí)行文件系統(tǒng)的命名空間操作,如打開、關(guān)閉、重命名文件或目錄等,也負責數(shù)據(jù)塊到具體DataNode的映射.DataNode負責處理文件系統(tǒng)客戶端的文件讀寫操作,并在 NameNode 的統(tǒng)一調(diào)度下進 行數(shù)據(jù)塊的創(chuàng)建、刪除和復(fù)制操作。3HDFS的運行機制eq\o\ac(○,1)可靠性保障: 冗余機制——數(shù)據(jù)復(fù)制 故障檢測——datanode(心跳包,塊報告,數(shù)據(jù)完整性監(jiān)測)namenode(日志和鏡像)eq\o\ac(○,2)讀文件流程: –客戶端調(diào)用DistributedFileSystem對象的open()方法–DistributedFileSystem通過RPC聯(lián)系namenode,得到所有數(shù)據(jù)塊信息,對每個數(shù)據(jù)塊,namenode返回存有該塊副本的datanode地址,并且這些datanode根據(jù)他們與客戶端的距離進行排序–DistributedFileSystem類返回一個FSDataInputStream對象給客戶端并讀取數(shù)據(jù)–客戶端對該對象調(diào)用read()方法讀取數(shù)據(jù)–FSDataInputStream連接距離最近的datanode讀取數(shù)據(jù),數(shù)據(jù)讀取完畢時FSDataInputStream會關(guān)閉與該datanode的連接,然后尋找下一個塊的datanode–FSDataInputStream可能并行讀取多個datanode,當客戶端完成讀取時,對FSDataInputStream調(diào)用close()方法—FSDataInputStream從datanode讀取數(shù)據(jù)時如果遇到錯誤,會嘗試從該塊的另外一個最近的datanode讀取數(shù)據(jù),并記住故障datanode保證以后不會繼續(xù)從該節(jié)點讀取其他塊–每個讀取的塊通過校驗和確認以保證數(shù)據(jù)完整–如果FSDataInputStream發(fā)現(xiàn)一個損壞的塊,則在從其他datanode讀取塊之前通知namenodeeq\o\ac(○,3)寫文件流程: –客戶端調(diào)用DistributedFileSystem對象的create()方法創(chuàng)建文件–DistributedFileSystem通過RPC聯(lián)系namenode,namenode執(zhí)行各種檢查確保待建立的文件不存在,且客戶端擁有創(chuàng)建該文件的權(quán)限–如果檢查通過,namenode為新文件創(chuàng)建一條記錄,否則拋出一個IOException異常–DistributedFileSystem給客戶端返回一個FSDataOutputStream對象進行寫數(shù)據(jù)–FSDataOutputStream將待寫入數(shù)據(jù)分成數(shù)據(jù)包并寫入內(nèi)部隊列dataqueue–DataStreamer處理dataqueue,根據(jù)datanode列表要求namenode分配適合的新塊來存儲數(shù)據(jù)備份–namenode分配的數(shù)據(jù)備份datanode(通常3個)形成一個管線,DataStreamer將數(shù)據(jù)包傳輸給管線中的第一個節(jié)點,然后該節(jié)點存儲完之后發(fā)送給第二個節(jié)點,以此類推–FSDataOutputStream維護一個確認隊列ackqueue,當收到管線中所有datanode的確認后,該數(shù)據(jù)包從確認隊列中刪除–如果datanode發(fā)生故障,則關(guān)閉管線,將確認隊列中的數(shù)據(jù)包添加回數(shù)據(jù)隊列的最前端,將故障的數(shù)據(jù)塊和datanode信息返回給namenode以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論