電子科技大學2017年-林迪-軟件體系結(jié)構(gòu)-復習整理_第1頁
電子科技大學2017年-林迪-軟件體系結(jié)構(gòu)-復習整理_第2頁
電子科技大學2017年-林迪-軟件體系結(jié)構(gòu)-復習整理_第3頁
電子科技大學2017年-林迪-軟件體系結(jié)構(gòu)-復習整理_第4頁
電子科技大學2017年-林迪-軟件體系結(jié)構(gòu)-復習整理_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄1、構(gòu)件和連接件 32、軟件體系結(jié)構(gòu)生命周期模型 43、軟件重用技術(shù)在軟件開發(fā)中的作用? 44、軟件體系結(jié)構(gòu)的生命周期模型和軟件生命周期模型有什么關(guān)系? (補充) 55、CORBA 架構(gòu)的技術(shù)規(guī)范 66、C2 概述 77、云服務三個層次 86、現(xiàn)有 IT 系統(tǒng)的主要問題 97、采用云計算技術(shù)后新系統(tǒng)的架構(gòu)初探 138、大數(shù)據(jù) 4V 特征和什么是大數(shù)據(jù)? 139、離線批處理模型、內(nèi)存計算模型、交互計算模型的區(qū)別 1410 、大數(shù)據(jù)總結(jié) 1411 、Hadoop 原理: HDFS 及 MapReduce 1512 、設計 SOA 架構(gòu)圖 1513 、HDFS 處理過程 1614 、MapRed

2、uce 處理過程 1815 、MapReduce 分布式處理技術(shù) - 實現(xiàn)機制 1916 、MapReduce 分布式處理技術(shù) - 實例 -單詞統(tǒng)計WordCount . 2017 、MapReduce 分布式處理技術(shù) -實例 -文檔倒排索引算法 2318 、區(qū)域系統(tǒng)架構(gòu)擴展方案 2419 、中間件的優(yōu)點 24、架構(gòu)設計的基本準則 2521、構(gòu)件和連接件軟件體系結(jié)構(gòu)的核心模型由五種元素組成:構(gòu)件、連接件、配置、端口、角色。其中,構(gòu)件、連接件和配置是最基本的元素。戰(zhàn)小構(gòu)件刨連按件的衣示軟件之間的交直3衣總輸件棚外榔環(huán)境 的交kA(定艾r該連接件決斥的 仝互的裁與者構(gòu)件:具有某種功能的可重用軟件單

3、元,表示系統(tǒng)中主要的計算和數(shù)據(jù)存儲。構(gòu)件只能通過 接口與外部交互,接口由一組端口組成,每個端口表示了構(gòu)件與外部環(huán)境的交互點。 通過不 同的端口類型,一個構(gòu)件可以提供多重接口。(每個構(gòu)件都有一組輸入和輸出,構(gòu)件讀輸入的數(shù)據(jù)流,經(jīng)過內(nèi)部處理,然后產(chǎn)生輸出 數(shù)據(jù)流。這個過程通常通過對輸入流的變換及增量計算來完成,所以在輸入被完全消費之前,輸出便產(chǎn)生了。)構(gòu)件的定義:構(gòu)件是指語義完整、語法正確和有可重用價值的單位軟件,是軟件重用過程中可以明確辨識的系統(tǒng);結(jié)構(gòu)上,它是語義描述、通訊接口和實現(xiàn)代碼的復合體。連接件:表示了構(gòu)件間的交互;連接件也有接口,由一組角色組成,每個角色定義了該連接 件表示的交互的參與

4、者。2、軟件體系結(jié)構(gòu)生命周期模型1、軟件體系結(jié)構(gòu)的非形式化描述;2、軟件體系結(jié)構(gòu)規(guī)范描述和分析;3、軟件體系結(jié)構(gòu)的求精及其驗證;4、軟件體系結(jié)構(gòu)的實施;5、 軟件體系結(jié)構(gòu)的演化和擴展;6、軟件體系結(jié)構(gòu)提供、評價和度量7、軟件體系結(jié)構(gòu)的終結(jié)3、軟件重用技術(shù)在軟件開發(fā)中的作用?軟件重用可以分為:代碼重用,設計結(jié)果重用,分析結(jié)果的重用,測試信息的重用,體系結(jié) 構(gòu)的重用。提高軟件生產(chǎn)率,降低軟件開發(fā)的成本;提高軟件質(zhì)量; 互操作性好;支持原型開發(fā); 提高了軟件的可維護性、可擴展性、可理解性。 舉例: 1976 年 IBM 、HP 、NEC 、 AT&T 的調(diào)查顯示: 基于軟件重用的軟件產(chǎn)品線的

5、發(fā)展使開發(fā)時間縮短了1.5 2 倍,維護成本降低了 2-5 倍,軟件質(zhì)量提高了 510 倍,開發(fā)成本降低了 12% 15%4 、軟件體系結(jié)構(gòu)的生命周期模型和軟件生命周期模型有什么關(guān)系? (補充)軟件生命周期 同任何事物一樣 ,一個軟件產(chǎn)品或軟件系統(tǒng)也要經(jīng)歷孕育、 誕生、成長、成熟、 衰亡等階段,一般稱為軟件生存周期(軟件生命周期) 。軟件生命周期 (SDLC ,軟件生存周期 )是軟件的產(chǎn)生直到報廢的生命周期,周期內(nèi)有問題定 義、可行性分析、總體描述、系統(tǒng)設計、編碼、調(diào)試和測試、驗收與運行、維護升級到廢棄 等階段,這種按時間分程的思想方法是軟件工程中的一種思想原則, 即按部就班、 逐步推進, 每

6、個階段都要有定義、工作、審查、形成文檔以供交流或備查,以提高軟件的質(zhì)量。但隨著 新的面向?qū)ο蟮脑O計方法和技術(shù)的成熟,軟件生命周期設計方法的指導意義正在逐步減 少。 軟件生命周期模型 通俗說,就是軟件開發(fā)過程中所遵循的模式。它運用了結(jié)構(gòu)化的設 計思想; 具有嚴格的順序性和依賴性, 必須等待前一階段的工作完成之后, 才能開始后一階 段的工作,并且其一階段的輸出就是后一階段的輸入。具體有: 瀑布( waterfall )模型、 原型( prototyping )模型、增量( incremental )模型、螺旋( spiral )模型、快速應用開 發(fā)(RAD )模型、漸進式模型等。軟件體系結(jié)構(gòu)生命周

7、期模型是對軟件生命周期模型的重用, 是軟件生命周期模型的某一階段 的細化。 它也繼承了結(jié)構(gòu)化設計思想, 運用了面向過程的設計方法。 它也具有順序性和依賴 性。不過它還添加了一些跳轉(zhuǎn), 當某一階段比較細致或軟件的結(jié)構(gòu)比較簡單時可以跳過某一體系結(jié)構(gòu)的規(guī)范描階段而經(jīng)如下一階段。 軟件體系結(jié)構(gòu)生命周期模型包括非形式化的描述; 述和分析;體系結(jié)構(gòu)的求精及其驗證;軟件體系結(jié)構(gòu)的事實;軟件體系結(jié)構(gòu)的演化和擴展; 軟件體系結(jié)構(gòu)的提供、評價和度量;軟件體系結(jié)構(gòu)的終結(jié)。5、CORBA 架構(gòu)的技術(shù)規(guī)范 接口定義語言( IDL )CORBA 利用 IDL 統(tǒng)一地描述服務器對象(向調(diào)用者提供服務的對象)的接口。 IDL

8、 本 身也是面向?qū)ο蟮摹?它雖然不是編程語言,但它為客戶對象(發(fā)出服務請求的對象)提供了 語言的獨立性,因為客戶對象只需了解服務器對象的 IDL 接口,不必知道其編程語言。 IDL 語言是 CORBA 規(guī)范中定義的一種中性語言, 它用來描述對象的接口, 而不涉及對象的 具體實現(xiàn)。在 CORBA 中定義了 IDL 語言到 C、C+ 、 SmallTalk 和 Java 語言的映射。 接口池( IR )CORBA 的接口池包括了分布計算環(huán)境中所有可用的服務器對象的接口表示。 它使動態(tài) 搜索可用服務器的接口、動態(tài)構(gòu)造請求及參數(shù)成為可能。 動態(tài)調(diào)用接口( DII )CORBA 的動態(tài)調(diào)用接口提供了一些

9、標準函數(shù)以供客戶對象動態(tài)創(chuàng)建請求、 動態(tài)構(gòu)造請 求參數(shù)。 客戶對象將動態(tài)調(diào)用接口與接口池配合使用可實現(xiàn)服務器對象接口的動態(tài)搜索、 請 求及參數(shù)的動態(tài)構(gòu)造與動態(tài)發(fā)送。當然,只要客戶對象在編譯之前能夠確定服務器對象的 IDL 接口, CORBA 也允許客戶對象使用靜態(tài)調(diào)用機制。顯然,靜態(tài)機制的靈活性雖不及動 態(tài)機制,但執(zhí)行效率卻勝過動態(tài)機制。 對象適配器( OA )在 CORBA 中,對象適配器用于屏蔽 ORB 內(nèi)核的實現(xiàn)細節(jié), 為服務器對象的實現(xiàn)者提供抽象接口,以便他們使用 ORB 內(nèi)部的某些功能。這些功能包括服務器對象的登錄與激活、客 戶請求的認證等。6、C2 概述 C2 和其提供的設計環(huán)境

10、( Argo )支持采用基于時間的風格來描述用戶界面系統(tǒng), 并支持 使用可替換、可重用的構(gòu)件開發(fā) GUI 的體系結(jié)構(gòu)。在C2中,連接件負責構(gòu)件之間消息的傳遞,而構(gòu)件維持狀態(tài)、執(zhí)行操作并通過兩個名字分別為“ top ”和“ bottom ”的端口和其它的構(gòu)件交換信息。 每個接口包含一種可發(fā)送的消息和一組可接收的消息。構(gòu)件之間的消息要么是請求其它 構(gòu)件執(zhí)行某個操作的請求消息, 要么是通知其他構(gòu)件自身執(zhí)行了某個操作或狀態(tài)發(fā)生改變的 通知消息。 構(gòu)件之間的消息交換不能直接進行,而只能通過連接件來完成。每個構(gòu)件接口最多只能 和一個連接件相連,而連接件可以和任意數(shù)目的構(gòu)件或連接件相連。 請求消息只能向上層

11、傳送而通知消息只能向下層傳送。 通知消息的傳遞只對應于構(gòu)件內(nèi)部的操作,而和接收消息的構(gòu)件的需求無關(guān)。C2 對構(gòu)件和連接件的實現(xiàn)語言、實現(xiàn)構(gòu)件的線程控制、構(gòu)件的部署以及連接件使用的通 訊協(xié)議等都不加限制。77、云服務三個層次根據(jù)捉供的胳等類型*猗兒和 訓(服務附為二類應用系鬢矗用屮臺Softuvari es a Service用戶通過廂準的訓曲瀏覽器來使用Inter ntn上的軟件口用戶不必購買欽件,只需按需嘏用欽件與型應用:Lotus Live. SSJ(PaaSL (SaaS)Infrastructure as a Service以服勞的形式捉供虛擬碩件資源,如理 擬主機/存儲/網(wǎng)絡/生全等

12、資源0用于無需也買服務塞、兩絡i殳備、存儲 設備、只需謹過旦聯(lián)期租備即可搭建自 己的應用系統(tǒng)典型應用:Arnd?or Wph眾務IOCPlatform 酩 a Service捋供應用服務弓I擎,如互聯(lián)網(wǎng)應用編 程授口庵行平臺等.用戶基于該應用服務刖辛,可以構(gòu)建 該類應用,典型應用:Google AppEngine, IBM PijreScale Application Systui 口 SAErsgrisui計算包括三個層次的服務:基礎架構(gòu)即服務(laaS),平臺即服務(PaaS)和軟件即服務(SaaS )。laaS通過互聯(lián)網(wǎng)提供數(shù)據(jù)中心、基礎架構(gòu)硬件和軟件資源,還可以提供服務器、操作系統(tǒng)、磁

13、盤存儲、數(shù)據(jù)庫和/或信息資源。Paas則提供了基礎架構(gòu),軟件開發(fā)者可以在這個基礎架構(gòu)之上建設新的應用,或者擴 展已有的應用,同時卻不必購買開發(fā)、質(zhì)量控制或生產(chǎn)服務器。SaaS是最為成熟、最出名,也是得到最廣泛應用的一種云計算。它是一種軟件分布模 式,在這種模式下,應用軟件安裝在廠商或者服務供應商那里,用戶可以通過某個網(wǎng)絡來使用這些軟件,通常使用的網(wǎng)絡是互聯(lián)網(wǎng)。laaS、PaaS和SaaS之間的關(guān)系可從兩個角度來看:從用戶體驗角度而言,它們之間的關(guān)系是獨立的,因為它們面對不同類型的用戶;而從技術(shù)角度而言,它們并不是簡單的繼承關(guān)系(SaaS基于PaaS,而PaaS基于laaS),因為首先 SaaS

14、可以是基于 PaaS 或者直接部署于laaS之上,其次PaaS可以構(gòu)建于laaS之上,也可以直接構(gòu)建在物理資源之上。IaaS 、PaaS 和 SaaS 這三種模式都采用了外包的方式,以減輕企業(yè)負擔,降低管理、 維護服務器硬件、 網(wǎng)絡硬件、 基礎架構(gòu)軟件和應用軟件的人力成本。 從更高的層次上看, 它們都試圖去解決同一個商業(yè)問題用盡可能少甚至是為零的資本支出,獲得功能、 擴展能力、服務和商業(yè)價值。在云計算實施的前期或者在很多場景的時候; 主要關(guān)注點在于應用的可靠運行、 快速開發(fā)和 部署、 機器資源的充分利用、 以及方便的運維等問題; 對于這個時候我們應該定位于主要采 用 Iaas 云計算架構(gòu)(即很

15、依賴于硬件虛擬化技術(shù))和部分采用 Pass 云計算架構(gòu)來解決 .1. 重點采用 Iaas 云計算架構(gòu)中的硬件虛擬化技術(shù)等技術(shù)(服務器虛擬化、網(wǎng)絡虛擬 化、存儲虛擬化)以提高硬件的利用率、降低機房占用空間和功耗。2. 快速和方便地給應用提供應用所需要的服務器資源(VM) 、網(wǎng)絡資源、存儲資源。3. 快速和方便地給應用提供應用所需要依賴的平臺軟件資源,例如數(shù)據(jù)庫系統(tǒng) (DB2) 、J2EE應用服務器(WAS)、WEB服務器(IHS)等。4. 快速和方便地自動地把應用部署到相應的硬件環(huán)境中。5. 硬件虛擬化技術(shù)(例如 VMWare , PowerVM,xen 等)的能力需要在這體現(xiàn)。1. 對于在這種

16、情況下,每臺服務器所具有的CPU core 數(shù)目和內(nèi)存數(shù)量越大越好。不要弄些性能較差的機器干這種事情。2. SSD 和大內(nèi)存對數(shù)據(jù)庫性能的提升是很明顯的。3. 這個就是我們通常所說的以大變小6、現(xiàn)有 IT 系統(tǒng)的主要問題J fc-r應用E堵旳趾扁這種方式即是以應用為劃分的“煙囪”結(jié)構(gòu),數(shù)據(jù)基于應用,并被鎖定在應用系統(tǒng)中,形成 一個個數(shù)據(jù)的孤島。帶來以下一些最基本的問題:1、數(shù)據(jù)并沒有被作為一個單獨的IT組成部分被規(guī)劃和設計,而是作為應用系統(tǒng)的一部分,由于應用系統(tǒng)的供應商不同,并且其設計工作也缺乏相互之間的協(xié)調(diào),因此,數(shù)據(jù)模型基本按照各個應用系統(tǒng)的功能需求進行設計和實現(xiàn)。2、由于缺乏有效的數(shù)據(jù)共

17、享,在有些業(yè)務環(huán)節(jié)上,一個應用所需的數(shù)據(jù)無法從相關(guān)的其他 應用系統(tǒng)中獲得,而只好重復錄入。3、另一方面,由于同一個數(shù)據(jù)可能存在多個數(shù)據(jù)源(從多個應用系統(tǒng)中被重復錄入),由 此導致了信息的不一致。府用誓井和顧瓜島、亡,廣 應川泵統(tǒng)集成數(shù)據(jù)味)這些應用系統(tǒng)按照傳統(tǒng)的方式進行設計和開發(fā),從而形成一個個的數(shù)據(jù)孤島、應用的豎井等。以至不能形成完整的數(shù)據(jù)視圖(例如相互有關(guān)聯(lián)的數(shù)據(jù)分散于不同的應用系統(tǒng),數(shù)據(jù)編碼標準不一致,數(shù)據(jù)不一致和不可信等; 讓進行數(shù)據(jù)的整合和數(shù)據(jù)分析基本上不太可能)和應用系統(tǒng)集成復雜度和難度很高(沒有好的設計規(guī)范和架構(gòu)以及代碼質(zhì)量,基本上代碼重用程度都很低;從界面集成、數(shù)據(jù)集成、應用集

18、成這三個方向來做都很困難);甚至出現(xiàn)無法集成或者為了集成而集成純粹完成任務而已)11集群、均術(shù)負SL數(shù)據(jù)分風架構(gòu)設計瀏臨器瀏覽骼瀏覽器并匱1 £2舟晝3rA'eb服務 器X hj應用服器應用服/ :Xi:1 Webfltf界應用服1B*對于一個性能要求很高的系統(tǒng)(例如高負載量和高數(shù)據(jù)量的系統(tǒng),和將來會做的全省大集中12#系統(tǒng)和新一代的應用系統(tǒng))我們會利用大量的硬件資源和相應的集群技術(shù)等技術(shù)進行相應的數(shù)據(jù)分區(qū)、集群和均衡負載來應對峰值的訪問情況。即利用多臺機器和技術(shù)形成Web服務器的集群,利用多臺機器和技術(shù)形成應用服務器的集群,利用多臺機器和技術(shù)形成數(shù)據(jù)庫服務器的分區(qū)和集群等。

19、要設計和很好地實施如此復雜的集群牽涉到非常多的技術(shù),所以我會經(jīng)??吹疆斚到y(tǒng)壓力上來的時候會遇到各種各樣的問題并且這方面的問題很嚴重(因為很多應用開發(fā)商提出的思路基本上是購買更好的硬件來解決又帶來了更多的硬件資源的浪費,而我們都知道僅僅是通過購買好的硬件是解決不了這個問題的)。#硬件利用率太低T費電、占宇間、運鮮成本高;簡而言之太不低碳了利用率鎖件資源峰值員載空閑時間13#這些應用系統(tǒng)按照傳統(tǒng)的項目建設方式,即每建設一套業(yè)務應用系統(tǒng)基本上都要購買新的硬件設備(例如服務器、存儲等)和平臺系統(tǒng)軟件(例如數(shù)據(jù)庫、中間件等)。帶來了大量的硬件資源的浪費(例如大量的服務器利用率低下、存儲利用率不高和管理復

20、雜)和占用大量的空間、電力的浪費、運維成本的提高對于一些高負載和高數(shù)據(jù)量的應用系統(tǒng),我們對硬件資源的要求是按照此應用系統(tǒng)高峰值的需要來進行購買以應用此應用的需要,但是此應用的高峰期是具有周期性的7、采用云計算技術(shù)后新系統(tǒng)的架構(gòu)初探8、大數(shù)據(jù)4V特征和什么是大數(shù)據(jù)?什么是大數(shù)據(jù)(Big Data )?? Volume:數(shù)據(jù)量異常龐大,一般達到PB量級? Variety:數(shù)據(jù)呈異構(gòu)化,數(shù)據(jù)來源呈多樣性? Velocity:數(shù)據(jù)處理要求時效性? Value:單個數(shù)據(jù)無價值,但大規(guī)模數(shù)據(jù)擁有巨大價值什么是大數(shù)據(jù)( Big Data )? 數(shù)據(jù)種類的多樣性:文字、語音、圖片、視頻、信息等? 數(shù)據(jù)對象的多

21、樣性:個人信息、個人數(shù)據(jù)、商業(yè)服務數(shù)據(jù)、社會公共數(shù)據(jù)、自然界數(shù)據(jù)、 物質(zhì)世界的數(shù)據(jù)? 數(shù)據(jù)來源的多樣性: 在數(shù)據(jù)層面打破現(xiàn)實世界的界限, 多家公司的共享替代一家公司的數(shù) 據(jù)9、離線批處理模型、內(nèi)存計算模型、交互計算模型的區(qū)別離線批處理模型: GFS/HDFS/NoSQL/MapReduce ,業(yè)界主流模式,技術(shù)成熟,數(shù) 據(jù)規(guī)模大,但時效性差大內(nèi)存計算模型: Hana,MemCloud ,計算速度快,但需要大規(guī)模集中式內(nèi)存結(jié)構(gòu)支 持(若為分布式則受制于網(wǎng)絡傳輸速度) ,技術(shù)成熟度不夠交互式計算模型: Google 有 Dremel, PowerDrill,Apache 有 Drill 通過 da

22、ta locality/in-memory buffer/columnar data structure等技術(shù)來提高計算速度,以現(xiàn)有計算架構(gòu)和軟件技術(shù)為基礎,具可行性;但目前技術(shù)分散,缺乏一個集成平臺10 、大數(shù)據(jù)總結(jié)互聯(lián)網(wǎng)大數(shù)據(jù)已成為云計算、物聯(lián)網(wǎng)之后的又一新技術(shù)熱點,已上升到國家戰(zhàn)略高度, 具有巨大市場價值;企業(yè)對大數(shù)據(jù)的需求重點在實時在線計算能力,以支持智能商務應用?,F(xiàn)有的迭代批處理 MapReduce 算法時效性差,難以滿足海量數(shù)據(jù)的實時在線分析;互聯(lián)網(wǎng)大數(shù)據(jù)計算目前尚未有業(yè)界認可的主流產(chǎn)品, 技術(shù)成熟度不到 30% ,交互式計算 和大內(nèi)存計算是值得關(guān)注的技術(shù)。11、Hadoop 原理

23、: HDFS 及 Map ReduceHadoop 最主要的就是 Core ,它又分為HDFS和MapReduce 兩個部分,前者提供分布式 數(shù)據(jù)存儲,后者提供任務的分發(fā)和歸攏。其他組件都是圍繞著這兩個核心進行工作。HDFS的設計初衷:一次寫入多次讀取不支持文件并發(fā)寫入不支持文件修改HDFS的適用范圍:存儲并管理PB級數(shù)據(jù)處理非結(jié)構(gòu)化數(shù)據(jù)注重數(shù)據(jù)處理的吞吐量,對延時不敏感應用模式為一次寫入多次讀取存取模式 12、設計SOA架構(gòu)圖15服務提供者:服務提供者是個可通過網(wǎng)絡尋址的實體,它接鷲妙行來 他用者的請求;服務便用者;嵐務便川者是組使用服務提供者所捉供的項戍狡頃服務 的紐件:(3)眼務儲備昨:

24、眼務儲備庫包含服務的描述,服務捉供者在該儲注冊 乩服務,血服務使用者訪問該紡落庫U發(fā)現(xiàn)的所提供的服務.,SO A體系-架構(gòu)樓型業(yè)片疥逹一業(yè)勢紐忡區(qū)鶴坐1仇機構(gòu)順事 T艮 山內(nèi)業(yè)撲叢隸團齊.iL t |iL-服務乂成JR務汁冊服務汁九 服務反血丿k盒共hi件沮務7H打3授權(quán).身份UIE與曲.H.ib張務.甦搭雜務、雅躬左硼務.Tft 迪Jk齊"業(yè)常Jil券.;忙0凰獰.化訓規(guī)i服券13、HDFS處理過程(1 ) HDFS如何寫文件:17Create fileClose fileWrite packetSend ackSend ackHDFS clientData NodoData No

25、deData Node(2 ) HDFS如何讀文件:(3 ) HDFS上傳文件流程:當客戶端上傳數(shù)據(jù)時,先向NamaNode 請求創(chuàng)建文件,然后 NameNode 會返回存儲的DataNode 節(jié)點和位置信息。隨后客戶端先通過管道將文件傳到本地硬盤,每湊滿指定大19小(默認是64M ),再一起上傳到一個 DataNode , DataNode 收到文件后會返回確認信 息,并以4K為單位傳到下一 DataNode 。該文件上傳方式被稱為"流水式”14、MapReduce處理過程gs M日pReduce分布式處理技術(shù)Map端map: (k1f vl) f Iist(k2f v2)+輸入:

26、鍵值對(kh表示的數(shù)據(jù)處連:文檔數(shù)據(jù)記錄(如文本文件中的行,或數(shù)據(jù)表格中的行) 將以“鍵值對“形式傳入m叩函數(shù);msp函數(shù)將處理這些鍵值對并以另一種鍵值對形式輸岀處理的一組撻值對中間結(jié)Iist(k2( v2)fl*輸出:鍵值對(kN v2)表示的一組中間數(shù)據(jù)備注:Iist(k2. v2)表示育T或多個鍵值對組成的5LI表ca MapReduce布式處理技術(shù)Reduce端reduce: (k2r Iist(v2) * Ii$t(k3r v3)輸入:由nn叩輸出的一組鍵值對Iist(k2v2)將被進行合并處理. 同拝主鍵下的不同數(shù)值合并會到一個岡沁)中,故reduce的輸入 為(k2, Iist(

27、v2)t處理:對傳入的中間結(jié)果列表數(shù)扼進行某種整理進一的處理,并產(chǎn)生雖終的某種形式的結(jié)果輸出li坯U v3)d+輸出;最終輸出結(jié)果1就(心v3)o20ca MapReduce分布式處理技術(shù)輸入輸出Map(ktvl)List(k2, v2Reduce(k2, List(v2)List(k3, v3+各個nn叩函數(shù)對所劃分的數(shù)據(jù)并行it理從不同的輸入數(shù)據(jù)產(chǎn)生 不同的中間結(jié)果輸出;+各個reduce各自舟亍計算,各自負矗處理不同的中間結(jié)果數(shù)據(jù)集厶P匚I r逬reduceih理之前,須等到所有的map函數(shù)做完(并且在逬入reduce前會對rrmp的中間結(jié)果數(shù)據(jù)進行整理©huff囘保證將m自p

28、的結(jié)果發(fā)送給對應的reduce ;*最終匯總reduce的輸出結(jié)果即可獲得最終結(jié)果ca IVIapREdiKe分布式處理技術(shù)框架MapReduce框架是由一單獨運行在主節(jié)點上的JobT估匚臨和 運行在每個集群從節(jié)點上的TaskTracke哄同組成的。*主節(jié)點負責調(diào)度構(gòu)成f乍業(yè)的所有任務,這些任務分布在不同 的從節(jié)點上主節(jié)點監(jiān)控它們的執(zhí)行憫況并且重新執(zhí)行之前歩 敗的任務.15、MapReduce分布式處理技術(shù)-實現(xiàn)機制(1) MapReduce函數(shù)庫首先把輸入文件分成M塊,每塊大概16MB到64MB。接著在集群的機器上執(zhí)行處理程序。MapReduce 算法運行過程中有一個主控程序,稱為maste

29、r。主控程序會產(chǎn)生很多作業(yè)程序,稱為worker。并且把M個map任務和R個reduce任務分配給這些 worker ,讓它們?nèi)ネ瓿伞?2) 被分配了 map 任務的 worker 讀取并處理相關(guān)的輸入 ( 這里的輸入是指已經(jīng)被切割的輸入小塊splite)。它處理輸入的數(shù)據(jù),并且將分析出的鍵/值(key/value)對傳遞給用戶定義的reduce。函數(shù)。map()函數(shù)產(chǎn)生的中間結(jié)果鍵 /值(key/value)對暫時緩沖到內(nèi)存。(3) map() 函數(shù)緩沖到內(nèi)存的中間結(jié)果將被定時刷寫到本地硬盤,這些數(shù)據(jù)通過分區(qū)函數(shù)分成 R 個區(qū)。這些中間結(jié)果在本地硬盤的位置信息將被發(fā)送回 master ,然后

30、這個 master 負 責把這些位置信息傳送給 reduce() 函數(shù)的 worker 。 當master 通知了 reduce()函數(shù)的 worker 關(guān)于中間鍵/值(key/value)對的位置時,worker 調(diào)用遠程方法從 map() 函數(shù)的 worker 機器的本地硬盤上讀取緩沖的中間數(shù)據(jù)。當 reduce() 函數(shù)的 worker 讀取到了所有的中間數(shù)據(jù), 它就使用這些中間數(shù)據(jù)的鍵 (key) 進行排 序,這樣可以使得相同鍵 (key) 的值都在一起。(5) reduce() 函數(shù)的 worker 根據(jù)每一個中間結(jié)果的鍵 (key) 來遍歷排序后的數(shù)據(jù),并且把鍵(key) 和相關(guān)的

31、中間結(jié)果值 (value) 集合傳遞給 reduce() 函數(shù)。 reduce() 函數(shù)的 worker 最終 把輸出結(jié)果存放在 master 機器的一個輸出文件中。(6) 當所有的 map 任務和 reduce 任務都已經(jīng)完成后, master 激活用戶程序。在這時, MapReduce 返回用戶程序的調(diào)用點。(7) 當以上步驟成功結(jié)束以后, MapReduce 的執(zhí)行數(shù)據(jù)存放在總計 R 個輸出文件中 (每個輸出文件都是由 reduce 任務產(chǎn)生的,這些文件名是用戶指定的 )。通常,用戶不需要將這 R 個輸出文件合并到一個文件,他們通常把這些文件作為輸入傳遞給另一個MapReduce調(diào)用,或

32、者用另一個分布式應用來處理這些文件, 并且這些分布式應用把這些文件看成為輸入 文件由于分區(qū) (partition) 成為的多個塊文件。16 、MapReduce分布式處理技術(shù) -實例 - 單詞統(tǒng)計 WordCount問題描述:統(tǒng)計文本中所出現(xiàn)單詞的次數(shù)。解決思路:需符合 Map、Reduce各自的輸入、輸出格。Map端:輸入為(k1, v1),以文本行號為k1,以行內(nèi)容為v1 ;輸出為Iist(k2, v2),每有一個單詞就輸出一個(word, 1)Reduce端:輸入為(k2, Iist(v2),將list(v2)中所有數(shù)字相加即可得到單詞次數(shù);輸出為list(k3, v3),即最終的結(jié)果:

33、(單詞,單詞次數(shù))?!皉iputOutput1. "Hello World Bye World1<Wortd,1><Bye 1><Worid.1>2、"Hello Hadoop Bye Hadoop'1Map :Hadoop. 1 a<Hadoop,1 >3. ,Bye Hadoop Hello Hadoop'<Bye1><Hadoop,1 ><HadoQpJ >Reduce :以下是書上的案例:示例:WordCount源數(shù)據(jù)Page 1:the weather is goo

34、dPage 2: today is goodPage 3:good weather is goodmap輸出Worker 1:一(the 1), (weather 1), (is 1)t (good 1).Worker 2:-(today 1), (is 1), (good 1)*Worker 3:-(good 1), (weather 1)p (is I(good 1).reduce的輸入 Worker 1:(the 1)Worker 2:(is1b(is1h (is1)Worker 3:(weather t( (weather 1>Worker 4:-(today 1) Warmer

35、 5;good IL (good i), (good 1), (good 1)reduce輸出Worker t:(the 1)-Worker 2:-(is 3)Worker 3;(weather 2) Worker 4:(today 1)Worker 5:-(good 4)17、MapReduce分布式處理技術(shù)-實例-文檔倒排索引算法 問題描述:給出氣象站歷年每天的數(shù)據(jù),要提取出每年的最高氣溫。數(shù)據(jù)示例:0067011990999991950051507004.99999N9+00221+99999解決思路-Map端:輸入為(k1, v1):(行號,內(nèi)容);輸出為Iist(k2, v2):(年份,溫度), 例如(1950, 22)。解決思路-Reduce 端: 輸入為(k2, Iist(v2): 如(1950, 22,-11),對 list(v2)排序可得到高氣溫;輸出為list(k3, v3),即最終的結(jié)果:(年份,最高氣溫)。問題描述:In verted In dex( 倒

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論