云計算導(dǎo)論:概念-架構(gòu)與應(yīng)用PPT第4章課件_第1頁
云計算導(dǎo)論:概念-架構(gòu)與應(yīng)用PPT第4章課件_第2頁
云計算導(dǎo)論:概念-架構(gòu)與應(yīng)用PPT第4章課件_第3頁
云計算導(dǎo)論:概念-架構(gòu)與應(yīng)用PPT第4章課件_第4頁
云計算導(dǎo)論:概念-架構(gòu)與應(yīng)用PPT第4章課件_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、云計算導(dǎo)論:概念 架構(gòu)與應(yīng)用第4章PaaS服務(wù)模式人民郵電出版社 21世紀高等院校云計算和大數(shù)據(jù)人才培養(yǎng)規(guī)劃教材核心系統(tǒng)概述Cloud FoundryHadoop4.14.2內(nèi)容導(dǎo)航CONTENTS 概述平臺層的功能以服務(wù)的形式提供給用戶,可以作為應(yīng)用開發(fā)測試和運行管理的環(huán)境,亦平臺即服務(wù)(Platform as a Service,PaaS)。平臺即服務(wù)是云計算平臺層的外在表現(xiàn)形式,是云計算平臺提供的一類重要的功能集合。在云計算的多層架構(gòu)中,需要一個層次來屏蔽下層物理設(shè)備的多樣性,又要支持上層應(yīng)用的多樣性。PaaS層即通過一系列的面向應(yīng)用需求的基本服務(wù)和功能來提供應(yīng)用運行管

2、理的基礎(chǔ),而它本身也屏蔽了基礎(chǔ)設(shè)施層的多樣性,可運行在多樣的基礎(chǔ)設(shè)施層之上。4.1.1 驅(qū)動力平臺即服務(wù)作為云計算中的一類重要服務(wù)類型,它的出現(xiàn)有其深刻的商業(yè)和技術(shù)背景。進入21世紀以后,基于Web應(yīng)用的電商平臺成為軟件開發(fā)的主流,企業(yè)必須尋求新的IT系統(tǒng)及應(yīng)用運作方式,以降低大量成本投入。平臺即服務(wù)給企業(yè)在這方面的需求帶來了高效的解決方案。在云計算的架構(gòu)中,基礎(chǔ)設(shè)施層通過基于共享和虛擬化的服務(wù)來提供計算能力、存儲能力和網(wǎng)絡(luò)能力。在云計算的大框架下,平臺即服務(wù)提供了進一步的抽象。通過對云應(yīng)用進行分類,總結(jié)相關(guān)實踐中的共性問題,抽象出特定的模式和解決方案。PaaS包括一系列的平臺軟件和基本服務(wù)。

3、PaaS的提供商在平臺軟件和基礎(chǔ)服務(wù)的實現(xiàn)上具有多樣性,各自針對用戶對平臺的一類或幾類特定需求和使用方式。根據(jù)所針對的應(yīng)用類型,PaaS在理念、客戶定位和實現(xiàn)方式上也會存在差異。通常的企業(yè)客戶維護著大量現(xiàn)存的應(yīng)用。企業(yè)可以考慮把這些應(yīng)用遷移到云計算平臺層上,或者保持維護現(xiàn)有應(yīng)用,而把新的應(yīng)用運行在云計算的平臺層上。PaaS技術(shù)的發(fā)展將會更加貼近客戶的多樣化需求。4.1.2 主流類型當前,PaaS上運行的應(yīng)用主要分為兩類:一類是Web服務(wù)類PaaS平臺架構(gòu)如圖所示。這一類應(yīng)用主要是通過瀏覽器訪問、采用請求響應(yīng)模式進行交互的應(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ù)進行分析處理,稱為數(shù)據(jù)分析類應(yīng)用。數(shù)據(jù)分析類應(yīng)用的主要要求包括強大的計算能力和存儲能力,對于實時性的要求不高,數(shù)據(jù)處理完畢后任務(wù)就結(jié)束運行了。 數(shù)據(jù)分析類PaaS平臺架構(gòu)隨著市場規(guī)模的擴大和市場細分的深化,PaaS的種類及提供PaaS的廠商將會不斷增加。4.1.3 功能角色 1共享的中間件平臺從架構(gòu)層次上來看,平臺層是為了有效支撐大量應(yīng)用實例的運行管理,它是一類應(yīng)用運行所需要的資源和服務(wù)集中起來并進行共享的中間件平臺。PaaS將傳統(tǒng)的靜態(tài)、獨享的中間件平臺轉(zhuǎn)

5、變?yōu)橐环N動態(tài)、共享的中間件平臺。每個應(yīng)用將在云平臺上統(tǒng)一進行管理和運行。平臺層既提高了資源的利用率,又通過對應(yīng)用和平臺進行概念和功能的分離進一步簡化了應(yīng)用和平臺的運營和管理,見右圖。PaaS將“共享”擴展到更大的范圍。與基礎(chǔ)設(shè)施層所共享的對象不同,PaaS所共享的對象是應(yīng)用運行所需的資源和基礎(chǔ)功能。PaaS作為擴展的中間件4.1.3 功能角色2集成的軟件和服務(wù)平臺從功能特征的角度來看,平臺層整合各種不同的軟硬件資源向應(yīng)用提供一致而統(tǒng)一的資源和功能。如圖所示,平臺即服務(wù)可能建立在多個基礎(chǔ)設(shè)施服務(wù)之上,需要對應(yīng)用提供一個一致的、單一的基礎(chǔ)設(shè)施視圖。平臺層除了提供Web服務(wù)器、應(yīng)用服務(wù)器、消息服務(wù)器

6、等傳統(tǒng)的中間件以外,還需要提供其他相關(guān)的管理支撐服務(wù),如應(yīng)用部署、應(yīng)用性能管理、使用計量和計費等。另外,云應(yīng)用本身可能會集成來自不同云服務(wù)提供商所提供的功能或服務(wù),這些需要平臺層提供相應(yīng)的支持。PaaS作為集成的軟件和服務(wù)平臺4.1.3 功能角色3虛擬的應(yīng)用平臺從使用模式上來看,作為應(yīng)用運行管理的環(huán)境,PaaS模糊了物理資源的限制,在應(yīng)用看來是一個按需索取、無限可擴的虛擬平臺,如下圖所示。PaaS作為云應(yīng)用的運行環(huán)境,云應(yīng)用通過PaaS所提供的編程接口(API)按需獲取運行所需要的各種(虛擬的)資源和能力??傊?,PaaS針對的是有效并自動管理大量應(yīng)用的需求。PaaS的功能和結(jié)構(gòu)設(shè)計要滿足這樣的

7、需求。PaaS作為虛擬的應(yīng)用平臺概述Cloud FoundryHadoop4.1內(nèi)容導(dǎo)航CONTENTS4.34.4核心系統(tǒng)4.24.2 核心系統(tǒng)一個平臺一般來講只能對某類應(yīng)用進行高效、方便的支持。在當前的IT實踐中,存在大量不同類型的應(yīng)用,因此,從用戶的觀點來看,PaaS與PaaS之間也存在著巨大的不同。然而,在實現(xiàn)PaaS的過程中,我們也會發(fā)現(xiàn),PaaS作為一個系統(tǒng),其中的功能和模塊大致分為兩類,首先是PaaS的核心系統(tǒng),包含了PaaS的一系列本質(zhì)特征,即使是在不同的PaaS中,也會有這些特征的實現(xiàn);其次是PaaS的擴展系統(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層的基本目的是為了進一步簡化大量應(yīng)用的開發(fā)、部署和運行管理。假設(shè)用戶A和用戶B都需要CRM的應(yīng)用,用戶A需要很高的數(shù)據(jù)可用性,而用戶B則不太關(guān)心這個問題。開發(fā)人員只需要進行一次開發(fā)就能滿足這兩個企業(yè)的功能性需求,而應(yīng)用管理人員則只需要在部署的時候根據(jù)業(yè)務(wù)的需求選擇配置策略,云平臺會自動為它們產(chǎn)生不同的部署和配置。PaaS層在傳統(tǒng)的功能性和非功能性分離的基礎(chǔ)上,把非功能性的需求實現(xiàn)以服務(wù)的方式提交給應(yīng)用開發(fā)者使用,并且通過利用IaaS層的功能可以實現(xiàn)應(yīng)用資源自動按需供給。所以

9、,PaaS層使得應(yīng)用的開發(fā)更加簡單,應(yīng)用的運行更為自動化。PaaS平臺實現(xiàn)的非功能性需求4.2.2 自動資源獲取和應(yīng)用激活PaaS層的一個基本特點是資源分配和應(yīng)用激活的自動化操作。PaaS層可以建立在IaaS層之上,通過調(diào)用IaaS層的功能和接口獲得相應(yīng)的資源并分配給相應(yīng)的應(yīng)用,也可以直接實現(xiàn)基礎(chǔ)設(shè)施管理的功能,而無須抽象出單獨的IaaS層。提交給PaaS層的應(yīng)用分為功能性模塊和非功能性策略。PaaS層首先根據(jù)應(yīng)用的這兩方面的需求計算出支持該應(yīng)用所需要的資源類型、配置模式和相應(yīng)的數(shù)量。當為應(yīng)用配置好運行所需要的各類資源之后,PaaS層需要激活應(yīng)用,讓應(yīng)用確實運行起來并為其提供正常運行應(yīng)有的功能

10、。在應(yīng)用的部署過程中,可能涉及應(yīng)用模型沒有指定但實例化的時候必須存在的功能模塊。除了解析并實現(xiàn)資源之間的依賴關(guān)系外,在應(yīng)用能夠正式運行之前,還需要對資源進行一系列的配置和初始化工作。4.2.3 自動的應(yīng)用運行管理(1)PaaS則提供了應(yīng)用運行環(huán)境和應(yīng)用自身的分離;應(yīng)用運行所需的資源、基礎(chǔ)服務(wù)和管理操作都可以交由PaaS平臺來負責(zé),甚至通過一系列技術(shù)實現(xiàn)自動化操作。在PaaS平臺上,企業(yè)僅需關(guān)心應(yīng)用的功能,監(jiān)控應(yīng)用的運行是否達到要求,而無須關(guān)心如何準備好各種資源和條件來使其正常運行,后者由PaaS平臺來負責(zé)。(2)為了實現(xiàn)以應(yīng)用為中心的管理模式,PaaS展現(xiàn)給用戶的是以應(yīng)用為中心的邏輯視圖,即展

11、示應(yīng)用邏輯層次上的功能模塊,以及通過屬性和策略所表達的非功能性約束。(3)除了向應(yīng)用管理人員提供應(yīng)用的邏輯視圖,PaaS還通過在邏輯視圖上加載適當?shù)墓芾聿僮鹘涌趶亩纬梢恢碌募晒芾硪晥D。集成的管理視圖既展示了應(yīng)用的運行信息,又展示了管理人員可以使用的管理操作,使得以應(yīng)用為中心的管理更為直觀而簡化。(4)根據(jù)應(yīng)用的運行動態(tài),PaaS可以實時調(diào)整提供給應(yīng)用的各類資源。4.2.4 平臺級優(yōu)化(1)在PaaS層,優(yōu)化在兩個層次上進行:在應(yīng)用層次,針對應(yīng)用的性能和配置策略,PaaS動態(tài)調(diào)整應(yīng)用所使用的資源,在保證達到應(yīng)用要求的前提下盡量提高資源的使用率,降低應(yīng)用的運行費用;在PaaS平臺層次上,在保證

12、各個應(yīng)用的運行要求下,PaaS通過資源的共享和復(fù)用從而降低平臺的運行開銷,提高運行效率。(2)將應(yīng)用運行在PaaS平臺上,應(yīng)用的所有者不再擁有單獨的軟硬件平臺,針對軟硬件平臺的優(yōu)化工作也需要由PaaS來進行。同時,PaaS平臺執(zhí)行優(yōu)化工作時,也需要調(diào)用所依賴的層次,如IaaS層的功能和服務(wù)來完成。PaaS平臺可以根據(jù)應(yīng)用的策略及運行情況來自動進行跨層次(PaaS層與IaaS層)的優(yōu)化和調(diào)整。(3) PaaS平臺上運行著大量的應(yīng)用,由于規(guī)模和自動化的要求,其上的優(yōu)化也將面臨著巨大的挑戰(zhàn)。這是未來大規(guī)模分布式系統(tǒng)研究和實踐的重要方面。概述Hadoop4.1內(nèi)容導(dǎo)航CONTENTS4.4核心系統(tǒng)4.

13、2Cloud Foundry 簡介Cloud Foundry是VMware推出的業(yè)界第一個開源PaaS云平臺,它支持多種框架、語言、運行時環(huán)境、云平臺及應(yīng)用服務(wù),使開發(fā)人員能夠在幾秒鐘內(nèi)進行應(yīng)用程序的部署和擴展,無需擔心任何基礎(chǔ)架構(gòu)的問題。同時,它本身是一個基于Ruby on Rails的由多個相對獨立的子系統(tǒng)通過消息機制組成的分布式系統(tǒng),使平臺在各層級都可水平擴展,既能在大型數(shù)據(jù)中心里運行,也能在一臺計算機中運行,二者使用相同的代碼庫。作為新一代云應(yīng)用平臺,Cloud Foundry專為私有云計算環(huán)境、企業(yè)級數(shù)據(jù)中心和公有云服務(wù)提供商所打造。4.3.2 特點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ù)相分開,通過在部署時將應(yīng)用和應(yīng)用依賴的服務(wù)相綁定的機制使應(yīng)用和應(yīng)用服務(wù)相對獨立,增加

15、了在PaaS平臺上部署應(yīng)用的靈活性。2應(yīng)用服務(wù)的選擇性Cloud Foundry PaaS平臺4.3.3 邏輯結(jié)構(gòu)Cloud Foundry是由相對獨立的多個模塊構(gòu)成的分布式系統(tǒng),每個模塊單獨存在和運行,各模塊之間通過消息機制進行通信。Cloud Foundry各模塊本身是基于Ruby語言開發(fā)的,每個部分可以認為拿來即可運行,不存在編譯等過程。Cloud Foundry云平臺是完全模塊化的分布式系統(tǒng),各個模塊之間是相互獨立的,通過消息總線進行相互連接和通信,這種結(jié)構(gòu)不僅使系統(tǒng)各模塊之間的耦合度降低,而且使系統(tǒng)功能容易擴充。 Cloud Foundry邏輯結(jié)構(gòu)4.3.3 邏輯結(jié)構(gòu)Router (

16、路由器)Authentication (認證組件)Cloud Controller(云控制器)Health Manager (健康管理器)Application Execution(應(yīng)用執(zhí)行)Service Brokers(服務(wù)代理)Message Bus(消息總線)01020304050607Page1234567Cloud Foundry云平臺的各種應(yīng)用服務(wù)由Services模塊提供,可以靈活擴展。Metering & Logging (計量和日志)8084.3.4 整體架構(gòu)從圖中可以看到,Cloud Foundry平臺主要由Router、Cloud Controller、Health M

17、anager、DEA、NFS、NATS、Cloud Controller Database以及Service等模塊組成。這些模塊協(xié)同合作,通過特定的消息傳輸機制和API接口進行通信,就可以使整個云平臺正常運行。由于在集群環(huán)境下每個模塊都有多個部署節(jié)點,從而保證了云平臺的可靠性和彈性動態(tài)擴展的需求,使得應(yīng)用程序可以穩(wěn)定可靠地運行在Cloud Foundry云平臺上。Cloud Foundry包括UAA(用戶賬戶及授權(quán))和登錄服務(wù)器。UAA就是Cloud Foundry的身份管理服務(wù)。登錄服務(wù)器為UAA執(zhí)行驗證任務(wù),并充當后端服務(wù)。 Cloud Foundry云平臺整體架構(gòu)4.3.5 部署模式Cl

18、oud Foundry是完全模塊化的設(shè)計,模塊之間不共享狀態(tài)信息,每個模塊可以單獨存在、運轉(zhuǎn)。所以,Cloud Foundry安裝方式可以靈活多樣,既可以單節(jié)點安裝,也可以多節(jié)點安裝。在單節(jié)點安裝模式下,Cloud Foundry所有的模塊都安裝運行在同一個節(jié)點上。這種模式安裝簡單,所需資源少,但是處理能力有限,所以,主要用于學(xué)習(xí)和測試平臺的功能和工作原理。單節(jié)點安裝模式Cloud Foundry整個平臺組件節(jié)點眾多,有些組件節(jié)點適宜做橫向擴展,有些組件節(jié)點適宜做縱向擴展,這需要根據(jù)節(jié)點的具體職責(zé)進行分析。同一個組件都是以集群的方式進行部署。多節(jié)點安裝模式4.3.5 部署模式路由集群(Rout

19、er Cluster):路由節(jié)點是Cloud Foundry平臺對外提供訪問的唯一接口??刂乒?jié)點集群(Cloud Countroller Cluster):控制節(jié)點是整個Cloud Foundry平臺的核心節(jié)點。健康管理集群(Health Manager Cluster):負責(zé)應(yīng)用狀態(tài)監(jiān)控及管理。數(shù)據(jù)中心:數(shù)據(jù)中心由三部分內(nèi)容組成:NFS Server、CCDB、UAADB。身份認證服務(wù)集群(User Authentication Authorization Cluster):為平臺提供身份認證及授權(quán)服務(wù)。DEA集群(Droplet Execution Agency Cluster):DEA節(jié)

20、點是應(yīng)用的最終運行環(huán)境。7服務(wù)中心(Service Cluster):服務(wù)中心是對所有第三方服務(wù)的一個總稱,包括Redis、MySql、Memcached、MongoDB等。NATS:NATS是消息組件,該節(jié)點發(fā)生故障的情況下,會影響其他組件中通過NATS消息總線傳輸數(shù)據(jù),但是不影響應(yīng)用的所有運行環(huán)境。打包集群(Stager Cluster):用戶上傳代碼到Cloud Foundry平臺后,Cloud Controller需要將這部分代碼結(jié)合平臺環(huán)境打包成DEA可以運行的格式??蛇x部署:Loggregator是Cloud Foundry中用于對應(yīng)用日志收集的組件,并可以對接其他的日志組件。概述

21、4.1內(nèi)容導(dǎo)航CONTENTS核心系統(tǒng)4.2Cloud Foundry4.3Hadoop 概述對數(shù)據(jù)的存儲、處理存在困難,并不是個新問題。近年來,數(shù)據(jù)的容量、處理的速度、數(shù)據(jù)的種類正在變化,促進了不少算法的發(fā)展。無論是什么樣的解決方案,背后的推薦算法都必須處理大量數(shù)據(jù),對問題空間越了解就越容易得出更好的結(jié)論。Hadoop可以為大數(shù)據(jù)應(yīng)用提供一個可編程的、經(jīng)濟的、可伸縮的平臺。這個分布式系統(tǒng)由分布式文件存儲系統(tǒng)(HDFS)以及計算框架(MapReduce)組成。Hadoop是一個開源項目,能為大量數(shù)據(jù)集提供批量數(shù)據(jù)處理能力。Hadoop的設(shè)計可以容忍軟硬件的不可靠,并且為應(yīng)用開發(fā)

22、者提供一個便于開發(fā)分布式應(yīng)用的平臺。Hadoop使用沒有特殊硬件或特殊網(wǎng)絡(luò)基礎(chǔ)設(shè)施的普通的服務(wù)器群來形成一個邏輯上可存儲大量數(shù)據(jù)、進行并發(fā)計算的集群,這個集群可以被很多團體和個人共享。4.4.2 Hadoop簡史 Hadoop基于Google的兩篇論文發(fā)展而來。一篇發(fā)表于2003年的論文描述了一個用來存儲海量數(shù)據(jù)、可編程、可伸縮的分布式文件系統(tǒng),該文件系統(tǒng)被稱為Google文件系統(tǒng),或簡稱GFS。2004年,另外一篇名為“MapReduce:大集群中一種簡單的數(shù)據(jù)處理框架”的論文發(fā)表了,該論文定義了一種編程模型及其相關(guān)的框架,GFS和MapReduce相互協(xié)同,可在相對便宜的商用機器上構(gòu)建大數(shù)

23、據(jù)處理集群。與此同時,Doug Cutting正在研究開源的網(wǎng)頁搜索引擎Nutch。當Google的GFS和MapReduce論文發(fā)表后,引起了他的強烈共鳴。Doug開始著手實現(xiàn)這些Google系統(tǒng)。2006年,Yahoo雇用了Doug Cutting并迅速成為Hadoop項目最重要的支持者之一。Yahoo允許Doug和其他工程師們在受雇于Yahoo期間,致力于Hadoop的工作Hadoop誕生了4.4.3 Hadoop組成部分HDFS是一個可以存儲極大數(shù)據(jù)集的文件系統(tǒng),它是通過向外擴展方式構(gòu)建的主機集群。它有著獨特的設(shè)計和性能特點,特別是,HDFS以時延為代價對吞吐量進行了優(yōu)化,并且通過副本

24、代替物理冗余達到了高可靠性。HDFSMapReduce是一個數(shù)據(jù)處理模式,它規(guī)范了數(shù)據(jù)在兩個處理階段(Map和Reduce)的輸入和輸出,并將其應(yīng)用于任意規(guī)模的大數(shù)據(jù)集。MapReduce與HDFS緊密結(jié)合,確保在任何情況下,MapReduce任務(wù)都能直接在存儲所需數(shù)據(jù)的HDFS節(jié)點上運行。MapReduce作為一個頂級項目,Hadoop項目包含許多組件子項目,其中最主要的兩個子項目分別為Hadoop分布式文件系統(tǒng)(HDFS)和分布式并行計算框架MapReduce。這兩個子項目是對Google特有的GFS和MapReduce的直接實現(xiàn),它們是一對相互獨立而又互補的技術(shù)。4.4.4 HDFSHD

25、FS(Hadoop Distributed File System)是一個分布式文件系統(tǒng),HDFS提出了“移動計算能力比移動數(shù)據(jù)更廉價”的設(shè)計理念。HDFS是一種主/從模式的系統(tǒng)結(jié)構(gòu),主服務(wù)器,即圖中的命名節(jié)點(NameNode),管理文件系統(tǒng)命名空間和客戶端訪問,具體文件系統(tǒng)命名空間操作包括“打開”“關(guān)閉”“重命名”等,并負責(zé)數(shù)據(jù)塊到數(shù)據(jù)節(jié)點之間的映射。HDFS同時給應(yīng)用程序提供接口以保證處理過程盡量靠近數(shù)據(jù)的位置,減少中間數(shù)據(jù)傳輸?shù)拈_銷。HDFS的命名空間存放在命名節(jié)點上,為了保證訪問效率,命名節(jié)點在內(nèi)存中保存整個文件系統(tǒng)的命名空間和文件的塊映射圖。 HDFS提出了數(shù)據(jù)均衡方案,如果某個數(shù)

26、據(jù)節(jié)點上的空閑空間低于特定的臨界點,那么就會啟動一個計劃自動地將數(shù)據(jù)從一個數(shù)據(jù)節(jié)點遷移到空閑的數(shù)據(jù)節(jié)點上。HDFS架構(gòu)4.4.5 MapReduceMapReduce是一個基于上述原理的處理模式,它實現(xiàn)了從源數(shù)據(jù)集到結(jié)果數(shù)據(jù)集的一系列轉(zhuǎn)換。在最簡單的情況下,作業(yè)的輸入數(shù)據(jù)作為map函數(shù)的輸入,所得到的臨時數(shù)據(jù)作為reduce函數(shù)的輸入。開發(fā)人員只需定義數(shù)據(jù)轉(zhuǎn)換形式,Hadoop的MapReduce作業(yè)負責(zé)并行地對集群中的數(shù)據(jù)實施所需轉(zhuǎn)換。盡管整體思想并不是新創(chuàng)建的,但Hadoop的一個主要貢獻在于它如何將這些想法變成一個精心設(shè)計的可用平臺。Hadoop平臺負責(zé)執(zhí)行數(shù)據(jù)處理的各個方面。在用戶定義

27、了任務(wù)的關(guān)鍵指標后,其余事情都變成了系統(tǒng)的責(zé)任。更重要的是,從數(shù)據(jù)規(guī)模的角度來看,同一個MapReduce作業(yè)適用于存儲在任意規(guī)模集群上的任意大小的數(shù)據(jù)集。MapReduce計算框架4.4.6 MapReduce計算舉例一般來講,編寫MapReduce程序的步驟如下。(1)把問題轉(zhuǎn)化為MapReduce模型。(2)設(shè)置運行的參數(shù)。(3)寫map類。(4)寫reduce類。假定有多個文件,我們需要統(tǒng)計每個單詞在這些文件中出現(xiàn)的次數(shù)。要完成這個計算的主要思想就是,把這些文件分成多個數(shù)據(jù)片,然后把每個數(shù)據(jù)片交給一個Map函數(shù)來統(tǒng)計該數(shù)據(jù)片上每個單詞出現(xiàn)的次數(shù),最后,再把每個Map函數(shù)統(tǒng)計的結(jié)果交給R

28、educe函數(shù)進行合并,從而得到每個單詞在所有文件中出現(xiàn)的次數(shù)。如果有足夠多的Map函數(shù)并行進行處理,那么就可以大大提高統(tǒng)計的速度。應(yīng)用開發(fā)者所需要完成的主要任務(wù)就是編寫Map和Reduce函數(shù)。例子:使用MapReduce統(tǒng)計單詞個數(shù)4.4.6 MapReduce計算舉例(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:一個單詞;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集群中。首先,將要進行統(tǒng)計單詞個數(shù)的文件拆分成多個數(shù)據(jù)片(split

30、s),將文件按行分割形成對,這個工作由MapReduce框架自動完成。然后將分割好的對交給用戶定義的map方法進行處理,生成新的。4.4.6 MapReduce計算舉例(3)得到Map函數(shù)輸出的對后,Map框架會將它們按照key值進行排序,并執(zhí)行Combine過程,將key值相同value值累加,得到Map的最終輸出結(jié)果。(4)然后,Map框架把各個Map函數(shù)的處理結(jié)果傳輸給Reduce函數(shù)。Reduce框架先對從Map框架接收到的數(shù)據(jù)進行排序,再交給用戶自定義的reduce方法進行處理,得到新的對,并作為WordCount的輸出結(jié)果。4.4.7 HDFS與MapReduce組合作為一個大規(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論