日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

基于云計算和大數據的圖書館 應用系統建設設計

 草綠色 2019-10-25

1 序言

隨著世界的發(fā)展,人們對計算機性能的要求越來越高。以前人們把重點都放到了提升單臺計算機性能上面,但如今單臺計算機的性能已經到達了瓶頸,而人們對計算機性能的需求卻越來越強烈。近幾年,隨著新技術的出現和發(fā)展,尤其是云計算技術的出現,以及大數據的運用,對網絡技術帶來了革命的轉變,如何順應時代發(fā)展并將新技術應用于信息化建設中,改變傳統的教學模式和學習模式至關重要。面對網絡建設長期存在幾個難題:建設成本高、管理維護困難、更新換代快,我們應該如何應用云計算技術巧妙的應對呢?

 本設計將以網絡建設和大數據分析為目標,將云計算技術合理運用到圖書館系統網絡建設中,合理、高效地完成實踐教學,解決整個圖書館應用系統在運行維護中出現的各種問題。

2 設計目的

2.1非分布式集群的不足

互聯網的相關技術不斷向前發(fā)展,人們日益習慣于經由互聯網查閱和獲得信息資源,傳統圖書館的業(yè)務范疇是以紙質資源為基礎的,而在數字圖書館領域中,信息有著林林總總的表現形式:圖像、文檔、音頻、視頻等等,在數字圖書館中,此類多媒體信息是不可缺少的。因此數字圖書館要管理的數據量越來越大,加之網絡技術獲得了前所未有的高速發(fā)展,移動寬帶網絡走進人們的視野,移動智能終端得到了廣泛的普及,與互聯網相連接的移動設備也越來越多。由此對互聯網而言,它的系統負載也越來越大,這就要求它務必擁有大量地消化和整理數據的超強能力。

然而,傳統的數字圖書館服務構建模式明顯不能響應這樣的需求。如果通過高性能的設備來解決問題,那樣成本太高。即使在舍得花大成本的情況下,傳統非分布集群依舊不能很好的處理網絡管理維護困難、更新換代快的問題。然而這一切問題,分布式系統都能夠很好的解決。

2.2 分布式集群介紹

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

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

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

2.3.1 相比于集中系統

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

2、速度。對分布式系統和并行系統進行對比之后可以發(fā)現,分布式系統可以達到并行系統所追求的目標,即用最快的速度完成一個任務。

        3、固有的分布性。建立分布式系統的另一原因在于一些應用本身是分布式的。

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

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

  從長遠的角度來看,主要的驅動力將是大量個人計算機的存在和人們共同工作與信息共享的需要,這種信息共享必需是以一種方便的形式進行的,而不受地理或人員、數據,機器的物理分布的影響。

2.3.2 相比于獨立PC

1、數據共享。在實際的工作生活當中,許多用戶都需要共享數據,共享數據是許多應用的基礎,所以計算機間必須互聯,而計算機互聯就產生了分布式系統。

        2、設備共享。共享并不只是僅僅涉及數據。昂的外,例如彩色激光打印機,照相排版機以及大型存儲設備(如自點唱機)都是共享

        3、通信。分布式系可以增人與人之的溝通。件比信件、電話真有更多的人之。它比信件快的多,不像電話需要兩人同都在,也不像真,它所生的文件可在算機中編輯、重排和存,也可以由文本處理程序來處理。

        4、靈活性。分布式系可能比每個用一個獨立的算機更靈活。分布式系統可以使工作負荷能更有效地在計算機系統中進行分配。系統中某些計算機的失效也可以通過使其工作在其它計算機上進行而得到補償。

2.4 分布式集群的必要性

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

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

3可行性分析

3.1圖書館基本模式于不足

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

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

 3.2 云計算和大數據趨勢

 3.2.1 云計算基本介紹

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

這一特點使個人計算機能以最小化的性能完成最大化的功能,這樣的搜索效率正是數字圖書館需要想實現的。用戶用最簡便的操作滿足最復雜的需求,而這些需求應該是用戶定制的,非結構化的,同時能夠把用戶需要的結果在最短的時間內傳遞給用戶最方便訪問的網絡設備上,這就要求數字圖書館做到應用的復雜性和使用的便利性兩者的完美結合,即放棄傳統的系統架構,采用云計算的模式?;谠朴嬎慵軜嫷臄底謭D書館可以稱為“云圖書館”。

3.2.1云計算應用于圖書館的優(yōu)勢

1、超強的計算能力

通過一定的協調調度。云計算模式可以通過數萬乃至百萬的普通計算機之間的聯合來提供超強的、可以與超級計算機相抗衡的計算能力。使用戶完成單臺計算機根本無法完成的任務。在“云”中,使用者只要輸入簡單指令即能得到大量信息。因為在云計算模式中,人們不是從自己的計算機上,也不是從某個指定的服務器上,而是從互聯網絡上,通過各種設備(如移動終端等)獲得所需的信息,因此其速度得到了質的飛躍。  

2、以用戶為中心

在云計算模式中,相關的數據存儲在“云”之中,用戶可以在任何時間、任何地點都可以以某種便捷、方便、安全的方式獲得云中的相關的信息或服務。雖然在“云”里有成千上萬臺計算機為其提供服務,但對于“云”外的用戶來說,他看到只是一個統一的接口界面,用戶使用云服務就如通過互聯網使用本地計算機一樣的方便。  

3、實現綠色數據計算

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

4、降低了數據外泄的可能性

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

5、經濟實惠

云計算中,用戶只需花少量的錢來租用相關的云服務商所提供的相關服務即可。它可以讓用戶利用很少的投資獲得較大的回報。不必擔心自己所購買的IT產品被淘汰,因為具體的硬件配置和更新都是由云服務提供商來提供的。用戶所需做的只是通過各種設備享受云服務所提供自己需求的信息、知識、服務等。

3.2.3 云計算關鍵技術

云計算是超級計算方式的一種新型體現,以數據為中心,是超級計算中數據密集型的表現。它具備自身獨特的技術,主要體現在數據管理,編程模式,數據存儲等方面。

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

下面從文件系統、并行數據處理和虛擬化技術方面介紹三類相關技術。

1、  文件系統技術

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

2、  并行數據處理技術

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

3、  虛擬化技術

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

4 物理結構設計

4.1 基于云計算的數字圖書館基本架構

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

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

4.2網絡物理結構圖


(圖4.2.1 基于云計算的數字圖書館網絡物理結構圖)

5 分布式基礎架構

5.1Hadoop簡介

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

Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數據提供了存儲,則MapReduce為海量的數據提供了計算。

5.2Hadoop優(yōu)勢

Hadoop是一個能夠對大量數據進行分布式處理的軟件框架。 Hadoop 以一種可靠、高效、可伸縮的方式進行數據處理。Hadoop 是可靠的,因為它假設計算元素和存儲會失敗,因此它維護多個工作數據副本,確保能夠針對失敗的節(jié)點重新分布處理。Hadoop 是高效的,因為它以并行的方式工作,通過并行處理加快處理速度。Hadoop 還是可伸縮的,能夠處理 PB 級數據。此外,Hadoop 依賴于社區(qū)服務,因此它的成本比較低,任何人都可以使用。Hadoop是一個能夠讓用戶輕松架構和使用的分布式計算平臺。用戶可以輕松地在Hadoop上開發(fā)和運行處理海量數據的應用程序。

5.2.1主要優(yōu)點

1、  高可靠性。Hadoop按位存儲和處理數據的能力值得人們信賴。

2、  高擴展性。Hadoop是在可用的計算機集簇間分配數據并完成計算任務的,這些集簇可以方便地擴展到數以千計的節(jié)點中。

3、  高效性。Hadoop能夠在節(jié)點之間動態(tài)地移動數據,并保證各個節(jié)點的動態(tài)平衡,因此處理速度非??臁?/span>

4、  高容錯性。Hadoop能夠自動保存數據的多個副本,并且能夠自動將失敗的任務重新分配。

5、  低成本。與一體機、商用數據倉庫以及QlikView、Yonghong Z-Suite等數據集市相比,hadoop是開源的,項目的軟件成本因此會大大降低。

5.2.2大數據處理優(yōu)勢

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

Hadoop的分布式架構,將大數據處理引擎盡可能的靠近存儲,對例如像ETL這樣的批處理操作相對合適,因為類似這樣操作的批處理結果可以直接走向存儲。Hadoop的MapReduce功能實現了將單個任務打碎,并將碎片任務(Map)發(fā)送到多個節(jié)點上,之后再以單個數據集的形式加載(Reduce)到數據倉庫里。

5.3 分布式部署

Hadoop 由許多元素構成。其最底部是 Hadoop Distributed File System(HDFS),它存儲 Hadoop 集群中所有存儲節(jié)點上的文件。HDFS(對于本文)的上一層是MapReduce 引擎,該引擎由 JobTrackers 和 TaskTrackers 組成。通過對Hadoop分布式計算平臺最核心的分布式文件系統HDFS、MapReduce的處理實現對數字圖書館的分布式部署。

基于云計算的數字圖書館,旨在利用云計算相關技術,實現一個“云圖書館”平臺,在虛擬存儲池上構建高校圖書館之間電子資源的共享存儲架構,達到高校圖書館之間存儲設備的共享的目的。這不僅可以消除地域分布、系統異構等問題造成的共享困難,有助于實現資源的統一組織和調度,還可以大大減少存儲設備的重復投入,提高設備和資源的利用率。           

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

“云圖書館”平臺由一個聯合服務平臺和多個 本地圖書館云平臺構成。聯合服務平臺將不同的本地圖書館云平臺集成起來,針對各個本地圖書館云平臺提供的不同的OpenAPI,聯合服務平臺采用一個統一的API托管服務中心,以統一服務接口方式提供給各個圖書館并且以統一的界面和操作方式為讀者提供服務。本地圖書館云平臺是指各個圖書館根據本館已有的大量廉價的硬件設施,將現有設備通過云計算的集群技術連接起來,構成一個運算能力、存儲能力巨大的圖書館應用服務器。

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

(圖5.3.1 部署模型圖)

6 詳細設計方案以及架構

6.1 基于云計算的圖書館系統架構設計

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

6.1.1 基礎設施服務層

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

6.1.2 平臺服務層

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

6.1.3 應用服務層

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

6.1.4 訪問服務層

訪問層是個終端進入數字圖書館云平臺的入口,是架構的最高層。任何一個授權用戶都可以通過標準的公用應用接口來登錄,享受云圖書館服務。云圖書館界面采用Web形式,向用戶提供統一的服務界面,并根據用戶的不同提供相應的API實現注冊、驗證等功能。

 6.2基于云計算的圖書館系統總體架構圖


(圖6.1.4-1 基于云計算的圖書館系統總架構圖)

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

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

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

6.3.1圖書信息的HDFS存儲描述

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

6.3.2 圖書信息錄入時的數據去重

數據去重的最終目標是讓原始數據中出現次數超過一次的數據在輸出文件中只出現一次。我們要求同一本書不能重復的錄入到圖書館信息,所有我們自然而然會想到將同一個數據的所有記錄都交給一臺 reduce 機器,無論這個數據出現多少次,只要在最終結果中輸出一次就可以了。具體就是 reduce 的輸入應該以數據作為 key,而對 value-list則沒有要求。當 reduce接收到一個<key,value-list>時就直接將 key 復制到輸出的 key 中,并將 value 設置成空值。

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

  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復制到輸出數據的key上,并直接輸出
  15. public static class Map extends Mapper

6.3.3圖書檢索前的數據排序

這個實例僅僅要求對輸入數據進行排序,熟悉 MapReduce 過程的讀者會很快想到在 MapReduce 過程中就有排序,是否可以利用這個默認的排序,而不需要自己再實現具體的排序呢?答案是肯定的。

但是在使用之前首先需要了解它的默認排序規(guī)則。它是按照 key 值進行排序的,如果 key 為封裝 int 的 IntWritable 類型,那么 MapReduce 按照數字大小對 key 排序,如果 key 為封裝為 String 的 Text 類型,那么 MapReduce 按照字典順序對字符串排序。

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

  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 各類別圖書平均瀏覽量統計

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

Map 處理的是一個純文本文件,文件中存放的數據時每一行表示一個學生的姓名和他相應一科成績。Mapper 處理的數據是由 InputFormat 分解過的數據集,其中 InputFormat 的 作用是將數據集切割成小數據集 InputSplit,每一個 InputSlit 將由一個 Mapper 負責處理。此 外,InputFormat 中還 供了一個 RecordReader 的實現,并將一個 InputSplit 解析成<key,value>對 供給了 map 函數。InputFormat 的默認值是 TextInputFormat,它針對文本文件,按行將 文本切割成 InputSlit,并用 LineRecordReader 將 InputSplit 解析成<key,value>對,key 是行在 文本中的位置,value 是文件中的一行。

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

Mapper 最終處理的結果對<key,value>,會送到 Reducer 中進行合并,合并的時候,有相同 key 的鍵/值對則送到同一個 Reducer 上。Reducer 是所有用戶定制 Reducer 類地基礎, 它的輸入是 key 和這個 key 對應的所有 value 的一個迭代器,同時還有 Reducer 的上下文。 Reduce 的結果由 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. // 實現 map 函數
  21. public void map(LongWritable key, Text value, Context context)
  22. throws IOException,InterruptedException
  23. {
  24. // 將輸入的純文本文件的數據轉化成 String
  25. String line = value.toString();
  26. // 將輸入的數據首先按行進行分割
  27. StringTokenizer tokenizerArticle = new StringTokenizer(line, "\n");
  28. // 分別對每一行進行處理
  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. // 實現 reduce 函數
  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();// 計算總瀏覽量
  51. count++;// 統計總的圖書本數 }
  52. int average = (int) sum / count;// 計算平均成績
  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. // 設置 Map、Combine 和 Reduce 處理類
  62. job.setMapperClass(Map.class);
  63. job.setCombinerClass(Reduce.class);
  64. job.setReducerClass(Reduce.class);
  65. // 設置輸出類型
  66. job.setOutputKeyClass(Text.class);
  67. job.setOutputValueClass(IntWritable.class);
  68. // 將輸入的數據集分割成小數據塊splites, 供一個RecordReder的實現
  69. job.setInputFormatClass(TextInputFormat.class);
  70. // 供一個 RecordWriter 的實現,負責數據輸出
  71. job.setOutputFormatClass(TextOutputFormat.class);
  72. // 設置輸入和輸出目錄
  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 設計總結

7.1內容總結

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

7.2 工作總結

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

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

除了對云計算機基礎相關知識的進一步提高,本次課程設計還引導我對基于云計算的圖書館應用系統進行了深入分析,由此,我對基于云計算的圖書館設計還有如下看法。

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

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

 

 

 參考文獻

[1]李軍.大數據:從海量到精準[M].北京:清華大學出版社,2014

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

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

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

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

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

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

[9]盧曉娟.云計算與未來圖書館數字信息資源建設[J].四川圖書館學報.2009(2):23-24 

[10]陳康,鄭緯民.云計算:系統實例與研究現狀[J].軟件學報.2009.20(5 ): 1337-1348





    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多