久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

基于云計(jì)算和大數(shù)據(jù)的圖書館 應(yīng)用系統(tǒng)建設(shè)設(shè)計(jì)

 草綠色 2019-10-25

1 序言

隨著世界的發(fā)展,人們對(duì)計(jì)算機(jī)性能的要求越來越高,。以前人們把重點(diǎn)都放到了提升單臺(tái)計(jì)算機(jī)性能上面,,但如今單臺(tái)計(jì)算機(jī)的性能已經(jīng)到達(dá)了瓶頸,而人們對(duì)計(jì)算機(jī)性能的需求卻越來越強(qiáng)烈,。近幾年,,隨著新技術(shù)的出現(xiàn)和發(fā)展,尤其是云計(jì)算技術(shù)的出現(xiàn),,以及大數(shù)據(jù)的運(yùn)用,,對(duì)網(wǎng)絡(luò)技術(shù)帶來了革命的轉(zhuǎn)變,如何順應(yīng)時(shí)代發(fā)展并將新技術(shù)應(yīng)用于信息化建設(shè)中,,改變傳統(tǒng)的教學(xué)模式和學(xué)習(xí)模式至關(guān)重要,。面對(duì)網(wǎng)絡(luò)建設(shè)長期存在幾個(gè)難題:建設(shè)成本高、管理維護(hù)困難,、更新?lián)Q代快,,我們應(yīng)該如何應(yīng)用云計(jì)算技術(shù)巧妙的應(yīng)對(duì)呢?

 本設(shè)計(jì)將以網(wǎng)絡(luò)建設(shè)和大數(shù)據(jù)分析為目標(biāo),,將云計(jì)算技術(shù)合理運(yùn)用到圖書館系統(tǒng)網(wǎng)絡(luò)建設(shè)中,,合理,、高效地完成實(shí)踐教學(xué),解決整個(gè)圖書館應(yīng)用系統(tǒng)在運(yùn)行維護(hù)中出現(xiàn)的各種問題,。

2 設(shè)計(jì)目的

2.1非分布式集群的不足

互聯(lián)網(wǎng)的相關(guān)技術(shù)不斷向前發(fā)展,,人們?nèi)找媪?xí)慣于經(jīng)由互聯(lián)網(wǎng)查閱和獲得信息資源,傳統(tǒng)圖書館的業(yè)務(wù)范疇是以紙質(zhì)資源為基礎(chǔ)的,,而在數(shù)字圖書館領(lǐng)域中,,信息有著林林總總的表現(xiàn)形式:圖像、文檔,、音頻,、視頻等等,在數(shù)字圖書館中,,此類多媒體信息是不可缺少的,。因此數(shù)字圖書館要管理的數(shù)據(jù)量越來越大,加之網(wǎng)絡(luò)技術(shù)獲得了前所未有的高速發(fā)展,,移動(dòng)寬帶網(wǎng)絡(luò)走進(jìn)人們的視野,,移動(dòng)智能終端得到了廣泛的普及,與互聯(lián)網(wǎng)相連接的移動(dòng)設(shè)備也越來越多,。由此對(duì)互聯(lián)網(wǎng)而言,,它的系統(tǒng)負(fù)載也越來越大,這就要求它務(wù)必?fù)碛写罅康叵驼頂?shù)據(jù)的超強(qiáng)能力,。

然而,,傳統(tǒng)的數(shù)字圖書館服務(wù)構(gòu)建模式明顯不能響應(yīng)這樣的需求。如果通過高性能的設(shè)備來解決問題,,那樣成本太高,。即使在舍得花大成本的情況下,傳統(tǒng)非分布集群依舊不能很好的處理網(wǎng)絡(luò)管理維護(hù)困難,、更新?lián)Q代快的問題,。然而這一切問題,分布式系統(tǒng)都能夠很好的解決,。

2.2 分布式集群介紹

分布式集群系統(tǒng)(distributedsystem)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng),。同時(shí)也是云計(jì)算實(shí)現(xiàn)的基礎(chǔ)。云計(jì)算是計(jì)算模型的一種,,是由并行處理(Parallel Computing),、網(wǎng)格計(jì)算(Grid Computing)、分布式處理(Distributed Computing)等發(fā)展而來的,。從云計(jì)算的本質(zhì)上來講,,大部分的計(jì)算任務(wù)被分布在由計(jì)算機(jī)組成的資源池之上,這樣一來,,客戶就可以用戶根據(jù)自己的需要得到相關(guān)的服務(wù),,這包括了計(jì)算能力,、信息服務(wù)和存儲(chǔ)空間等。云計(jì)算作為一種IT基礎(chǔ)設(shè)施與服務(wù)的交付和使用模式,,將會(huì)深刻地影響未來互聯(lián)網(wǎng)的運(yùn)作和服務(wù)模式,,同時(shí)為傳統(tǒng)圖書館和數(shù)字圖書館未來的發(fā)展,提供了全方位的指導(dǎo)和啟發(fā),,也為傳統(tǒng)圖書館提供了一種新的運(yùn)營模式。

在一個(gè)分布式系統(tǒng)中,,一組獨(dú)立的計(jì)算機(jī)展現(xiàn)給用戶的是一個(gè)統(tǒng)一的整體,,就好像是一個(gè)系統(tǒng)似的。系統(tǒng)擁有多種通用的物理和邏輯資源,,可以動(dòng)態(tài)的分配任務(wù),,分散的物理和邏輯資源通過計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)信息交換。系統(tǒng)中存在一個(gè)以全局的方式管理計(jì)算機(jī)資源的分布式操作系統(tǒng),。分布式系統(tǒng)是以全局方式管理系統(tǒng)資源的,,它可以為用戶任意調(diào)度網(wǎng)絡(luò)資源,并且調(diào)度過程是“透明”的,。當(dāng)用戶提交一個(gè)作業(yè)時(shí),,分布式系統(tǒng)能夠根據(jù)需要在系統(tǒng)中選擇最合適的處理器,將用戶的作業(yè)提交到該處理程序,,在處理器完成作業(yè)后,,將結(jié)果傳給用戶。在這個(gè)過程中,,用戶并不會(huì)意識(shí)到有多個(gè)處理器的存在,,這個(gè)系統(tǒng)就像是一個(gè)處理器一樣。

2.3 分布式集群的優(yōu)勢(shì)

2.3.1 相比于集中系統(tǒng)

1,、經(jīng)濟(jì),。傾向于分布式系統(tǒng)的主要原因是它可以潛在地得到比單個(gè)的大型集中式系統(tǒng)好得多的性價(jià)比。實(shí)際上,,分布式系統(tǒng)是通過較低廉的價(jià)格來實(shí)現(xiàn)相似的性能的,。無論是要以低價(jià)格獲得普通的性能還是要以較高的價(jià)格獲得極高的性能,分布式系統(tǒng)都能夠滿足,。

2,、速度。對(duì)分布式系統(tǒng)和并行系統(tǒng)進(jìn)行對(duì)比之后可以發(fā)現(xiàn),,分布式系統(tǒng)可以達(dá)到并行系統(tǒng)所追求的目標(biāo),,即用最快的速度完成一個(gè)任務(wù)。

        3,、固有的分布性,。建立分布式系統(tǒng)的另一原因在于一些應(yīng)用本身是分布式的,。

        4、高可靠性,。同集中式系統(tǒng)相比較,,分布式系統(tǒng)的另一個(gè)潛在的優(yōu)勢(shì)在于它的高可靠性。通過把工作負(fù)載分散到眾多的機(jī)器上,,單個(gè)芯片故障最多只會(huì)使一臺(tái)機(jī)器停機(jī),,而其它機(jī)器不會(huì)受任何影響。理想條件下,,某一時(shí)刻如果有5%的計(jì)算機(jī)出現(xiàn)故障,,系統(tǒng)將仍能繼續(xù)工作,只不過損失5%的性能,。

        5,、漸增。漸增式的增長方式也是分布式系統(tǒng)優(yōu)于集中式系統(tǒng)的一個(gè)潛在的重要的原因,。許多公司在發(fā)展的過程中,,對(duì)設(shè)備的需求是逐漸增長的,這個(gè)時(shí)候如果采用分布式系統(tǒng),,僅給系統(tǒng)增加一些處理機(jī)就可能解決問題,。

  從長遠(yuǎn)的角度來看,主要的驅(qū)動(dòng)力將是大量個(gè)人計(jì)算機(jī)的存在和人們共同工作與信息共享的需要,,這種信息共享必需是以一種方便的形式進(jìn)行的,,而不受地理或人員、數(shù)據(jù),,機(jī)器的物理分布的影響,。

2.3.2 相比于獨(dú)立PC

1、數(shù)據(jù)共享,。在實(shí)際的工作生活當(dāng)中,,許多用戶都需要共享數(shù)據(jù),共享數(shù)據(jù)是許多應(yīng)用的基礎(chǔ),,所以計(jì)算機(jī)間必須互聯(lián),,而計(jì)算機(jī)互聯(lián)就產(chǎn)生了分布式系統(tǒng)。

        2,、設(shè)備共享,。共享并不只是僅僅涉及數(shù)據(jù)。昂的外設(shè),,例如彩色激光打印機(jī),,照相排版機(jī)以及大型存儲(chǔ)設(shè)備(如自動(dòng)點(diǎn)唱機(jī))都是共享

        3、通信,。分布式系統(tǒng)可以增強(qiáng)人與人之的溝通,。件比信件,、電話真有更多的人之。它比信件快的多,,不像電話需要兩人同時(shí)都在,,也不像真,它所產(chǎn)生的文件可在計(jì)算機(jī)中進(jìn)編輯,、重排和存儲(chǔ),,也可以由文本處理程序來處理

        4,、靈活性,。分布式系統(tǒng)可能比每個(gè)用一個(gè)獨(dú)立的計(jì)算機(jī)更靈活。分布式系統(tǒng)可以使工作負(fù)荷能更有效地在計(jì)算機(jī)系統(tǒng)中進(jìn)行分配,。系統(tǒng)中某些計(jì)算機(jī)的失效也可以通過使其工作在其它計(jì)算機(jī)上進(jìn)行而得到補(bǔ)償。

2.4 分布式集群的必要性

分布式集群可以做到以更低的經(jīng)濟(jì)成本收獲更好的計(jì)算機(jī)技能,,在可靠性上較之非分布式系統(tǒng)也有更明顯的優(yōu)勢(shì),,部分計(jì)算機(jī)故障不會(huì)影響整個(gè)系統(tǒng)的運(yùn)作,系統(tǒng)仍然可以繼續(xù)工作,,只是減少了少部分的性能而已,。同時(shí),分布式集群更能滿足用戶漸增的需求……較之獨(dú)立的PC機(jī)更是有實(shí)現(xiàn)數(shù)據(jù)共享,、設(shè)備共享,、用戶通信、高靈活性等優(yōu)勢(shì),??傊植际郊哼@些顯著的優(yōu)勢(shì)已經(jīng)形成了分布式集群廣泛應(yīng)用的強(qiáng)大趨勢(shì),。出于人們對(duì)高效工作,,便捷生活的一致性追求,分布式集群的應(yīng)用已經(jīng)變成了無需言說的必然需求,。

分布式集群給現(xiàn)有計(jì)算資源和使用模式帶來的巨大變化。尤其引出的云計(jì)算更是以一切皆服務(wù)的理念也將使數(shù)字圖書館的方方面面受益。毫無疑問,,云計(jì)算將會(huì)在數(shù)字圖書館的發(fā)展建設(shè)中產(chǎn)生深遠(yuǎn)的影響, 云計(jì)算技術(shù)應(yīng)用在數(shù)字圖書館建設(shè)中也具有廣闊的前景,。

3可行性分析

3.1圖書館基本模式于不足

分布式集群可以做到以更低的經(jīng)濟(jì)成本收獲更好的計(jì)算機(jī)技能,在可靠性上較之非分布式系統(tǒng)也有更明顯的優(yōu)勢(shì),,部分計(jì)算機(jī)故障不會(huì)影響整個(gè)系統(tǒng)的運(yùn)作,,系統(tǒng)仍然可以繼續(xù)工作,只是減少了少部分的性能而已,。同時(shí),,分布式集群更能滿足用戶漸增的需求……較之獨(dú)立的PC機(jī)更是有實(shí)現(xiàn)數(shù)據(jù)共享,、設(shè)備共享、用戶通信,、高靈活性等優(yōu)勢(shì),。總之,,分布式集群這些顯著的優(yōu)勢(shì)已經(jīng)形成了分布式集群廣泛應(yīng)用的強(qiáng)大趨勢(shì),。出于人們對(duì)高效工作,便捷生活的一致性追求,,分布式集群的應(yīng)用已經(jīng)變成了無需言說的必然需求,。

分布式集群給現(xiàn)有計(jì)算資源和使用模式帶來的巨大變化。尤其引出的云計(jì)算更是以一切皆服務(wù)的理念也將使數(shù)字圖書館的方方面面受益,。毫無疑問,,云計(jì)算將會(huì)在數(shù)字圖書館的發(fā)展建設(shè)中產(chǎn)生深遠(yuǎn)的影響, 云計(jì)算技術(shù)應(yīng)用在數(shù)字圖書館建設(shè)中也具有廣闊的前景。

 3.2 云計(jì)算和大數(shù)據(jù)趨勢(shì)

 3.2.1 云計(jì)算基本介紹

云計(jì)算是一種在互聯(lián)網(wǎng)上將分布式處理(Distributed Computing),、并行處理(ParallelComputing)和網(wǎng)格計(jì)算(Grid Computing)結(jié)合起來的超級(jí)計(jì)算模式,它將計(jì)算和存取集中于網(wǎng)絡(luò)中的集群服務(wù)器中,,通過云計(jì)算,只要用戶聯(lián)接到互聯(lián)網(wǎng),就能使用這些基于Web2.0的,、分布式的,、不需要任何軟件支持和用戶存儲(chǔ)設(shè)備的資源和應(yīng)用服務(wù)。這些服務(wù)逐漸引領(lǐng)了一種由全新的計(jì)算模式所驅(qū)動(dòng)的浪潮:企業(yè)或個(gè)人將不再需要在電腦中安裝大量套裝軟件,而是通過Web2.0瀏覽器接入到一種大范圍的,、按需定制的服務(wù)用戶只需要操作客戶端軟件,,就能實(shí)現(xiàn)自己需求的分布在各種服務(wù)器、個(gè)人電腦,、甚至移動(dòng)電話和其他設(shè)備上的大量軟硬件資源和應(yīng)用服務(wù),,還能把這些資源和應(yīng)用服務(wù)集中在一起協(xié)同工作。

這一特點(diǎn)使個(gè)人計(jì)算機(jī)能以最小化的性能完成最大化的功能,,這樣的搜索效率正是數(shù)字圖書館需要想實(shí)現(xiàn)的,。用戶用最簡便的操作滿足最復(fù)雜的需求,而這些需求應(yīng)該是用戶定制的,非結(jié)構(gòu)化的,同時(shí)能夠把用戶需要的結(jié)果在最短的時(shí)間內(nèi)傳遞給用戶最方便訪問的網(wǎng)絡(luò)設(shè)備上,這就要求數(shù)字圖書館做到應(yīng)用的復(fù)雜性和使用的便利性兩者的完美結(jié)合,,即放棄傳統(tǒng)的系統(tǒng)架構(gòu),采用云計(jì)算的模式,。基于云計(jì)算架構(gòu)的數(shù)字圖書館可以稱為“云圖書館”,。

3.2.1云計(jì)算應(yīng)用于圖書館的優(yōu)勢(shì)

1,、超強(qiáng)的計(jì)算能力

通過一定的協(xié)調(diào)調(diào)度。云計(jì)算模式可以通過數(shù)萬乃至百萬的普通計(jì)算機(jī)之間的聯(lián)合來提供超強(qiáng)的,、可以與超級(jí)計(jì)算機(jī)相抗衡的計(jì)算能力,。使用戶完成單臺(tái)計(jì)算機(jī)根本無法完成的任務(wù)。在“云”中,使用者只要輸入簡單指令即能得到大量信息,。因?yàn)樵谠朴?jì)算模式中,,人們不是從自己的計(jì)算機(jī)上,也不是從某個(gè)指定的服務(wù)器上,,而是從互聯(lián)網(wǎng)絡(luò)上,,通過各種設(shè)備(如移動(dòng)終端等)獲得所需的信息,因此其速度得到了質(zhì)的飛躍,。  

2,、以用戶為中心

在云計(jì)算模式中,相關(guān)的數(shù)據(jù)存儲(chǔ)在“云”之中,,用戶可以在任何時(shí)間,、任何地點(diǎn)都可以以某種便捷、方便,、安全的方式獲得云中的相關(guān)的信息或服務(wù),。雖然在“云”里有成千上萬臺(tái)計(jì)算機(jī)為其提供服務(wù),但對(duì)于“云”外的用戶來說,,他看到只是一個(gè)統(tǒng)一的接口界面,,用戶使用云服務(wù)就如通過互聯(lián)網(wǎng)使用本地計(jì)算機(jī)一樣的方便。  

3,、實(shí)現(xiàn)綠色數(shù)據(jù)計(jì)算

人們需要監(jiān)管能力更強(qiáng)的計(jì)算模型,,來充分提高計(jì)算效率,,不僅僅是計(jì)算資源的利用率,,而且是從物理上降低設(shè)備能耗。云計(jì)算的出現(xiàn)大大加快了實(shí)現(xiàn)綠色數(shù)據(jù)計(jì)算的步伐,。   

4,、降低了數(shù)據(jù)外泄的可能性

這也是云計(jì)算服務(wù)商討論最多的一個(gè)優(yōu)點(diǎn)。在云計(jì)算之前,,數(shù)據(jù)容易被盜,,而隨著云計(jì)算的推廣以后。用戶可以把自己的數(shù)據(jù)放在“云”中,,只要用戶能夠接入互聯(lián)網(wǎng)就能夠根據(jù)需要隨時(shí)存取,,為網(wǎng)絡(luò)應(yīng)用提供了幾乎無限多的可能,為存儲(chǔ)和管理數(shù)據(jù)提供了幾乎無限的空間,。   

5,、經(jīng)濟(jì)實(shí)惠

云計(jì)算中,用戶只需花少量的錢來租用相關(guān)的云服務(wù)商所提供的相關(guān)服務(wù)即可,。它可以讓用戶利用很少的投資獲得較大的回報(bào),。不必?fù)?dān)心自己所購買的IT產(chǎn)品被淘汰,因?yàn)榫唧w的硬件配置和更新都是由云服務(wù)提供商來提供的。用戶所需做的只是通過各種設(shè)備享受云服務(wù)所提供自己需求的信息,、知識(shí),、服務(wù)等。

3.2.3 云計(jì)算關(guān)鍵技術(shù)

云計(jì)算是超級(jí)計(jì)算方式的一種新型體現(xiàn),,以數(shù)據(jù)為中心,,是超級(jí)計(jì)算中數(shù)據(jù)密集型的表現(xiàn)。它具備自身獨(dú)特的技術(shù),,主要體現(xiàn)在數(shù)據(jù)管理,,編程模式,數(shù)據(jù)存儲(chǔ)等方面,。

云計(jì)算采用分布式的存儲(chǔ)方式和冗余存儲(chǔ)方式來保證其經(jīng)濟(jì)性,,高可用和高可靠的性能。此外,,云計(jì)算系統(tǒng)可以滿足大量用戶的同時(shí)需求,,云計(jì)算系統(tǒng)向用戶提供高效的服務(wù)必須對(duì)大數(shù)據(jù)進(jìn)行處理,分析和計(jì)算,。所以數(shù)據(jù)管理技術(shù)管理大數(shù)據(jù)集必須要做到高效,。其次,云計(jì)算數(shù)據(jù)管理技術(shù)所必須解決的問題是如何找到隱藏在規(guī)模巨大的數(shù)據(jù)中的特定的數(shù)據(jù),。云計(jì)算的編程必須十分簡單,,后太復(fù)雜的任務(wù)調(diào)度和并行執(zhí)行必須想用戶透明,以讓用戶能輕松享受云計(jì)算為用戶帶來的服務(wù),,并讓用戶能輕松編寫程序以為其服務(wù),。云計(jì)算的編程模式采用類似于Map-Reduce的編程模式,并且現(xiàn)在所有的IT廠商提供的云計(jì)劃都采用此種編程工具,。這種編程模型不但在云計(jì)算中被廣泛采用,,在多核和多核處理器,異構(gòu)機(jī)群等上同樣效果良好,。改編成模式僅適用于編寫能夠高度并行化和任務(wù)內(nèi)部松耦合的程序,,Map-Reduce的發(fā)展方向是使得程序員能夠輕松的編寫運(yùn)行時(shí)能高效的調(diào)度和執(zhí)行任務(wù),緊耦合的程序,。

下面從文件系統(tǒng),、并行數(shù)據(jù)處理和虛擬化技術(shù)方面介紹三類相關(guān)技術(shù)。

1,、  文件系統(tǒng)技術(shù)

云計(jì)算采用的文件技術(shù)系統(tǒng)嚴(yán)格意義上來說是分布式的文件系統(tǒng),。其包括從硬件到軟件的整套解決方案。包含大規(guī)模的故障檢測(cè)技術(shù),,集群安裝技術(shù),,節(jié)點(diǎn)動(dòng)態(tài)加入和節(jié)能等技術(shù)。大規(guī)模集群安裝技術(shù)以其動(dòng)輒上萬臺(tái)的數(shù)據(jù)中心迅速安裝,部署文件系統(tǒng),;故障檢測(cè)技術(shù)是指由于云計(jì)算文件系統(tǒng)構(gòu)建在多類型計(jì)算機(jī)上,,在短時(shí)間內(nèi)確定故障的相關(guān)檢測(cè)技術(shù)。節(jié)點(diǎn)動(dòng)態(tài)加入是將裸機(jī)加入到文件系統(tǒng),,獲取系統(tǒng)并安裝,;節(jié)能技術(shù)是指采用多養(yǎng)機(jī)制降低消耗,例如修改服務(wù)器主板等技術(shù)來提高電量的利用率,。 

2,、  并行數(shù)據(jù)處理技術(shù)

相對(duì)于傳統(tǒng)的分布式程序設(shè)計(jì),云計(jì)算采用的是封裝了并行處理,,本地化計(jì)算,,容錯(cuò)處理等細(xì)節(jié)的分布式數(shù)據(jù)處理技術(shù)。并且提供了一個(gè)可以大尺度的計(jì)算分布執(zhí)行和自動(dòng)并發(fā)的接口讓編程變得容易,。用戶和機(jī)構(gòu)選擇合適云資源可以根據(jù)投資的多少和自身的需要來選擇,,完善自身的應(yīng)用管理可以根據(jù)不同的運(yùn)行模式來選擇不同的封裝編程語言,這是并行處理技術(shù)為用戶提供的很大的方便,。

3,、  虛擬化技術(shù)

虛擬化技術(shù)是調(diào)配計(jì)算資源的一種方法,它將不同層面的應(yīng)用系統(tǒng)(硬件,,軟件,,數(shù)據(jù),網(wǎng)絡(luò)存儲(chǔ)等)隔離起來,,使得打破服務(wù)器,,存儲(chǔ),數(shù)據(jù)中心和物理設(shè)備之間的劃分,,實(shí)現(xiàn)架構(gòu)動(dòng)態(tài)化成為可能,。并集中資源和動(dòng)態(tài)使用物理資源和虛擬資源,,提高了系統(tǒng)結(jié)構(gòu)的靈活性和彈性,,降低了成本和管理風(fēng)險(xiǎn),并改進(jìn)了服務(wù),。我們所說的云計(jì)算就是虛擬化技術(shù)推廣到互聯(lián)網(wǎng)的概念,。云計(jì)算能夠給企業(yè)帶來獲得應(yīng)用所需足夠的計(jì)算能力和購買計(jì)算能力兩大價(jià)值。解決了企業(yè)無法負(fù)擔(dān)基礎(chǔ)設(shè)施建設(shè)的高額投資成本和以往計(jì)算能力不足的問題?,F(xiàn)在很多企業(yè)都需要處理大數(shù)據(jù)量的計(jì)算能力,,他們迫切需要云計(jì)算存在的現(xiàn)實(shí)。云計(jì)算改變了對(duì)IT的應(yīng)用建設(shè)模式,,也改變了企業(yè)對(duì)計(jì)算資源的使用和采購方式,。

4 物理結(jié)構(gòu)設(shè)計(jì)

4.1 基于云計(jì)算的數(shù)字圖書館基本架構(gòu)

目前數(shù)字圖書館多為靜態(tài)部署的、傳統(tǒng)B/S三層結(jié)構(gòu)計(jì)算機(jī)檢索系統(tǒng),即用戶通過圖書館終端或者瀏覽器訪問圖書館網(wǎng)站(接口層),進(jìn)行查詢、借還書等操作請(qǐng)求,,接口層的Web服務(wù)器把這些用戶請(qǐng)求發(fā)送到中間應(yīng)用層服務(wù)器,應(yīng)用層服務(wù)器再對(duì)數(shù)據(jù)庫進(jìn)行操作,實(shí)現(xiàn)用戶需求,,這種方式需要每一個(gè)圖書館都安裝一套這樣的系統(tǒng),才能讓用戶使用。

然而,,基于云計(jì)算的數(shù)字圖書館,,是以云計(jì)算服務(wù)器為核心、部署動(dòng)態(tài)的和虛擬化的硬件服務(wù)器為組成部分的云計(jì)算系統(tǒng),。用戶在使用云計(jì)算圖書館時(shí),通過應(yīng)用層的操作接入云計(jì)算系統(tǒng), 用戶動(dòng)態(tài)請(qǐng)求能驅(qū)動(dòng)云計(jì)算服務(wù)器動(dòng)態(tài)部署虛擬硬件提供存儲(chǔ)和計(jì)算能力,,從而實(shí)現(xiàn)以云計(jì)算服務(wù)器為平臺(tái)層的“無處不在”的訪問,可以同時(shí)與應(yīng)用層的所有用戶共享數(shù)據(jù)流量和計(jì)算能力,用戶間也可以動(dòng)態(tài)地提供請(qǐng)求和反饋信息。這些存儲(chǔ)信息資源的的服務(wù)器集群根據(jù)云計(jì)算服務(wù)器的控制任務(wù),提供用戶需要的信息,,這種強(qiáng)大的分布式計(jì)算和存儲(chǔ)能力的復(fù)雜網(wǎng)絡(luò)讓用戶省去考慮如何獲取和管理數(shù)據(jù)的麻煩,只需要考慮最終使用這些結(jié)果即可,,從而大大提升搜索效率。

4.2網(wǎng)絡(luò)物理結(jié)構(gòu)圖


(圖4.2.1 基于云計(jì)算的數(shù)字圖書館網(wǎng)絡(luò)物理結(jié)構(gòu)圖)

5 分布式基礎(chǔ)架構(gòu)

5.1Hadoop簡介

Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(Hadoop Distributed File System),,簡稱HDFS,。HDFS有高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來部署在低廉的硬件上,。同時(shí),,它還提供高吞吐量來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集的應(yīng)用程序,。HDFS放寬了(relax)POSIX的要求,,可以以流的形式訪問文件系統(tǒng)中的數(shù)據(jù)。

Hadoop的框架最核心的設(shè)計(jì)就是:HDFS和MapReduce,。HDFS為海量的數(shù)據(jù)提供了存儲(chǔ),,則MapReduce為海量的數(shù)據(jù)提供了計(jì)算。

5.2Hadoop優(yōu)勢(shì)

Hadoop是一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架,。 Hadoop 以一種可靠,、高效、可伸縮的方式進(jìn)行數(shù)據(jù)處理,。Hadoop 是可靠的,,因?yàn)樗僭O(shè)計(jì)算元素和存儲(chǔ)會(huì)失敗,因此它維護(hù)多個(gè)工作數(shù)據(jù)副本,,確保能夠針對(duì)失敗的節(jié)點(diǎn)重新分布處理,。Hadoop 是高效的,因?yàn)樗圆⑿械姆绞焦ぷ?,通過并行處理加快處理速度,。Hadoop 還是可伸縮的,能夠處理 PB 級(jí)數(shù)據(jù),。此外,,Hadoop 依賴于社區(qū)服務(wù),,因此它的成本比較低,任何人都可以使用,。Hadoop是一個(gè)能夠讓用戶輕松架構(gòu)和使用的分布式計(jì)算平臺(tái),。用戶可以輕松地在Hadoop上開發(fā)和運(yùn)行處理海量數(shù)據(jù)的應(yīng)用程序。

5.2.1主要優(yōu)點(diǎn)

1,、  高可靠性,。Hadoop按位存儲(chǔ)和處理數(shù)據(jù)的能力值得人們信賴。

2,、  高擴(kuò)展性,。Hadoop是在可用的計(jì)算機(jī)集簇間分配數(shù)據(jù)并完成計(jì)算任務(wù)的,這些集簇可以方便地?cái)U(kuò)展到數(shù)以千計(jì)的節(jié)點(diǎn)中,。

3,、  高效性。Hadoop能夠在節(jié)點(diǎn)之間動(dòng)態(tài)地移動(dòng)數(shù)據(jù),,并保證各個(gè)節(jié)點(diǎn)的動(dòng)態(tài)平衡,,因此處理速度非常快,。

4,、  高容錯(cuò)性。Hadoop能夠自動(dòng)保存數(shù)據(jù)的多個(gè)副本,,并且能夠自動(dòng)將失敗的任務(wù)重新分配,。

5、  低成本,。與一體機(jī),、商用數(shù)據(jù)倉庫以及QlikView、Yonghong Z-Suite等數(shù)據(jù)集市相比,,hadoop是開源的,,項(xiàng)目的軟件成本因此會(huì)大大降低。

5.2.2大數(shù)據(jù)處理優(yōu)勢(shì)

Hadoop得以在大數(shù)據(jù)處理應(yīng)用中廣泛應(yīng)用得益于其自身在數(shù)據(jù)提取,、變形和加載(ETL)方面上的天然優(yōu)勢(shì),。

Hadoop的分布式架構(gòu),將大數(shù)據(jù)處理引擎盡可能的靠近存儲(chǔ),,對(duì)例如像ETL這樣的批處理操作相對(duì)合適,,因?yàn)轭愃七@樣操作的批處理結(jié)果可以直接走向存儲(chǔ),。Hadoop的MapReduce功能實(shí)現(xiàn)了將單個(gè)任務(wù)打碎,,并將碎片任務(wù)(Map)發(fā)送到多個(gè)節(jié)點(diǎn)上,之后再以單個(gè)數(shù)據(jù)集的形式加載(Reduce)到數(shù)據(jù)倉庫里,。

5.3 分布式部署

Hadoop 由許多元素構(gòu)成,。其最底部是 Hadoop Distributed File System(HDFS),,它存儲(chǔ) Hadoop 集群中所有存儲(chǔ)節(jié)點(diǎn)上的文件。HDFS(對(duì)于本文)的上一層是MapReduce 引擎,,該引擎由 JobTrackers 和 TaskTrackers 組成,。通過對(duì)Hadoop分布式計(jì)算平臺(tái)最核心的分布式文件系統(tǒng)HDFS、MapReduce的處理實(shí)現(xiàn)對(duì)數(shù)字圖書館的分布式部署,。

基于云計(jì)算的數(shù)字圖書館,,旨在利用云計(jì)算相關(guān)技術(shù),實(shí)現(xiàn)一個(gè)“云圖書館”平臺(tái),,在虛擬存儲(chǔ)池上構(gòu)建高校圖書館之間電子資源的共享存儲(chǔ)架構(gòu),,達(dá)到高校圖書館之間存儲(chǔ)設(shè)備的共享的目的。這不僅可以消除地域分布,、系統(tǒng)異構(gòu)等問題造成的共享困難,,有助于實(shí)現(xiàn)資源的統(tǒng)一組織和調(diào)度,還可以大大減少存儲(chǔ)設(shè)備的重復(fù)投入,,提高設(shè)備和資源的利用率,。           

從用戶角度,基于云計(jì)算的數(shù)字圖書館,,使用戶只需通過終端設(shè)備即可訪問各個(gè)資源庫,,在“云圖書館”平臺(tái)上,可同時(shí)檢索到來自中國知網(wǎng),、萬方等不同的數(shù)據(jù)庫中的文獻(xiàn)資源,,避免了分庫檢索的繁瑣;用圖書館建設(shè)的角度,,加入“云圖書館”聯(lián)盟使各個(gè)圖書館不再需要購買大量的數(shù)據(jù)庫資源,,大大減少了資金投入和存儲(chǔ)設(shè)備的額重復(fù)投入等,從而節(jié)約出資金去購買那些費(fèi)用昂貴的數(shù)據(jù)庫資源,。  

“云圖書館”平臺(tái)由一個(gè)聯(lián)合服務(wù)平臺(tái)和多個(gè) 本地圖書館云平臺(tái)構(gòu)成,。聯(lián)合服務(wù)平臺(tái)將不同的本地圖書館云平臺(tái)集成起來,針對(duì)各個(gè)本地圖書館云平臺(tái)提供的不同的OpenAPI,,聯(lián)合服務(wù)平臺(tái)采用一個(gè)統(tǒng)一的API托管服務(wù)中心,,以統(tǒng)一服務(wù)接口方式提供給各個(gè)圖書館并且以統(tǒng)一的界面和操作方式為讀者提供服務(wù)。本地圖書館云平臺(tái)是指各個(gè)圖書館根據(jù)本館已有的大量廉價(jià)的硬件設(shè)施,,將現(xiàn)有設(shè)備通過云計(jì)算的集群技術(shù)連接起來,,構(gòu)成一個(gè)運(yùn)算能力、存儲(chǔ)能力巨大的圖書館應(yīng)用服務(wù)器,。

圖書館云平臺(tái)采用Hadoop框架,,該集群環(huán)境包括一個(gè)主節(jié)點(diǎn)NameNode和多個(gè)子節(jié)點(diǎn)DataNode,NameNode采用元數(shù)據(jù)和副本的方式實(shí)現(xiàn)容錯(cuò),,DataNode則以副本的方式實(shí)現(xiàn)容錯(cuò),,并且采用節(jié)點(diǎn)動(dòng)態(tài)加入技術(shù)來減少擴(kuò)展系統(tǒng)的工作量,。各個(gè)圖書館將放入云環(huán)境中的資源載入到分布式文件系統(tǒng)中,當(dāng)用戶發(fā)起請(qǐng)求時(shí),,將會(huì)生成用于搜索的MapReduce函數(shù),,并行的在DataNode中進(jìn)行任務(wù)搜索,最后輸出最終結(jié)果,。

(圖5.3.1 部署模型圖)

6 詳細(xì)設(shè)計(jì)方案以及架構(gòu)

6.1 基于云計(jì)算的圖書館系統(tǒng)架構(gòu)設(shè)計(jì)

基于云計(jì)算數(shù)字圖書館設(shè)計(jì)方案的邏輯結(jié)構(gòu)將其分為四層,。第一層是服務(wù)層,提供賬戶監(jiān)管,、門戶監(jiān)管,、部署服務(wù)和用戶監(jiān)管等;第二層是管理層,,指出資源監(jiān)管服務(wù)和運(yùn)行調(diào)度職能,;第三層是虛擬化層,指出硬件虛擬化和數(shù)據(jù)資源虛擬化,;第四層是資源層,,包含物理服務(wù)器、互聯(lián)網(wǎng)絡(luò)和存儲(chǔ)設(shè)置,。圖書館系統(tǒng)并通過運(yùn)用分布式技術(shù),、虛擬化、并行計(jì)算等技術(shù),,拓展硬件和軟件設(shè)施職能,,將不相同遠(yuǎn)程操作平臺(tái)的數(shù)字圖書館硬件和軟件資源有效地共同結(jié)合起來。

6.1.1 基礎(chǔ)設(shè)施服務(wù)層

基礎(chǔ)設(shè)施服務(wù)層是基于云計(jì)算數(shù)字圖書館提供云服務(wù),。在整個(gè)框架最底部,,它是集成硬件資源虛擬化技術(shù)和有關(guān)監(jiān)管作用的聯(lián)合。它主要包括兩方面內(nèi)容,,一方面,,通過主機(jī)、存儲(chǔ)設(shè)備,、網(wǎng)絡(luò)等硬件設(shè)置,,采取分布式集群、抽象化和虛擬化處理,,它的虛擬化集群為一體,,組成了整個(gè)云計(jì)算和云服務(wù)根本設(shè)施,使外界看起來像一致性整體,,在使用時(shí),,用戶不必?fù)?dān)心具體使用的哪臺(tái)設(shè)備,只需發(fā)出商定的設(shè)備調(diào)用指令,,既可以得到自己想要的“云”硬件資源,。另一方面,,在基礎(chǔ)設(shè)施硬件分布式集群,、抽象化和虛擬化的根本上,,指出可提供調(diào)用的數(shù)據(jù)存儲(chǔ)監(jiān)管、計(jì)算服務(wù)監(jiān)管,、負(fù)荷監(jiān)管和備份監(jiān)管等接口服務(wù)職能,,為數(shù)字圖書館服務(wù)提供靈活動(dòng)態(tài)的基礎(chǔ)設(shè)備層。

6.1.2 平臺(tái)服務(wù)層

數(shù)字圖書館云服務(wù)的框架第二層是平臺(tái)服務(wù)層[24],,也被稱為“管理中間件層”,。負(fù)責(zé)信息資源管理、程序運(yùn)行監(jiān)管,、讀者監(jiān)管和網(wǎng)絡(luò)安全監(jiān)管等工作,。當(dāng)中,信息資源監(jiān)管負(fù)責(zé)均衡使用云計(jì)算信息資源節(jié)點(diǎn),,監(jiān)控信息資源節(jié)點(diǎn)發(fā)生故障,,倘若節(jié)點(diǎn)發(fā)生故障,中間件層將使其恢復(fù)或?qū)嵭衅帘?,針?duì)資源使用狀況,,采取統(tǒng)計(jì)程序的運(yùn)行監(jiān)管,實(shí)行讀者或提交任務(wù)的應(yīng)用程序,,包含達(dá)成讀者任務(wù)映像部署與監(jiān)管,、程序調(diào)度,程序執(zhí)行,、程序回饋監(jiān)管等讀者監(jiān)管,,是體現(xiàn)云計(jì)算數(shù)字圖書館一個(gè)不可缺少的內(nèi)容,包含提供用戶交互界面,、監(jiān)管和辯別用戶身份,、讀者程序執(zhí)行監(jiān)管、針對(duì)讀者運(yùn)用計(jì)費(fèi)監(jiān)管等網(wǎng)絡(luò)安全監(jiān)管,,主要是確保云計(jì)算設(shè)備的安全性,,防止黑客攻擊,包含讀者身份識(shí)別驗(yàn)證,、訪問控制,、病毒防護(hù)以及其他內(nèi)容。

6.1.3 應(yīng)用服務(wù)層

在數(shù)字圖書館中,,應(yīng)用服務(wù)層處于云計(jì)算服務(wù)系統(tǒng)架構(gòu)第三層,是全部數(shù)字圖書館云服務(wù)系統(tǒng)的重點(diǎn),。采取服務(wù)層提供應(yīng)用軟件和服務(wù),,即為數(shù)字圖書館所需,。數(shù)字圖書館采用應(yīng)用軟件服務(wù)進(jìn)行開展,依據(jù)用戶需要,,通過租賃使用途徑,,把軟件或應(yīng)用程序提供給聯(lián)盟廳和讀者運(yùn)用。提供數(shù)字圖書館核心服務(wù)項(xiàng)目,,這些服務(wù)主要包含書籍監(jiān)管,、數(shù)字資產(chǎn)監(jiān)管、公共信息服務(wù)查詢,、個(gè)性化信息服務(wù)咨詢,、全文訊息搜索、統(tǒng)一資源搜索,、主題訂閱推送服務(wù),、原文傳遞服務(wù)、代查代檢服務(wù),、科技查新服務(wù),、技術(shù)評(píng)估服務(wù)、企業(yè)競爭情報(bào)服務(wù),、參考咨詢服務(wù),、信息服務(wù)及統(tǒng)計(jì)分析等。用戶權(quán)限計(jì)費(fèi)接口模塊重點(diǎn)達(dá)成支付接口的支持,,其對(duì)象包括用戶監(jiān)管,、權(quán)限論證、平臺(tái)計(jì)費(fèi)和平臺(tái)支付接口支持,。系統(tǒng)監(jiān)管和業(yè)務(wù)支持重點(diǎn)達(dá)成系統(tǒng)監(jiān)管和業(yè)務(wù)支持,,以確保體系的正常穩(wěn)定運(yùn)行。

6.1.4 訪問服務(wù)層

訪問層是個(gè)終端進(jìn)入數(shù)字圖書館云平臺(tái)的入口,,是架構(gòu)的最高層,。任何一個(gè)授權(quán)用戶都可以通過標(biāo)準(zhǔn)的公用應(yīng)用接口來登錄,享受云圖書館服務(wù),。云圖書館界面采用Web形式,,向用戶提供統(tǒng)一的服務(wù)界面,并根據(jù)用戶的不同提供相應(yīng)的API實(shí)現(xiàn)注冊(cè),、驗(yàn)證等功能,。

 6.2基于云計(jì)算的圖書館系統(tǒng)總體架構(gòu)圖


(圖6.1.4-1 基于云計(jì)算的圖書館系統(tǒng)總架構(gòu)圖)

6.3 基于云計(jì)算的圖書館系統(tǒng)架構(gòu)實(shí)現(xiàn)
在對(duì)基于云計(jì)算的圖書館系統(tǒng)總體架構(gòu)的實(shí)現(xiàn)上,我們考慮圖書館圖書信息錄入,、圖書檢索以及圖書瀏覽數(shù)據(jù)統(tǒng)計(jì)三個(gè)環(huán)節(jié),。下面分別應(yīng)用HDFS以及MapReduce編程模型來實(shí)現(xiàn)圖書信息錄入過程中的數(shù)據(jù)去重,利用二分查找實(shí)現(xiàn)圖書檢索前的數(shù)據(jù)排序以及圖書館管理員在分類別進(jìn)行圖書瀏覽量統(tǒng)計(jì)時(shí)的取平均數(shù)操作。

基于云計(jì)算的圖書館采用HDFS進(jìn)行數(shù)據(jù)存儲(chǔ),,HDFS作為一種新興的并行文件系統(tǒng),,和現(xiàn)有的分布式文件系統(tǒng)相似,他們都是運(yùn)行在普通硬件之上的分布式文件系統(tǒng),,然而HDFS與其他分布式文件系統(tǒng)也存在著一些差別,。如HDFS具有高容錯(cuò)性,可以部署在低成本的硬件之上,,同時(shí)放松了對(duì)POSIX的需求,,使其可以以流的形式訪問文件數(shù)據(jù),,非常適合大數(shù)據(jù)集的應(yīng)用程序,。

同時(shí),在基于云計(jì)算的圖書館架構(gòu)中的圖書信息錄入環(huán)節(jié),,我們考慮利用MapReduce方法來進(jìn)行數(shù)據(jù)去重,。

6.3.1圖書信息的HDFS存儲(chǔ)描述

基于云計(jì)算的圖書館采用HDFS進(jìn)行數(shù)據(jù)存儲(chǔ),HDFS的體系框架是Master/Slave結(jié)構(gòu),,一個(gè)典型的HDFS通常由單個(gè)NameNode和多個(gè)DataNode組成,。NameNode是一個(gè)中心服務(wù)器,負(fù)責(zé)文件系統(tǒng)的名字空間的操作,,比如打開,、關(guān)閉、重命名文件或目錄,,它負(fù)責(zé)維護(hù)文件路徑到數(shù)據(jù)塊的映射,,數(shù)據(jù)塊到DataNode的映射,以及監(jiān)控DataNode的心跳和維護(hù)數(shù)據(jù)塊副本的個(gè)數(shù),。集群中的DataNode一般是一個(gè)節(jié)點(diǎn)一個(gè),,負(fù)責(zé)管理它所在節(jié)點(diǎn)上的存儲(chǔ)。HDFS暴露了文件系統(tǒng)的名字空間,,用戶能夠以文件的形式在上面存儲(chǔ)數(shù)據(jù),。從內(nèi)部看,一個(gè)文件其實(shí)被分成一個(gè)或多個(gè)數(shù)據(jù)塊,,這些塊存儲(chǔ)在一組DataNode上,。DataNode負(fù)責(zé)處理文件系統(tǒng)客戶端的讀寫請(qǐng)求。在NameNode的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)塊的創(chuàng)建,、刪除和復(fù)制,。

6.3.2 圖書信息錄入時(shí)的數(shù)據(jù)去重

數(shù)據(jù)去重的最終目標(biāo)是讓原始數(shù)據(jù)中出現(xiàn)次數(shù)超過一次的數(shù)據(jù)在輸出文件中只出現(xiàn)一次。我們要求同一本書不能重復(fù)的錄入到圖書館信息,,所有我們自然而然會(huì)想到將同一個(gè)數(shù)據(jù)的所有記錄都交給一臺(tái) reduce 機(jī)器,,無論這個(gè)數(shù)據(jù)出現(xiàn)多少次,只要在最終結(jié)果中輸出一次就可以了。具體就是 reduce 的輸入應(yīng)該以數(shù)據(jù)作為 key,,而對(duì) value-list則沒有要求,。當(dāng) reduce接收到一個(gè)<key,value-list>時(shí)就直接將 key 復(fù)制到輸出的 key 中,,并將 value 設(shè)置成空值,。

在 MapReduce 流程中,map 的輸出<key,,value>經(jīng)過 shuffle 過程聚集成<key,,value-list> 后會(huì)交給 reduce。所以從設(shè)計(jì)好的 reduce 輸入可以反推出 map 的輸出 key 應(yīng)為數(shù)據(jù),,value 任意,。繼續(xù)反推,map 輸出數(shù)據(jù)的 key 為數(shù)據(jù),,而在這個(gè)實(shí)例中每個(gè)數(shù)據(jù)代表輸入文件中的 一行內(nèi)容,,所以 map 階段要完成的任務(wù)就是在采用Hadoop 默認(rèn)的作業(yè)輸入方式之后,將value 設(shè)置為 key,,并直接輸出(輸出中的 value 任意),。map 中的結(jié)果經(jīng)過 shuffle過程之后 交給 reduce。reduce 階段不會(huì)管每個(gè) key 有多少個(gè) value,,它直接將輸入的 key 復(fù)制為輸出 的 key,,并輸出就可以了(輸出中的 value 被設(shè)置成空了)。

  1. package com.hebut.mr;
  2. import java.io.IOException;
  3. import org.apache.hadoop.conf.Configuration;
  4. import org.apache.hadoop.fs.Path;
  5. import org.apache.hadoop.io.IntWritable;
  6. import org.apache.hadoop.io.Text;
  7. import org.apache.hadoop.mapreduce.Job;
  8. import org.apache.hadoop.mapreduce.Mapper;
  9. import org.apache.hadoop.mapreduce.Reducer;
  10. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  11. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  12. import org.apache.hadoop.util.GenericOptionsParser;
  13. public class Dedup {
  14. //map將輸入中的value復(fù)制到輸出數(shù)據(jù)的key上,,并直接輸出
  15. public static class Map extends Mapper

6.3.3圖書檢索前的數(shù)據(jù)排序

這個(gè)實(shí)例僅僅要求對(duì)輸入數(shù)據(jù)進(jìn)行排序,,熟悉 MapReduce 過程的讀者會(huì)很快想到在 MapReduce 過程中就有排序,是否可以利用這個(gè)默認(rèn)的排序,,而不需要自己再實(shí)現(xiàn)具體的排序呢?答案是肯定的,。

但是在使用之前首先需要了解它的默認(rèn)排序規(guī)則。它是按照 key 值進(jìn)行排序的,,如果 key 為封裝 int 的 IntWritable 類型,,那么 MapReduce 按照數(shù)字大小對(duì) key 排序,如果 key 為封裝為 String 的 Text 類型,,那么 MapReduce 按照字典順序?qū)ψ址判颉?/span>

了解了這個(gè)細(xì)節(jié),,我們就知道應(yīng)該使用封裝 int 的 IntWritable 型數(shù)據(jù)結(jié)構(gòu)了。也就是在 map 中將讀入的數(shù)據(jù)轉(zhuǎn)化成 IntWritable 型,,然后作為 key 值輸出(value 任意),。reduce 拿到 <key,value-list>之后,,將輸入的 key 作為 value 輸出,,并根據(jù) value-list 中元素的個(gè)數(shù)決定 輸出的次數(shù),。輸出的 key(即代碼中的 linenum)是一個(gè)全局變量,它統(tǒng)計(jì)當(dāng)前 key 的位次,。 需要注意的是這個(gè)程序中沒有配置 Combiner,,也就是在 MapReduce 過程中不使用 Combiner。 這主要是因?yàn)槭褂?map 和 reduce 就已經(jīng)能夠完成任務(wù)了,。

  1. package com.hebut.mr;
  2. import java.io.IOException;
  3. import org.apache.hadoop.conf.Configuration;
  4. import org.apache.hadoop.fs.Path;
  5. import org.apache.hadoop.io.IntWritable;
  6. import org.apache.hadoop.io.Text;
  7. import org.apache.hadoop.mapreduce.Job;
  8. import org.apache.hadoop.mapreduce.Mapper;
  9. import org.apache.hadoop.mapreduce.Reducer;
  10. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  11. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  12. import org.apache.hadoop.util.GenericOptionsParser;
  13. public class Sort {
  14. // map 將輸入中的 value 化成 IntWritable 類型,,作為輸出的 key
  15. public static class Map extends Mapper

6.3.4 各類別圖書平均瀏覽量統(tǒng)計(jì)

計(jì)算學(xué)生平均成績是一個(gè)仿“WordCount”例子,用來重溫一下開發(fā) MapReduce 程序的 流程,。程序包括兩部分的內(nèi)容:Map部分和Reduce部分,,分別實(shí)現(xiàn)了map和reduce的功能。

Map 處理的是一個(gè)純文本文件,,文件中存放的數(shù)據(jù)時(shí)每一行表示一個(gè)學(xué)生的姓名和他相應(yīng)一科成績,。Mapper 處理的數(shù)據(jù)是由 InputFormat 分解過的數(shù)據(jù)集,其中 InputFormat 的 作用是將數(shù)據(jù)集切割成小數(shù)據(jù)集 InputSplit,,每一個(gè) InputSlit 將由一個(gè) Mapper 負(fù)責(zé)處理,。此 外,,InputFormat 中還 供了一個(gè) RecordReader 的實(shí)現(xiàn),,并將一個(gè) InputSplit 解析成<key,value>對(duì) 供給了 map 函數(shù)。InputFormat 的默認(rèn)值是 TextInputFormat,,它針對(duì)文本文件,,按行將 文本切割成 InputSlit,并用 LineRecordReader 將 InputSplit 解析成<key,value>對(duì),,key 是行在 文本中的位置,,value 是文件中的一行。

Map 的結(jié)果會(huì)通過 partion 分發(fā)到 Reducer,,Reducer 做完 Reduce 操作后,,將通過以格 式 OutputFormat 輸出。

Mapper 最終處理的結(jié)果對(duì)<key,value>,,會(huì)送到 Reducer 中進(jìn)行合并,,合并的時(shí)候,有相同 key 的鍵/值對(duì)則送到同一個(gè) Reducer 上,。Reducer 是所有用戶定制 Reducer 類地基礎(chǔ),, 它的輸入是 key 和這個(gè) key 對(duì)應(yīng)的所有 value 的一個(gè)迭代器,同時(shí)還有 Reducer 的上下文,。 Reduce 的結(jié)果由 Reducer.Context 的 write 方法輸出到文件中,。

  1. package com.hebut.mr;
  2. import java.io.IOException;
  3. import java.util.Iterator;
  4. import java.util.StringTokenizer;
  5. import org.apache.hadoop.conf.Configuration;
  6. import org.apache.hadoop.fs.Path;
  7. import org.apache.hadoop.io.IntWritable;
  8. import org.apache.hadoop.io.LongWritable;
  9. import org.apache.hadoop.io.Text;
  10. import org.apache.hadoop.mapreduce.Job;
  11. import org.apache.hadoop.mapreduce.Mapper;
  12. import org.apache.hadoop.mapreduce.Reducer;
  13. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  14. import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
  15. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  16. import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
  17. import org.apache.hadoop.util.GenericOptionsParser;
  18. public class PageView{
  19. public static class Map extends Mapper {
  20. // 實(shí)現(xiàn) map 函數(shù)
  21. public void map(LongWritable key, Text value, Context context)
  22. throws IOException,InterruptedException
  23. {
  24. // 將輸入的純文本文件的數(shù)據(jù)轉(zhuǎn)化成 String
  25. String line = value.toString();
  26. // 將輸入的數(shù)據(jù)首先按行進(jìn)行分割
  27. StringTokenizer tokenizerArticle = new StringTokenizer(line, "\n");
  28. // 分別對(duì)每一行進(jìn)行處理
  29. while (tokenizerArticle.hasMoreElements()) {
  30. // 每行按空格劃分
  31. StringTokenizer tokenizerLine = new StringTokenizer(
  32. tokenizerArticle.nextToken());
  33. String strName = tokenizerLine.nextToken();// 名稱部分
  34. String strPageView = tokenizerLine.nextToken();//瀏覽量部分
  35. Text name = new Text(strName);
  36. int pageviewInt = Integer.parseInt(strPageView);
  37. // 輸出書名和瀏覽量
  38. context.write(name, new IntWritable(pageviewInt));
  39. }
  40. }
  41. }
  42. public static class Reduce extends Reducer {
  43. // 實(shí)現(xiàn) reduce 函數(shù)
  44. public void reduce(Text key, Iterable values,Context context)throws IOException,InterruptedException
  45. {
  46. int sum = 0;
  47. int count = 0;
  48. Iterator iterator = values.iterator();
  49. while (iterator.hasNext()) {
  50. sum += iterator.next().get();// 計(jì)算總瀏覽量
  51. count++;// 統(tǒng)計(jì)總的圖書本數(shù) }
  52. int average = (int) sum / count;// 計(jì)算平均成績
  53. context.write(key, new IntWritable(average));
  54. }
  55. }
  56. public static void main(String[] args) throws Exception {
  57. Configuration conf = new Configuration();
  58. conf.set("mapred.job.tracker", "192.168.1.2:9001");
  59. Job job = new Job(conf, "PageView Average");
  60. job.setJarByClass(PageView.class);
  61. // 設(shè)置 Map、Combine 和 Reduce 處理類
  62. job.setMapperClass(Map.class);
  63. job.setCombinerClass(Reduce.class);
  64. job.setReducerClass(Reduce.class);
  65. // 設(shè)置輸出類型
  66. job.setOutputKeyClass(Text.class);
  67. job.setOutputValueClass(IntWritable.class);
  68. // 將輸入的數(shù)據(jù)集分割成小數(shù)據(jù)塊splites,, 供一個(gè)RecordReder的實(shí)現(xiàn)
  69. job.setInputFormatClass(TextInputFormat.class);
  70. // 供一個(gè) RecordWriter 的實(shí)現(xiàn),,負(fù)責(zé)數(shù)據(jù)輸出
  71. job.setOutputFormatClass(TextOutputFormat.class);
  72. // 設(shè)置輸入和輸出目錄
  73. FileInputFormat.addInputPath(job, new Path("/home/zhaojing/input3.txt"));
  74. FileOutputFormat.setOutputPath(job, new Path("/home/zhaojing/output3"));
  75. System.exit(job.waitForCompletion(true) ? 0 : 1);
  76. }
  77. }

7 設(shè)計(jì)總結(jié)

7.1內(nèi)容總結(jié)

本次課程設(shè)計(jì)針對(duì)網(wǎng)絡(luò)建設(shè)長期存在的建設(shè)成本高、管理維護(hù)困難、更新?lián)Q代快等難題,,以基于云計(jì)算和大數(shù)據(jù)的圖書館應(yīng)用系統(tǒng)建設(shè)設(shè)計(jì)為例,,分析講解了分布式集群相比于非分布式集群的優(yōu)勢(shì)以及應(yīng)用趨勢(shì),同時(shí)對(duì)基于云計(jì)算的圖書館應(yīng)用系統(tǒng)的可行性進(jìn)行了詳細(xì)的分析,,列出了云計(jì)算技術(shù)應(yīng)用于圖書館的明顯優(yōu)勢(shì),;基于現(xiàn)有的圖書館基本架構(gòu)進(jìn)行了基于云計(jì)算的圖書館應(yīng)用系統(tǒng)物理結(jié)構(gòu)設(shè)計(jì),并繪制了相應(yīng)的網(wǎng)絡(luò)物理結(jié)構(gòu)圖,;從分布式基礎(chǔ)架構(gòu)Hadoop的主要優(yōu)點(diǎn)以及大數(shù)據(jù)處理優(yōu)勢(shì)開始著手基于云計(jì)算的圖書館應(yīng)用系統(tǒng)的詳細(xì)設(shè)計(jì)方案,;其中,分別對(duì)系統(tǒng)架構(gòu)的基礎(chǔ)設(shè)施服務(wù)層,、平臺(tái)服務(wù)層,、應(yīng)用服務(wù)層以及訪問服務(wù)層進(jìn)行了詳細(xì)了設(shè)計(jì)描述,同時(shí)繪制了清晰了的圖書館系統(tǒng)總體架構(gòu)圖,;最后應(yīng)用HDFS和MapReduce編程模型針對(duì)圖書館系統(tǒng)中圖書信息錄入,、圖書檢查以及圖書瀏覽量統(tǒng)計(jì)三個(gè)環(huán)節(jié)進(jìn)行了示例性的編碼實(shí)現(xiàn),成功的完成了本次課程設(shè)計(jì)的全部內(nèi)容,。

7.2 工作總結(jié)

本次課程設(shè)計(jì)的完成主要依賴于云計(jì)算機(jī)基礎(chǔ)課程老師講授的相關(guān)知識(shí),,再加上適當(dāng)?shù)南嚓P(guān)參考文獻(xiàn)的閱讀,才得以將整個(gè)基于云計(jì)算的圖書館應(yīng)用系統(tǒng)建設(shè)設(shè)計(jì)很好的完成,。在最后的示例性編碼實(shí)現(xiàn)環(huán)節(jié),,主要從MapReduce的映射、歸于核心思想入手,,簡要的抽取出圖書館應(yīng)用系統(tǒng)中相應(yīng)的使用環(huán)節(jié),,應(yīng)用云計(jì)算基礎(chǔ)課程中實(shí)驗(yàn)課上學(xué)習(xí)到的MapReduce編程模式的使用方法加以編碼實(shí)現(xiàn)。

通過本次基于云計(jì)算的圖書館應(yīng)用系統(tǒng)建設(shè)設(shè)計(jì),,加深了我對(duì)云計(jì)算大數(shù)據(jù)的理解,,通過實(shí)際的應(yīng)用系統(tǒng)建設(shè)設(shè)計(jì),提高了我的分析設(shè)計(jì)以及解決問題的能力,。同時(shí)也讓我清晰的認(rèn)識(shí)到了云計(jì)算以及大數(shù)據(jù)的明顯優(yōu)勢(shì)和應(yīng)用趨勢(shì),。

除了對(duì)云計(jì)算機(jī)基礎(chǔ)相關(guān)知識(shí)的進(jìn)一步提高,本次課程設(shè)計(jì)還引導(dǎo)我對(duì)基于云計(jì)算的圖書館應(yīng)用系統(tǒng)進(jìn)行了深入分析,,由此,,我對(duì)基于云計(jì)算的圖書館設(shè)計(jì)還有如下看法。

云計(jì)算數(shù)字圖書館實(shí)現(xiàn)以用戶為核心的理念,,極大地改善用戶的體驗(yàn),。云計(jì)算在IT行業(yè)的應(yīng)用正處在發(fā)展階段。在圖書館的應(yīng)用,,先進(jìn)性可從云終端的應(yīng)用體現(xiàn)出來,,云計(jì)算的出現(xiàn),,給圖書館的發(fā)展帶來發(fā)展的空間,云計(jì)算技術(shù)的應(yīng)用給圖書館的發(fā)展也帶來了創(chuàng)新發(fā)展的機(jī)遇,,任何一項(xiàng)技術(shù)都不是完美無缺的,, 在應(yīng)用的過程中,技術(shù)的不足就和技術(shù)的先進(jìn)性一樣能激發(fā)人們改進(jìn)和完善的想象力和創(chuàng)造力,,技術(shù)是給人服務(wù)的,,而圖書館的服務(wù)也同樣因?yàn)樾录夹g(shù)而發(fā)生變化,在科學(xué)的研究和合理的應(yīng)用后,,技術(shù)必然會(huì)給我們的服務(wù)帶來巨大的推動(dòng)作用,。

云計(jì)算技術(shù)的魅力, 在圖書館的服務(wù)中尤其能得到展示和認(rèn)可,,云服務(wù)改變了圖書館服務(wù)的模式,,給圖書館的服務(wù)帶來了積極的影響,特別是給讀者帶來了極大的方便,,但是圖書館人不能僅僅只是依賴,、依靠技術(shù),技術(shù)是我們服務(wù)的手段,,只有在圖書館的服務(wù)中,,才能去檢驗(yàn)其帶給我們的發(fā)展和變化,技術(shù)本身也才能得到完善和發(fā)展,。

 

 

 參考文獻(xiàn)

[1]李軍.大數(shù)據(jù):從海量到精準(zhǔn)[M].北京:清華大學(xué)出版社,,2014

[2]趙勇.架構(gòu)大數(shù)據(jù)-大數(shù)據(jù)技術(shù)及算法解析[M].北京:電子工業(yè)出版社,2015.6

[3]王宏志.大數(shù)據(jù)算法[M].北京:機(jī)械工業(yè)出版社,,2015.7

[4]Alex Holmes.Hadoop硬實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2015.1

[5]萬川梅,謝正蘭.Hadoop應(yīng)用開發(fā)實(shí)戰(zhàn)詳解[M].北京:中國鐵道出版社,,2014.8
[6]郭紅英.云計(jì)算環(huán)境下高校圖書館用戶服務(wù)模式發(fā)展研究.圖書館理論與實(shí)踐[J].2011年第2 期:84-85. 

[7]李永先,欒旭倫,李森森.云計(jì)算技術(shù)在圖書館中的應(yīng)用探討[J].江西圖書館學(xué)刊.2009(1):105-106. 

[8]胡小菁,范并思.云計(jì)算給圖書館管理帶來挑戰(zhàn).大學(xué)圖書館學(xué)報(bào),,2009(4)

[9]盧曉娟.云計(jì)算與未來圖書館數(shù)字信息資源建設(shè)[J].四川圖書館學(xué)報(bào).2009(2):23-24 

[10]陳康,鄭緯民.云計(jì)算:系統(tǒng)實(shí)例與研究現(xiàn)狀[J].軟件學(xué)報(bào).2009.20(5 ): 1337-1348





    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多