




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、云計(jì)算導(dǎo)論:概念 架構(gòu)與應(yīng)用第4章PaaS服務(wù)模式人民郵電出版社 21世紀(jì)高等院校云計(jì)算和大數(shù)據(jù)人才培養(yǎng)規(guī)劃教材核心系統(tǒng)概述Cloud FoundryHadoop4.14.2內(nèi)容導(dǎo)航CONTENTS 概述平臺層的功能以服務(wù)的形式提供給用戶,可以作為應(yīng)用開發(fā)測試和運(yùn)行管理的環(huán)境,亦平臺即服務(wù)(Platform as a Service,PaaS)。平臺即服務(wù)是云計(jì)算平臺層的外在表現(xiàn)形式,是云計(jì)算平臺提供的一類重要的功能集合。在云計(jì)算的多層架構(gòu)中,需要一個(gè)層次來屏蔽下層物理設(shè)備的多樣性,又要支持上層應(yīng)用的多樣性。PaaS層即通過一系列的面向應(yīng)用需求的基本服務(wù)和功能來提供應(yīng)用運(yùn)行管
2、理的基礎(chǔ),而它本身也屏蔽了基礎(chǔ)設(shè)施層的多樣性,可運(yùn)行在多樣的基礎(chǔ)設(shè)施層之上。4.1.1 驅(qū)動力平臺即服務(wù)作為云計(jì)算中的一類重要服務(wù)類型,它的出現(xiàn)有其深刻的商業(yè)和技術(shù)背景。進(jìn)入21世紀(jì)以后,基于Web應(yīng)用的電商平臺成為軟件開發(fā)的主流,企業(yè)必須尋求新的IT系統(tǒng)及應(yīng)用運(yùn)作方式,以降低大量成本投入。平臺即服務(wù)給企業(yè)在這方面的需求帶來了高效的解決方案。在云計(jì)算的架構(gòu)中,基礎(chǔ)設(shè)施層通過基于共享和虛擬化的服務(wù)來提供計(jì)算能力、存儲能力和網(wǎng)絡(luò)能力。在云計(jì)算的大框架下,平臺即服務(wù)提供了進(jìn)一步的抽象。通過對云應(yīng)用進(jìn)行分類,總結(jié)相關(guān)實(shí)踐中的共性問題,抽象出特定的模式和解決方案。PaaS包括一系列的平臺軟件和基本服務(wù)。
3、PaaS的提供商在平臺軟件和基礎(chǔ)服務(wù)的實(shí)現(xiàn)上具有多樣性,各自針對用戶對平臺的一類或幾類特定需求和使用方式。根據(jù)所針對的應(yīng)用類型,PaaS在理念、客戶定位和實(shí)現(xiàn)方式上也會存在差異。通常的企業(yè)客戶維護(hù)著大量現(xiàn)存的應(yīng)用。企業(yè)可以考慮把這些應(yīng)用遷移到云計(jì)算平臺層上,或者保持維護(hù)現(xiàn)有應(yīng)用,而把新的應(yīng)用運(yùn)行在云計(jì)算的平臺層上。PaaS技術(shù)的發(fā)展將會更加貼近客戶的多樣化需求。4.1.2 主流類型當(dāng)前,PaaS上運(yùn)行的應(yīng)用主要分為兩類:一類是Web服務(wù)類PaaS平臺架構(gòu)如圖所示。這一類應(yīng)用主要是通過瀏覽器訪問、采用請求響應(yīng)模式進(jìn)行交互的應(yīng)用,稱為事務(wù)處理類應(yīng)用。事務(wù)處理類應(yīng)用的要求主要包括快速響應(yīng)、高可用性、
4、大并發(fā)量等。Web服務(wù)類PaaS平臺架構(gòu)4.1.2 主流類型另一類是數(shù)據(jù)分析服務(wù),其PaaS平臺架構(gòu)如圖所示。這一類應(yīng)用主要是對大量的數(shù)據(jù)進(jìn)行分析處理,稱為數(shù)據(jù)分析類應(yīng)用。數(shù)據(jù)分析類應(yīng)用的主要要求包括強(qiáng)大的計(jì)算能力和存儲能力,對于實(shí)時(shí)性的要求不高,數(shù)據(jù)處理完畢后任務(wù)就結(jié)束運(yùn)行了。 數(shù)據(jù)分析類PaaS平臺架構(gòu)隨著市場規(guī)模的擴(kuò)大和市場細(xì)分的深化,PaaS的種類及提供PaaS的廠商將會不斷增加。4.1.3 功能角色 1共享的中間件平臺從架構(gòu)層次上來看,平臺層是為了有效支撐大量應(yīng)用實(shí)例的運(yùn)行管理,它是一類應(yīng)用運(yùn)行所需要的資源和服務(wù)集中起來并進(jìn)行共享的中間件平臺。PaaS將傳統(tǒng)的靜態(tài)、獨(dú)享的中間件平臺轉(zhuǎn)
5、變?yōu)橐环N動態(tài)、共享的中間件平臺。每個(gè)應(yīng)用將在云平臺上統(tǒng)一進(jìn)行管理和運(yùn)行。平臺層既提高了資源的利用率,又通過對應(yīng)用和平臺進(jìn)行概念和功能的分離進(jìn)一步簡化了應(yīng)用和平臺的運(yùn)營和管理,見右圖。PaaS將“共享”擴(kuò)展到更大的范圍。與基礎(chǔ)設(shè)施層所共享的對象不同,PaaS所共享的對象是應(yīng)用運(yùn)行所需的資源和基礎(chǔ)功能。PaaS作為擴(kuò)展的中間件4.1.3 功能角色2集成的軟件和服務(wù)平臺從功能特征的角度來看,平臺層整合各種不同的軟硬件資源向應(yīng)用提供一致而統(tǒng)一的資源和功能。如圖所示,平臺即服務(wù)可能建立在多個(gè)基礎(chǔ)設(shè)施服務(wù)之上,需要對應(yīng)用提供一個(gè)一致的、單一的基礎(chǔ)設(shè)施視圖。平臺層除了提供Web服務(wù)器、應(yīng)用服務(wù)器、消息服務(wù)器
6、等傳統(tǒng)的中間件以外,還需要提供其他相關(guān)的管理支撐服務(wù),如應(yīng)用部署、應(yīng)用性能管理、使用計(jì)量和計(jì)費(fèi)等。另外,云應(yīng)用本身可能會集成來自不同云服務(wù)提供商所提供的功能或服務(wù),這些需要平臺層提供相應(yīng)的支持。PaaS作為集成的軟件和服務(wù)平臺4.1.3 功能角色3虛擬的應(yīng)用平臺從使用模式上來看,作為應(yīng)用運(yùn)行管理的環(huán)境,PaaS模糊了物理資源的限制,在應(yīng)用看來是一個(gè)按需索取、無限可擴(kuò)的虛擬平臺,如下圖所示。PaaS作為云應(yīng)用的運(yùn)行環(huán)境,云應(yīng)用通過PaaS所提供的編程接口(API)按需獲取運(yùn)行所需要的各種(虛擬的)資源和能力??傊?,PaaS針對的是有效并自動管理大量應(yīng)用的需求。PaaS的功能和結(jié)構(gòu)設(shè)計(jì)要滿足這樣的
7、需求。PaaS作為虛擬的應(yīng)用平臺概述Cloud FoundryHadoop4.1內(nèi)容導(dǎo)航CONTENTS4.34.4核心系統(tǒng)4.24.2 核心系統(tǒng)一個(gè)平臺一般來講只能對某類應(yīng)用進(jìn)行高效、方便的支持。在當(dāng)前的IT實(shí)踐中,存在大量不同類型的應(yīng)用,因此,從用戶的觀點(diǎn)來看,PaaS與PaaS之間也存在著巨大的不同。然而,在實(shí)現(xiàn)PaaS的過程中,我們也會發(fā)現(xiàn),PaaS作為一個(gè)系統(tǒng),其中的功能和模塊大致分為兩類,首先是PaaS的核心系統(tǒng),包含了PaaS的一系列本質(zhì)特征,即使是在不同的PaaS中,也會有這些特征的實(shí)現(xiàn);其次是PaaS的擴(kuò)展系統(tǒng),主要包含了針對其支持的應(yīng)用類型的支持,比如GAE作為支持事務(wù)型W
8、eb應(yīng)用的PaaS,就包含了數(shù)據(jù)訪問和緩存的相應(yīng)模塊。本節(jié)討論通用的核心系統(tǒng)。4.2.1 簡化的應(yīng)用開發(fā)和部署模型PaaS層的基本目的是為了進(jìn)一步簡化大量應(yīng)用的開發(fā)、部署和運(yùn)行管理。假設(shè)用戶A和用戶B都需要CRM的應(yīng)用,用戶A需要很高的數(shù)據(jù)可用性,而用戶B則不太關(guān)心這個(gè)問題。開發(fā)人員只需要進(jìn)行一次開發(fā)就能滿足這兩個(gè)企業(yè)的功能性需求,而應(yīng)用管理人員則只需要在部署的時(shí)候根據(jù)業(yè)務(wù)的需求選擇配置策略,云平臺會自動為它們產(chǎn)生不同的部署和配置。PaaS層在傳統(tǒng)的功能性和非功能性分離的基礎(chǔ)上,把非功能性的需求實(shí)現(xiàn)以服務(wù)的方式提交給應(yīng)用開發(fā)者使用,并且通過利用IaaS層的功能可以實(shí)現(xiàn)應(yīng)用資源自動按需供給。所以
9、,PaaS層使得應(yīng)用的開發(fā)更加簡單,應(yīng)用的運(yùn)行更為自動化。PaaS平臺實(shí)現(xiàn)的非功能性需求4.2.2 自動資源獲取和應(yīng)用激活PaaS層的一個(gè)基本特點(diǎn)是資源分配和應(yīng)用激活的自動化操作。PaaS層可以建立在IaaS層之上,通過調(diào)用IaaS層的功能和接口獲得相應(yīng)的資源并分配給相應(yīng)的應(yīng)用,也可以直接實(shí)現(xiàn)基礎(chǔ)設(shè)施管理的功能,而無須抽象出單獨(dú)的IaaS層。提交給PaaS層的應(yīng)用分為功能性模塊和非功能性策略。PaaS層首先根據(jù)應(yīng)用的這兩方面的需求計(jì)算出支持該應(yīng)用所需要的資源類型、配置模式和相應(yīng)的數(shù)量。當(dāng)為應(yīng)用配置好運(yùn)行所需要的各類資源之后,PaaS層需要激活應(yīng)用,讓應(yīng)用確實(shí)運(yùn)行起來并為其提供正常運(yùn)行應(yīng)有的功能
10、。在應(yīng)用的部署過程中,可能涉及應(yīng)用模型沒有指定但實(shí)例化的時(shí)候必須存在的功能模塊。除了解析并實(shí)現(xiàn)資源之間的依賴關(guān)系外,在應(yīng)用能夠正式運(yùn)行之前,還需要對資源進(jìn)行一系列的配置和初始化工作。4.2.3 自動的應(yīng)用運(yùn)行管理(1)PaaS則提供了應(yīng)用運(yùn)行環(huán)境和應(yīng)用自身的分離;應(yīng)用運(yùn)行所需的資源、基礎(chǔ)服務(wù)和管理操作都可以交由PaaS平臺來負(fù)責(zé),甚至通過一系列技術(shù)實(shí)現(xiàn)自動化操作。在PaaS平臺上,企業(yè)僅需關(guān)心應(yīng)用的功能,監(jiān)控應(yīng)用的運(yùn)行是否達(dá)到要求,而無須關(guān)心如何準(zhǔn)備好各種資源和條件來使其正常運(yùn)行,后者由PaaS平臺來負(fù)責(zé)。(2)為了實(shí)現(xiàn)以應(yīng)用為中心的管理模式,PaaS展現(xiàn)給用戶的是以應(yīng)用為中心的邏輯視圖,即展
11、示應(yīng)用邏輯層次上的功能模塊,以及通過屬性和策略所表達(dá)的非功能性約束。(3)除了向應(yīng)用管理人員提供應(yīng)用的邏輯視圖,PaaS還通過在邏輯視圖上加載適當(dāng)?shù)墓芾聿僮鹘涌趶亩纬梢恢碌募晒芾硪晥D。集成的管理視圖既展示了應(yīng)用的運(yùn)行信息,又展示了管理人員可以使用的管理操作,使得以應(yīng)用為中心的管理更為直觀而簡化。(4)根據(jù)應(yīng)用的運(yùn)行動態(tài),PaaS可以實(shí)時(shí)調(diào)整提供給應(yīng)用的各類資源。4.2.4 平臺級優(yōu)化(1)在PaaS層,優(yōu)化在兩個(gè)層次上進(jìn)行:在應(yīng)用層次,針對應(yīng)用的性能和配置策略,PaaS動態(tài)調(diào)整應(yīng)用所使用的資源,在保證達(dá)到應(yīng)用要求的前提下盡量提高資源的使用率,降低應(yīng)用的運(yùn)行費(fèi)用;在PaaS平臺層次上,在保證
12、各個(gè)應(yīng)用的運(yùn)行要求下,PaaS通過資源的共享和復(fù)用從而降低平臺的運(yùn)行開銷,提高運(yùn)行效率。(2)將應(yīng)用運(yùn)行在PaaS平臺上,應(yīng)用的所有者不再擁有單獨(dú)的軟硬件平臺,針對軟硬件平臺的優(yōu)化工作也需要由PaaS來進(jìn)行。同時(shí),PaaS平臺執(zhí)行優(yōu)化工作時(shí),也需要調(diào)用所依賴的層次,如IaaS層的功能和服務(wù)來完成。PaaS平臺可以根據(jù)應(yīng)用的策略及運(yùn)行情況來自動進(jìn)行跨層次(PaaS層與IaaS層)的優(yōu)化和調(diào)整。(3) PaaS平臺上運(yùn)行著大量的應(yīng)用,由于規(guī)模和自動化的要求,其上的優(yōu)化也將面臨著巨大的挑戰(zhàn)。這是未來大規(guī)模分布式系統(tǒng)研究和實(shí)踐的重要方面。概述Hadoop4.1內(nèi)容導(dǎo)航CONTENTS4.4核心系統(tǒng)4.
13、2Cloud Foundry 簡介Cloud Foundry是VMware推出的業(yè)界第一個(gè)開源PaaS云平臺,它支持多種框架、語言、運(yùn)行時(shí)環(huán)境、云平臺及應(yīng)用服務(wù),使開發(fā)人員能夠在幾秒鐘內(nèi)進(jìn)行應(yīng)用程序的部署和擴(kuò)展,無需擔(dān)心任何基礎(chǔ)架構(gòu)的問題。同時(shí),它本身是一個(gè)基于Ruby on Rails的由多個(gè)相對獨(dú)立的子系統(tǒng)通過消息機(jī)制組成的分布式系統(tǒng),使平臺在各層級都可水平擴(kuò)展,既能在大型數(shù)據(jù)中心里運(yùn)行,也能在一臺計(jì)算機(jī)中運(yùn)行,二者使用相同的代碼庫。作為新一代云應(yīng)用平臺,Cloud Foundry專為私有云計(jì)算環(huán)境、企業(yè)級數(shù)據(jù)中心和公有云服務(wù)提供商所打造。4.3.2 特點(diǎn)Cloud Fou
14、ndry云平臺支持各種框架的靈活選擇,這些框架包括Spring for Java、.NET、Ruby on Rails、Node.js、Grails、Scala on Lift以及更多合作伙伴提供的框架(如Python,PHP等),大大提高了平臺的靈活性。1. 開發(fā)框架的選擇性Cloud Foundry可以靈活地部署在公有云、私有云或者混合云之上,如vSphere/vCloud、OpenStack、AWS、Rackspace等多種云環(huán)境中。3部署云環(huán)境的選擇性Cloud Foundry平臺將應(yīng)用和應(yīng)用依賴的服務(wù)相分開,通過在部署時(shí)將應(yīng)用和應(yīng)用依賴的服務(wù)相綁定的機(jī)制使應(yīng)用和應(yīng)用服務(wù)相對獨(dú)立,增加
15、了在PaaS平臺上部署應(yīng)用的靈活性。2應(yīng)用服務(wù)的選擇性Cloud Foundry PaaS平臺4.3.3 邏輯結(jié)構(gòu)Cloud Foundry是由相對獨(dú)立的多個(gè)模塊構(gòu)成的分布式系統(tǒng),每個(gè)模塊單獨(dú)存在和運(yùn)行,各模塊之間通過消息機(jī)制進(jìn)行通信。Cloud Foundry各模塊本身是基于Ruby語言開發(fā)的,每個(gè)部分可以認(rèn)為拿來即可運(yùn)行,不存在編譯等過程。Cloud Foundry云平臺是完全模塊化的分布式系統(tǒng),各個(gè)模塊之間是相互獨(dú)立的,通過消息總線進(jìn)行相互連接和通信,這種結(jié)構(gòu)不僅使系統(tǒng)各模塊之間的耦合度降低,而且使系統(tǒng)功能容易擴(kuò)充。 Cloud Foundry邏輯結(jié)構(gòu)4.3.3 邏輯結(jié)構(gòu)Router (
16、路由器)Authentication (認(rèn)證組件)Cloud Controller(云控制器)Health Manager (健康管理器)Application Execution(應(yīng)用執(zhí)行)Service Brokers(服務(wù)代理)Message Bus(消息總線)01020304050607Page1234567Cloud Foundry云平臺的各種應(yīng)用服務(wù)由Services模塊提供,可以靈活擴(kuò)展。Metering & Logging (計(jì)量和日志)8084.3.4 整體架構(gòu)從圖中可以看到,Cloud Foundry平臺主要由Router、Cloud Controller、Health M
17、anager、DEA、NFS、NATS、Cloud Controller Database以及Service等模塊組成。這些模塊協(xié)同合作,通過特定的消息傳輸機(jī)制和API接口進(jìn)行通信,就可以使整個(gè)云平臺正常運(yùn)行。由于在集群環(huán)境下每個(gè)模塊都有多個(gè)部署節(jié)點(diǎn),從而保證了云平臺的可靠性和彈性動態(tài)擴(kuò)展的需求,使得應(yīng)用程序可以穩(wěn)定可靠地運(yùn)行在Cloud Foundry云平臺上。Cloud Foundry包括UAA(用戶賬戶及授權(quán))和登錄服務(wù)器。UAA就是Cloud Foundry的身份管理服務(wù)。登錄服務(wù)器為UAA執(zhí)行驗(yàn)證任務(wù),并充當(dāng)后端服務(wù)。 Cloud Foundry云平臺整體架構(gòu)4.3.5 部署模式Cl
18、oud Foundry是完全模塊化的設(shè)計(jì),模塊之間不共享狀態(tài)信息,每個(gè)模塊可以單獨(dú)存在、運(yùn)轉(zhuǎn)。所以,Cloud Foundry安裝方式可以靈活多樣,既可以單節(jié)點(diǎn)安裝,也可以多節(jié)點(diǎn)安裝。在單節(jié)點(diǎn)安裝模式下,Cloud Foundry所有的模塊都安裝運(yùn)行在同一個(gè)節(jié)點(diǎn)上。這種模式安裝簡單,所需資源少,但是處理能力有限,所以,主要用于學(xué)習(xí)和測試平臺的功能和工作原理。單節(jié)點(diǎn)安裝模式Cloud Foundry整個(gè)平臺組件節(jié)點(diǎn)眾多,有些組件節(jié)點(diǎn)適宜做橫向擴(kuò)展,有些組件節(jié)點(diǎn)適宜做縱向擴(kuò)展,這需要根據(jù)節(jié)點(diǎn)的具體職責(zé)進(jìn)行分析。同一個(gè)組件都是以集群的方式進(jìn)行部署。多節(jié)點(diǎn)安裝模式4.3.5 部署模式路由集群(Rout
19、er Cluster):路由節(jié)點(diǎn)是Cloud Foundry平臺對外提供訪問的唯一接口??刂乒?jié)點(diǎn)集群(Cloud Countroller Cluster):控制節(jié)點(diǎn)是整個(gè)Cloud Foundry平臺的核心節(jié)點(diǎn)。健康管理集群(Health Manager Cluster):負(fù)責(zé)應(yīng)用狀態(tài)監(jiān)控及管理。數(shù)據(jù)中心:數(shù)據(jù)中心由三部分內(nèi)容組成:NFS Server、CCDB、UAADB。身份認(rèn)證服務(wù)集群(User Authentication Authorization Cluster):為平臺提供身份認(rèn)證及授權(quán)服務(wù)。DEA集群(Droplet Execution Agency Cluster):DEA節(jié)
20、點(diǎn)是應(yīng)用的最終運(yùn)行環(huán)境。7服務(wù)中心(Service Cluster):服務(wù)中心是對所有第三方服務(wù)的一個(gè)總稱,包括Redis、MySql、Memcached、MongoDB等。NATS:NATS是消息組件,該節(jié)點(diǎn)發(fā)生故障的情況下,會影響其他組件中通過NATS消息總線傳輸數(shù)據(jù),但是不影響應(yīng)用的所有運(yùn)行環(huán)境。打包集群(Stager Cluster):用戶上傳代碼到Cloud Foundry平臺后,Cloud Controller需要將這部分代碼結(jié)合平臺環(huán)境打包成DEA可以運(yùn)行的格式??蛇x部署:Loggregator是Cloud Foundry中用于對應(yīng)用日志收集的組件,并可以對接其他的日志組件。概述
21、4.1內(nèi)容導(dǎo)航CONTENTS核心系統(tǒng)4.2Cloud Foundry4.3Hadoop 概述對數(shù)據(jù)的存儲、處理存在困難,并不是個(gè)新問題。近年來,數(shù)據(jù)的容量、處理的速度、數(shù)據(jù)的種類正在變化,促進(jìn)了不少算法的發(fā)展。無論是什么樣的解決方案,背后的推薦算法都必須處理大量數(shù)據(jù),對問題空間越了解就越容易得出更好的結(jié)論。Hadoop可以為大數(shù)據(jù)應(yīng)用提供一個(gè)可編程的、經(jīng)濟(jì)的、可伸縮的平臺。這個(gè)分布式系統(tǒng)由分布式文件存儲系統(tǒng)(HDFS)以及計(jì)算框架(MapReduce)組成。Hadoop是一個(gè)開源項(xiàng)目,能為大量數(shù)據(jù)集提供批量數(shù)據(jù)處理能力。Hadoop的設(shè)計(jì)可以容忍軟硬件的不可靠,并且為應(yīng)用開發(fā)
22、者提供一個(gè)便于開發(fā)分布式應(yīng)用的平臺。Hadoop使用沒有特殊硬件或特殊網(wǎng)絡(luò)基礎(chǔ)設(shè)施的普通的服務(wù)器群來形成一個(gè)邏輯上可存儲大量數(shù)據(jù)、進(jìn)行并發(fā)計(jì)算的集群,這個(gè)集群可以被很多團(tuán)體和個(gè)人共享。4.4.2 Hadoop簡史 Hadoop基于Google的兩篇論文發(fā)展而來。一篇發(fā)表于2003年的論文描述了一個(gè)用來存儲海量數(shù)據(jù)、可編程、可伸縮的分布式文件系統(tǒng),該文件系統(tǒng)被稱為Google文件系統(tǒng),或簡稱GFS。2004年,另外一篇名為“MapReduce:大集群中一種簡單的數(shù)據(jù)處理框架”的論文發(fā)表了,該論文定義了一種編程模型及其相關(guān)的框架,GFS和MapReduce相互協(xié)同,可在相對便宜的商用機(jī)器上構(gòu)建大數(shù)
23、據(jù)處理集群。與此同時(shí),Doug Cutting正在研究開源的網(wǎng)頁搜索引擎Nutch。當(dāng)Google的GFS和MapReduce論文發(fā)表后,引起了他的強(qiáng)烈共鳴。Doug開始著手實(shí)現(xiàn)這些Google系統(tǒng)。2006年,Yahoo雇用了Doug Cutting并迅速成為Hadoop項(xiàng)目最重要的支持者之一。Yahoo允許Doug和其他工程師們在受雇于Yahoo期間,致力于Hadoop的工作Hadoop誕生了4.4.3 Hadoop組成部分HDFS是一個(gè)可以存儲極大數(shù)據(jù)集的文件系統(tǒng),它是通過向外擴(kuò)展方式構(gòu)建的主機(jī)集群。它有著獨(dú)特的設(shè)計(jì)和性能特點(diǎn),特別是,HDFS以時(shí)延為代價(jià)對吞吐量進(jìn)行了優(yōu)化,并且通過副本
24、代替物理冗余達(dá)到了高可靠性。HDFSMapReduce是一個(gè)數(shù)據(jù)處理模式,它規(guī)范了數(shù)據(jù)在兩個(gè)處理階段(Map和Reduce)的輸入和輸出,并將其應(yīng)用于任意規(guī)模的大數(shù)據(jù)集。MapReduce與HDFS緊密結(jié)合,確保在任何情況下,MapReduce任務(wù)都能直接在存儲所需數(shù)據(jù)的HDFS節(jié)點(diǎn)上運(yùn)行。MapReduce作為一個(gè)頂級項(xiàng)目,Hadoop項(xiàng)目包含許多組件子項(xiàng)目,其中最主要的兩個(gè)子項(xiàng)目分別為Hadoop分布式文件系統(tǒng)(HDFS)和分布式并行計(jì)算框架MapReduce。這兩個(gè)子項(xiàng)目是對Google特有的GFS和MapReduce的直接實(shí)現(xiàn),它們是一對相互獨(dú)立而又互補(bǔ)的技術(shù)。4.4.4 HDFSHD
25、FS(Hadoop Distributed File System)是一個(gè)分布式文件系統(tǒng),HDFS提出了“移動計(jì)算能力比移動數(shù)據(jù)更廉價(jià)”的設(shè)計(jì)理念。HDFS是一種主/從模式的系統(tǒng)結(jié)構(gòu),主服務(wù)器,即圖中的命名節(jié)點(diǎn)(NameNode),管理文件系統(tǒng)命名空間和客戶端訪問,具體文件系統(tǒng)命名空間操作包括“打開”“關(guān)閉”“重命名”等,并負(fù)責(zé)數(shù)據(jù)塊到數(shù)據(jù)節(jié)點(diǎn)之間的映射。HDFS同時(shí)給應(yīng)用程序提供接口以保證處理過程盡量靠近數(shù)據(jù)的位置,減少中間數(shù)據(jù)傳輸?shù)拈_銷。HDFS的命名空間存放在命名節(jié)點(diǎn)上,為了保證訪問效率,命名節(jié)點(diǎn)在內(nèi)存中保存整個(gè)文件系統(tǒng)的命名空間和文件的塊映射圖。 HDFS提出了數(shù)據(jù)均衡方案,如果某個(gè)數(shù)
26、據(jù)節(jié)點(diǎn)上的空閑空間低于特定的臨界點(diǎn),那么就會啟動一個(gè)計(jì)劃自動地將數(shù)據(jù)從一個(gè)數(shù)據(jù)節(jié)點(diǎn)遷移到空閑的數(shù)據(jù)節(jié)點(diǎn)上。HDFS架構(gòu)4.4.5 MapReduceMapReduce是一個(gè)基于上述原理的處理模式,它實(shí)現(xiàn)了從源數(shù)據(jù)集到結(jié)果數(shù)據(jù)集的一系列轉(zhuǎn)換。在最簡單的情況下,作業(yè)的輸入數(shù)據(jù)作為map函數(shù)的輸入,所得到的臨時(shí)數(shù)據(jù)作為reduce函數(shù)的輸入。開發(fā)人員只需定義數(shù)據(jù)轉(zhuǎn)換形式,Hadoop的MapReduce作業(yè)負(fù)責(zé)并行地對集群中的數(shù)據(jù)實(shí)施所需轉(zhuǎn)換。盡管整體思想并不是新創(chuàng)建的,但Hadoop的一個(gè)主要貢獻(xiàn)在于它如何將這些想法變成一個(gè)精心設(shè)計(jì)的可用平臺。Hadoop平臺負(fù)責(zé)執(zhí)行數(shù)據(jù)處理的各個(gè)方面。在用戶定義
27、了任務(wù)的關(guān)鍵指標(biāo)后,其余事情都變成了系統(tǒng)的責(zé)任。更重要的是,從數(shù)據(jù)規(guī)模的角度來看,同一個(gè)MapReduce作業(yè)適用于存儲在任意規(guī)模集群上的任意大小的數(shù)據(jù)集。MapReduce計(jì)算框架4.4.6 MapReduce計(jì)算舉例一般來講,編寫MapReduce程序的步驟如下。(1)把問題轉(zhuǎn)化為MapReduce模型。(2)設(shè)置運(yùn)行的參數(shù)。(3)寫map類。(4)寫reduce類。假定有多個(gè)文件,我們需要統(tǒng)計(jì)每個(gè)單詞在這些文件中出現(xiàn)的次數(shù)。要完成這個(gè)計(jì)算的主要思想就是,把這些文件分成多個(gè)數(shù)據(jù)片,然后把每個(gè)數(shù)據(jù)片交給一個(gè)Map函數(shù)來統(tǒng)計(jì)該數(shù)據(jù)片上每個(gè)單詞出現(xiàn)的次數(shù),最后,再把每個(gè)Map函數(shù)統(tǒng)計(jì)的結(jié)果交給R
28、educe函數(shù)進(jìn)行合并,從而得到每個(gè)單詞在所有文件中出現(xiàn)的次數(shù)。如果有足夠多的Map函數(shù)并行進(jìn)行處理,那么就可以大大提高統(tǒng)計(jì)的速度。應(yīng)用開發(fā)者所需要完成的主要任務(wù)就是編寫Map和Reduce函數(shù)。例子:使用MapReduce統(tǒng)計(jì)單詞個(gè)數(shù)4.4.6 MapReduce計(jì)算舉例(1)編寫線性的Map和Reduce函數(shù)。1./map函數(shù)2./ key:字符串偏移量;value:一行字符串內(nèi)容 3.map(String key, String value) : 4. / 將字符串分割成單詞 5. words = SplitIntoTokens(value); 6. for each word w in
29、 words: 7. EmitIntermediate(w, 1); 8. 9./Reduce函數(shù) 10./ key:一個(gè)單詞;values:該單詞出現(xiàn)的次數(shù)列表 11.reduce(String key, Iterator values): 12. int result = 0; 13. for each v in values: 14. result += StringToInt(v); 15. Emit(key, IntToString(result); (2)按照一定的規(guī)則指定程序的輸入和輸出目錄,并提交到Hadoop集群中。首先,將要進(jìn)行統(tǒng)計(jì)單詞個(gè)數(shù)的文件拆分成多個(gè)數(shù)據(jù)片(split
30、s),將文件按行分割形成對,這個(gè)工作由MapReduce框架自動完成。然后將分割好的對交給用戶定義的map方法進(jìn)行處理,生成新的。4.4.6 MapReduce計(jì)算舉例(3)得到Map函數(shù)輸出的對后,Map框架會將它們按照key值進(jìn)行排序,并執(zhí)行Combine過程,將key值相同value值累加,得到Map的最終輸出結(jié)果。(4)然后,Map框架把各個(gè)Map函數(shù)的處理結(jié)果傳輸給Reduce函數(shù)。Reduce框架先對從Map框架接收到的數(shù)據(jù)進(jìn)行排序,再交給用戶自定義的reduce方法進(jìn)行處理,得到新的對,并作為WordCount的輸出結(jié)果。4.4.7 HDFS與MapReduce組合作為一個(gè)大規(guī)模數(shù)據(jù)存儲平臺,HDFS并非必須與MapReduce配套使用。將HDFS和MapReduce組合使用是最為常見的情
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 多層砌體結(jié)構(gòu)施工方案
- 室外污水施工方案
- 水泥砼道路施工方案
- 援助學(xué)習(xí)資料
- 2025年歷史社區(qū)面試試題及答案
- 2025年張店二模歷史試題及答案
- 6年級下冊文言文學(xué)弈
- 5一6年級讀書卡
- 低溫法蘭標(biāo)識
- cdga數(shù)據(jù)治理工程師教材
- LY/T 2499-2015野生動物飼養(yǎng)場總體設(shè)計(jì)規(guī)范
- 愛德華閥門檢修工藝(2)2
- GB/T 13701-1992單標(biāo)準(zhǔn)氣體質(zhì)譜法鈾同位素分析
- AMOLED技術(shù)寶典(十年OLED技術(shù)經(jīng)驗(yàn)總結(jié))
- 7S稽核查檢表-倉庫
- 小學(xué)科學(xué)《噪音的危害與防治》優(yōu)質(zhì)課件
- 病理學(xué)-第3章 局部血液循環(huán)障礙
- 湖北省黃石市基層診所醫(yī)療機(jī)構(gòu)衛(wèi)生院社區(qū)衛(wèi)生服務(wù)中心村衛(wèi)生室信息
- 打印版醫(yī)師執(zhí)業(yè)注冊健康體檢表(新版)
- 時(shí)代與變革-為人生而藝術(shù)
- 人教八年級下冊英語U5Do-you-remember-what-you-were-doing?課件
評論
0/150
提交評論