国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
在云中使用 MapReduce 和負(fù)載平衡

云計算旨在通過 Internet 提供隨需應(yīng)變的資源或服務(wù),通常視數(shù)據(jù)中心的規(guī)模和可靠性水平而定。MapReduce 是一個為并行處理大量數(shù)據(jù)而設(shè)計的編程模型,它將工作劃分為一個獨(dú)立任務(wù)組成的集合。它是一種并行編程,由某種功能隨需應(yīng)變的云(如 Google 的 BigTable、Hadoop 和Sector)提供支持。

在本文中,將使用遵從 Randomized Hydrodynamic Load Balancing 技術(shù)(下文將詳細(xì)介紹)的負(fù)載平衡算法。利用虛擬化來降低成本和物理服務(wù)器的實(shí)際數(shù)目;更重要的是,將使用虛擬化用來實(shí)現(xiàn)高效的物理計算機(jī) CPU 利用。

要從本文獲取最多的知識,您應(yīng)該大致了解云計算的概念、Randomized Hydrodynamic Load Balancing 技術(shù)和 Hadoop MapReduce 編程模型。最好對并行程序設(shè)計有一個基本的了解,了解 Java? 或其他面向?qū)ο蟮恼Z言的編程知識將很有幫助。

在本文中,要實(shí)現(xiàn) MapReduce 算法,系統(tǒng)應(yīng)裝有以下軟件:

  • Hadoop 0.20.1.
  • Eclipse IDE 3.0 以上(或 Rational Application Developer 7.1)。
  • Ubuntu 8.2 以上。

深入 MapReduce 算法之前,我們將建立基本的云架構(gòu)、負(fù)載平衡、MapReduce 和并行編程 — 至少對本文這是足夠了。

云架構(gòu):基本內(nèi)容

圖 1 顯示了完整的系統(tǒng)詳圖,包括平臺、軟件,以及如何使用它們來實(shí)現(xiàn)本文的目標(biāo)設(shè)置。


圖 1. 云架構(gòu)


您可以看到,我們使用 Ubuntu 9.04 和 8.2 作為操作系統(tǒng);平臺是 Hadoop 0.20.1、Eclipse 3.3.1 和 Sun Java 6;編程語言使用 Java;腳本語言使用 HTML、JSP 和 XML。

該云架構(gòu)有一個主節(jié)點(diǎn)和一些從屬節(jié)點(diǎn)。在該實(shí)現(xiàn)中,維護(hù)主服務(wù)器,獲取客戶端請求并根據(jù)請求的類型進(jìn)行處理。

從圖 2 中可以看到,搜索請求轉(zhuǎn)發(fā)到 Hadoop NameNode。然后,Hadoop NameNode 負(fù)責(zé)搜索和索引操作,它將啟動大量 Map 和 Reduce 進(jìn)程。完成特定的搜索關(guān)鍵字 MapReduce 操作之后,NameNode 將輸出值返回到服務(wù)器并交付客戶端。


圖 2. Map 和 Reduce 函數(shù)執(zhí)行搜索和索引


如果請求的是特定的軟件,則將基于客戶租戶 ID、支付會費(fèi)、使用該特定軟件的資格以及軟件的租賃期完成驗(yàn)證步驟。然后,服務(wù)器為該請求提供服務(wù),并允許用戶使用特定的軟件組合。

在這里提供 SaaS 的多租戶功能,單個軟件實(shí)例可以服務(wù)于多個租戶。這樣,相同的軟件映像集合會基于租戶 ID 生成不同的實(shí)例生成。

這些服務(wù)意味著,客戶端將使用 Hadoop、Eclipse 等平臺以及在搜索文件或使用某些軟件時使用的操作系統(tǒng)。此外,為了存儲其數(shù)據(jù)(數(shù)據(jù)庫或文件),在云中,客戶端將不得不占用一些數(shù)據(jù)中心(IaaS)的內(nèi)存空間。所有這些對終端用戶都是透明的。


Randomized Hydrodynamic Load Balancing:基本內(nèi)容

負(fù)載平衡用來確保在使用其他資源時您現(xiàn)有的資源都不是空閑的。若要平衡負(fù)載分布,可以將負(fù)載從源節(jié)點(diǎn)(有多余工作負(fù)載)的遷移到相對較輕的負(fù)載目標(biāo)節(jié)點(diǎn)。

在運(yùn)行時應(yīng)用負(fù)載平衡時,它被稱之為動態(tài)負(fù)載平衡 — 這可以根據(jù)執(zhí)行節(jié)點(diǎn)選擇直接實(shí)現(xiàn)或以迭代的方式實(shí)現(xiàn):

  • 迭代的方法通過幾個迭代步驟確定最終目標(biāo)節(jié)點(diǎn)。
  • 直接方法在一個步驟中選擇最終目標(biāo)節(jié)點(diǎn)。

本文使用 Randomized Hydrodynamic Load Balancing 方法,這是一種同時利用了直接和迭代方法的混合方法。


MapReduce:基本內(nèi)容

MapReduce 程序用于以并行方式計算大量數(shù)據(jù)。這就需要在很多計算機(jī)之間分配工作負(fù)荷。Hadoop 提供了一種系統(tǒng)的方法來實(shí)現(xiàn)這種程序設(shè)計范式。

計算需要輸入一組鍵/值對,生成一組輸出鍵/值對。計算涉及的兩個基本操作:Map 和 Reduce。

用戶編寫的 Map 操作需要輸入并生成一組中間鍵/值對。MapReduce 庫將所有與同一中間鍵 #1 相關(guān)聯(lián)的中間值組合到一起,并且將它們傳遞給 Reduce 功能。

同樣是用戶編寫的 Reduce 函數(shù)接受一個中間鍵 #1 和該鍵的一組值。它將這些值合并形成可能較小的一組值。通常每次 Reduce 調(diào)用只生成一個輸出值 0 或 1。中間值通過迭代器(一種可以讓程序員遍歷所有集合元素的對象,忽略其具體的實(shí)現(xiàn))提供給用戶的 Reduce 函數(shù)。這樣,您就可以處理太大而無法放入內(nèi)存的值列表。

以 WordCount 問題為例。即計算大文件集中的每個單詞的匹配次數(shù)。Mapper 和 Reducer 函數(shù)如代碼清單 1 所示。


清單 1. 解決 WordCount 問題的 Map 和 Reduce

                        mapper (filename, file-contents):                        for each word in file-contents:                        emit (word, 1)                        reducer (word, values):                        sum = 0                        for each value in values:                        sum = sum + value                        emit (word, sum)                        

Map 函數(shù)發(fā)出每個單詞附有一個相關(guān)的出現(xiàn)次數(shù)計數(shù)。Reduce 函數(shù)對發(fā)出的特定單詞計數(shù)求和。這個基本的功能如果構(gòu)建在集群之上,就可以很容易轉(zhuǎn)變?yōu)楦咚俨⑿刑幚硐到y(tǒng)。

對之前完成的大量數(shù)據(jù)執(zhí)行計算,這些數(shù)據(jù)通常在分布式環(huán)境中。Hadoop 的獨(dú)特之處在于它簡單的編程模式 — 使用戶可以快速編寫和測試分布式系統(tǒng) — 以及它的高效、自動分配數(shù)據(jù)和跨計算機(jī)處理,進(jìn)而能夠利用 CPU 內(nèi)核的底層并行度。

讓我們理清思路。前文已經(jīng)討論過,Hadoop 集群中有以下節(jié)點(diǎn):

  • NameNode(云主節(jié)點(diǎn))。
  • DataNodes(從屬節(jié)點(diǎn))。

集群中的節(jié)點(diǎn)已經(jīng)預(yù)先加載了本地輸入文件。啟動 MapReduce 進(jìn)程時,NameNode 將使用 JobTracker 進(jìn)程分配任務(wù),它必須由 DataNodes 通過 TaskTracker 進(jìn)程完成。每個 DataNode 中將運(yùn)行幾個 Map 進(jìn)程,中間結(jié)果會提供給合器進(jìn)程,生成一臺計算機(jī)上文件的單詞計數(shù)(在 WordCount 的問題中)。值被打亂發(fā)送到 Reduce 進(jìn)程,然后生成目標(biāo)問題的最終輸出。


如何使用負(fù)載平衡

負(fù)載平衡有助于在某個節(jié)點(diǎn)的負(fù)載超出閾值水平時,將負(fù)載平均地分散到空閑的節(jié)點(diǎn)。雖然在執(zhí)行 MapReduce 算法時負(fù)載平衡不夠明顯,但在進(jìn)行大文件處理以及硬件資源利用至關(guān)重要的時候它是非常必要的。一個顯著的作用是可以在資源緊張的情況下增加硬件利用率,提 高性能。

在某些數(shù)據(jù)節(jié)點(diǎn)已滿或者新的空節(jié)點(diǎn)加入集群時,實(shí)現(xiàn)一個模塊來平衡 Hadoop 分布式文件系統(tǒng)集群上的磁盤空間使用情況。達(dá)到閾值時將啟動平衡器(Class Balancer 工具);此參數(shù)是一個從 0 至 100% 的分?jǐn)?shù),默認(rèn)值為 10%。此選項為是否平衡集群設(shè)置目標(biāo);閾值越小,集群越平衡,同樣,平衡器運(yùn)行的時間也越長。(注:閾值可以很小到您不能平衡集群的狀態(tài),因?yàn)閼?yīng)用程序 可能同時寫入和刪除文件)

如果對于每個數(shù)據(jù)節(jié)點(diǎn),節(jié)點(diǎn)占用空間與總?cè)萘康谋嚷剩ǚQ為節(jié)點(diǎn)利用率)不同于集群已用空間與總空間的比率(集群利用率),且不超過閾值,則認(rèn)為該集群是平衡的。

該模塊將把利用率高的數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊以迭代方式移動到利用率低的節(jié)點(diǎn)上;在每個迭代中,節(jié)點(diǎn)移動或接收不超過容量的閾值比例,每次迭代運(yùn)行不超過 20 分鐘。

在此實(shí)現(xiàn)中,節(jié)點(diǎn)被分類為高利用、平均利用未充分利用。根據(jù)每個節(jié)點(diǎn)的利用額,將負(fù)載在節(jié)點(diǎn)之間轉(zhuǎn)移以平衡集群。模塊工作方式如下:

  • 首選,它獲取鄰近節(jié)點(diǎn)詳細(xì)信息:
    1. 當(dāng) DataNode 的負(fù)載增加到閾值級別時,它將向該 NameNode 發(fā)送一個請求。
    2. NameNode 獲得特定 DataNode 最鄰近節(jié)點(diǎn)的負(fù)載級別信息。
    3. NameNode 比較負(fù)載,然后將有關(guān)最空閑相鄰節(jié)點(diǎn)的詳細(xì)信息發(fā)送到特定的 DataNode。
  • 接下來,DataNodes 開始工作:
    1. 每個 DataNode 將自己負(fù)載量與其最近節(jié)點(diǎn)的負(fù)載量之和進(jìn)行比較。
    2. 如果 DataNode 的負(fù)載級別大于其鄰近節(jié)點(diǎn),將隨機(jī)選擇那么負(fù)載目標(biāo)節(jié)點(diǎn)(直接相鄰的節(jié)點(diǎn)及其他節(jié)點(diǎn)) 。
    3. 然后將節(jié)點(diǎn)請求發(fā)送到目標(biāo)節(jié)點(diǎn)。
  • 最后,接收請求:
    1. 每個節(jié)點(diǎn)將維護(hù)一個緩沖區(qū)接收負(fù)載請求。
    2. 消息傳遞接口(MPI)管理此緩沖區(qū)。
    3. 主線程會偵聽緩沖隊列,并服務(wù)其接收的請求。
    4. 節(jié)點(diǎn)進(jìn)入負(fù)載平衡執(zhí)行階段。

評估性能

提供了不同的輸入文件集,每個文件集的大小不同,并在單節(jié)點(diǎn)和雙節(jié)點(diǎn)集群中執(zhí)行 MapReduce 任務(wù)。測量相應(yīng)的執(zhí)行時間,我們可以得出結(jié)論,到目前為止,在集群中運(yùn)行 MapReduce 是處理大量輸入文件更有效的方式。

圖 3 中的關(guān)系圖說明了我們在各個節(jié)點(diǎn)上運(yùn)行的性能結(jié)果。


圖 3. MapReduce 負(fù)載平衡在集群中更加有效



結(jié)束語

我們的 Hadoop MapReduce 和負(fù)載平衡的實(shí)驗(yàn)可以得到兩個必然結(jié)論:

  • 在云環(huán)境中,MapReduce 結(jié)構(gòu)提高了大型數(shù)據(jù)集的吞吐效率。相反,您在非云系統(tǒng)中不一定能看到如此的吞吐量增加。
  • 數(shù)據(jù)集較小時,MapReduce 和負(fù)載平衡不會對云系統(tǒng)吞吐量的增加產(chǎn)生明顯影響。

因此,在計劃在云系統(tǒng)上處理大量數(shù)據(jù)時,考慮 MapReduce 樣式并行處理和負(fù)載平衡的組合。


參考資料

學(xué)習(xí)

 

轉(zhuǎn): http://www.ibm.com/developerworks/cn/cloud/library/cl-mapreduce/index.html

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Hadoop 集群如何選擇合適的硬件
RDD:基于內(nèi)存集群計算的容錯抽象 | 簡單之美
hadoop優(yōu)勢與劣勢分析
產(chǎn)品概述
從hadoop MapReduce 1.0到y(tǒng)arn (1)
hadoop近期學(xué)習(xí)與工作的心得與體會
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服