大數(shù)據(jù)需要特殊的技術(shù),以有效地處理大量的容忍經(jīng)過時間內(nèi)的數(shù)據(jù)。適用于大數(shù)據(jù)的技術(shù),包括大規(guī)模并行處理(MPP)數(shù)據(jù)庫、分布式文件系統(tǒng)、分布式數(shù)據(jù)庫、云計算平臺、互聯(lián)網(wǎng)和可擴展的存儲系統(tǒng)。
一、大規(guī)模并行處理(MPP)數(shù)據(jù)庫
(一)定義
并行處理(ParallelProcessing)是計算機系統(tǒng)中能同時執(zhí)行兩個或更多個處理機的一種計算方法。處理機可同時工作于同一程序的不同方面。并行處理的主要目的是節(jié)省大型和復(fù)雜問題的解決時間。為使用并行處理,首先需要對程序進行并行化處理,也就是說將工作各部分分配到不同處理機中。而主要問題是并行是一個相互依靠性問題,而不能自動實現(xiàn)。此外,并行也不能保證加速。但是一個在n個處理機上執(zhí)行的程序速度可能會是在單一處理機上執(zhí)行的速度的n倍。
(二)簡介
只有部分應(yīng)用程序在滿足以下條件的情況下可利用并行處理:具有充足的能充分利用多處理機的應(yīng)用程序;并行化目標應(yīng)用程序或用戶需進行新的編碼來利用并行程序。
傳統(tǒng)上,多處理機專為“并行計算機”所設(shè)計,沿著這樣的思路,當前Linux支持SMP奔騰系統(tǒng),在該系統(tǒng)中多處理機共享單個計算機中的單個存儲器和總線接口。每個運行Linux的機器組都有可能通過網(wǎng)絡(luò)互相連接形成并行處理群。第三種選擇是使用Linux系統(tǒng)作為“主機”,提供專門的相關(guān)并行處理機(attachedparallelprocessor)。第四種新選擇是寄存器內(nèi)SIMD并行,應(yīng)用于多媒體擴展(MMX)。
并行處理所需要提供的典型硬件環(huán)境有:
單處理機上的單個區(qū);
多處理機(SMP)中的單個區(qū);
多區(qū)配置
一個處理機(MPP)中的各區(qū);
多處理機(SMP群)中的各區(qū);
邏輯數(shù)據(jù)庫區(qū)(在AIX第1版的DB2并行版-DB2PE中也稱之為多邏輯代碼或MLN)
在各種硬件環(huán)境下可能的并行類型如下:
硬件環(huán)境I/O并行查詢內(nèi)并行機制
內(nèi)部分區(qū)并行性Inter-PartitionParallelism
單區(qū),單處理機是否否
單區(qū),多處理機(SMP)是是否
多區(qū),單處理機(MPP)是否是
多區(qū),多處理機(SMP群)是是是
邏輯數(shù)據(jù)庫區(qū)是是是
到目前為止,并行計算機具有代表性的應(yīng)用領(lǐng)域有:天氣預(yù)報建摸、VLSI電路的計算機輔助設(shè)計、大型數(shù)據(jù)庫管理、人工智能、犯罪控制和國防戰(zhàn)略研究等,而且它的應(yīng)用范圍還在不斷地擴大。并行處理技術(shù)主要是以算法為核心,并行語言為描述,軟硬件作為實現(xiàn)工具的相互聯(lián)系而又相互制約的一種結(jié)構(gòu)技術(shù)。
(三)并行算法基本策略
在并行處理技術(shù)中所使用的算法主要遵循三種策略:
分而治之法:也就是把多個任務(wù)分解到多個處理器或多個計算機中,然后再按照一定的拓撲結(jié)構(gòu)來進行求解。
重新排序法:分別采用靜態(tài)或動態(tài)的指令詞度方式。
顯式/隱式并行性結(jié)合:顯式指的是并行語言通過編譯形成并行程序,隱式指的是串行語言通過編譯形成并行程序,顯式/隱式并行性結(jié)合的關(guān)鍵就在于并行編譯,而并行編譯涉及到語句、程序段、進程以及各級程序的并行性。
1.并行性描述定義
利用計算機語言進行并行性描述的時候主要有三種方案:
?。?)語言擴展方案:也就是利用各種語言的庫函數(shù)來進行并行性功能的擴展。
?。?))編譯制導(dǎo)法:也稱為智能編譯,它是隱式并行策略的體現(xiàn),主要是由并行編譯系統(tǒng)進行程序表示、控制流的分析、相關(guān)分析、優(yōu)化分析和并行化劃分,由相關(guān)分析得到方法庫管理方案,由優(yōu)化分析得到知識庫管理方案,由并行化劃分得到程序重構(gòu),從而形成并行程序。
(3)新的語言結(jié)構(gòu)法:這是顯式并行策略的體現(xiàn)。也就是建立一種全新的并行語言的體系,而這種并行語言通過編譯就能直接形成并行程序。
2.并行軟件
并行軟件可分成并行系統(tǒng)軟件和并行應(yīng)用軟件兩大類,并行系統(tǒng)軟件主要指并行編譯系統(tǒng)和并行操作系統(tǒng),并行應(yīng)用軟件主要指各種軟件工具和應(yīng)用軟件包。在軟件中所牽涉到的程序的并行性主要是指程序的相關(guān)性和網(wǎng)絡(luò)互連兩方面。
?。?)程序的相關(guān)性:程序的相關(guān)性主要分為數(shù)據(jù)相關(guān)、控制相關(guān)和資源相關(guān)三類。
數(shù)據(jù)相關(guān)說明的是語句之間的有序關(guān)系,主要有流相關(guān)、反相關(guān)、輸出相關(guān)、I/O相關(guān)和求知相關(guān)等,這種關(guān)系在程序運行前就可以通過分析程序確定下來。數(shù)據(jù)相關(guān)是一種偏序關(guān)系,程序中并不是每一對語句的成員都是相關(guān)聯(lián)的??梢酝ㄟ^分析程序的數(shù)據(jù)相關(guān),把程序中一些不存在相關(guān)性的指令并行地執(zhí)行,以提高程序運行的速度。
控制相關(guān)指的是語句執(zhí)行次序在運行前不能確定的情況。它一般是由轉(zhuǎn)移指令引起的,只有在程序執(zhí)行到一定的語句時才能判斷出語句的相關(guān)性??刂葡嚓P(guān)常使正在開發(fā)的并行性中止,為了開發(fā)更多的并行性,必須用編譯技術(shù)克服控制相關(guān)。
而資源相關(guān)則與系統(tǒng)進行的工作無關(guān),而與并行事件利用整數(shù)部件、浮點部件、寄存器和存儲區(qū)等共享資源時發(fā)生的沖突有關(guān)。軟件的并行性主要是由程序的控制相關(guān)和數(shù)據(jù)相關(guān)性決定的。在并行性開發(fā)時往往把程序劃分成許多的程序段——顆粒。顆粒的規(guī)模也稱為粒度,它是衡量軟件進程所含計算量的尺度,一般用細、中、粗來描述。劃分的粒度越細,各子系統(tǒng)間的通信時延也越低,并行性就越高,但系統(tǒng)開銷也越大。因此,我們在進行程序組合優(yōu)化的時候應(yīng)該選擇適當?shù)牧6龋⑶野淹ㄓ崟r延盡可能放在程序段中進行,還可以通過軟硬件適配和編譯優(yōu)化的手段來提高程序的并行度。
?。?)網(wǎng)絡(luò)互連:將計算機子系統(tǒng)互連在一起或構(gòu)造多處理機或多計算機時可使用靜態(tài)或動態(tài)拓撲結(jié)構(gòu)的網(wǎng)絡(luò)。靜態(tài)網(wǎng)絡(luò)由點一點直接相連而成,這種連接方式在程序執(zhí)行過程中不會改變,常用來實現(xiàn)集中式系統(tǒng)的子系統(tǒng)之間或分布式系統(tǒng)的多個計算結(jié)點之間的固定連接。動態(tài)網(wǎng)絡(luò)是用開關(guān)通道實現(xiàn)的,它可動態(tài)地改變結(jié)構(gòu),使之與用戶程序中的通信要求匹配。動態(tài)網(wǎng)絡(luò)包括總線、交叉開關(guān)和多級網(wǎng)絡(luò),常用于共享存儲型多處理機中。在網(wǎng)絡(luò)上的消息傳遞主要通過尋徑來實現(xiàn)。常見的尋徑方式有存儲轉(zhuǎn)發(fā)尋徑和蟲蝕尋徑等。在存儲轉(zhuǎn)發(fā)網(wǎng)絡(luò)中以長度固定的包作為信息流的基本單位,每個結(jié)點有一個包緩沖區(qū),包從源結(jié)點經(jīng)過一系列中間結(jié)點到達目的結(jié)點。存儲轉(zhuǎn)發(fā)網(wǎng)絡(luò)的時延與源和目的之間的距離(段數(shù))成正比。而在新型的計算機系統(tǒng)中采用蟲蝕尋徑,把包進一步分成一些固定長度的片,與結(jié)點相連的硬件尋徑器中有片緩沖區(qū)。消息從源傳送到目的結(jié)點要經(jīng)過一系列尋徑器。同一個包中所有的片以流水方式順序傳送,不同的包可交替地傳送,但不同包的片不能交叉,以免被送到錯誤的目的地。蟲蝕尋徑的時延幾乎與源和目的之間的距離無關(guān)。在尋徑中產(chǎn)生的死鎖問題可以由虛擬通道來解決。虛擬通道是兩個結(jié)點間的邏輯鏈,它由源結(jié)點的片緩沖區(qū)、結(jié)點間的物理通道以及接收結(jié)點的片緩沖區(qū)組成。物理通道由所有的虛擬通道分時地共享。虛擬通道雖然可以避免死鎖,但可能會使每個請求可用的有效通道頻寬降低。因此,在確定虛擬通道數(shù)目時,需要對網(wǎng)絡(luò)吞吐量和通信時延折衷考慮。
3.硬件技術(shù)在硬件技術(shù)方面主要從處理機、存儲器和流水線三個方面來實現(xiàn)并行。
?。?)處理機:主要的處理機系列包括CISC、RISC、超標量、VL1W、超流水線、向量以及符號處理機。
傳統(tǒng)的處理機屬于復(fù)雜指令系統(tǒng)計算(CISC)結(jié)構(gòu)。指令系統(tǒng)大,指令格式可變,通用寄存器個數(shù)較少,基本上使用合一的指令與數(shù)據(jù)高速緩存,時鐘頻率較低,CPI較高,大多數(shù)利用ROM實現(xiàn)微碼控制CPU,而當今的精簡指令系統(tǒng)計算(RISC)處理機指令格式簡單規(guī)范,面向寄存器堆,采用重疊寄存器窗口技術(shù),具有多級Cache,多種流水線結(jié)構(gòu),強調(diào)編譯優(yōu)化技術(shù),時鐘頻率快,CPI低,大多數(shù)用硬連線控制CPU。
CISC或RISC標量處理機都可以采用超標量或向量結(jié)構(gòu)來改善性能。標量處理機在每個周期內(nèi)只發(fā)射一條指令并要求周期只完成從流水線來的一條指令。而在超標量處理機中,使用了多指令流水線,每個周期要發(fā)射多條指令并產(chǎn)生多個結(jié)果。由于希望程序中有許多的指令級并行性,因此超標量處理機更要依靠優(yōu)化編譯器去開發(fā)并行性。
VL1W結(jié)構(gòu)是將水平微碼和超標量處理這兩種普遍采用的概念結(jié)合起來產(chǎn)生的。典型的超長指令字VL1W機器指令字長度有數(shù)百位。在VLlW處理機中,多個功能部件是并發(fā)工作的,所有的功能部件共享使用公用大型寄存器堆,由功能部件同時執(zhí)行的各種操作是用VL1W指令來同步的,每條指令可指定多個操作。VL1W指令譯碼比超標量指令容易,但在開發(fā)不同數(shù)量的并行性時總是需要不同的指令系統(tǒng)。VL1W主要是開發(fā)標量操作之間的并行性,它的成功與否很大程度取決于代碼壓縮的效率,其結(jié)構(gòu)和任何傳統(tǒng)的通用處理機完全不兼容。即使同一結(jié)構(gòu)的不同實現(xiàn)也不大可能做到彼此二進制兼容。VL1W的主要優(yōu)點在于它的硬件結(jié)構(gòu)和指令系統(tǒng)簡單,在科學(xué)應(yīng)用領(lǐng)域可以發(fā)揮良好作用,但在一般應(yīng)用場合可能并不很好用。
向量處理機對數(shù)組執(zhí)行向量指令,每條指令都包含一串重復(fù)的操作。它是專門設(shè)計用來完成向量運算的協(xié)處理機,通常用于多流水線超級計算機中。向量處理機可以利用循環(huán)級展開所得的并行性,它可以附屬于任何標量處理機。專用的向量流水線可以在循環(huán)控制中消除某些軟件開銷,它的效果與優(yōu)化編譯器將順序代碼向量化的性能很有關(guān)系。從理論上說,向量機可以具有和超標量處理機同樣的性能,因此可以說向量機的并行性與超標量機相同。
符號處理機是為AI應(yīng)用而研制的,已用于定理證明、模式識別、專家系統(tǒng)、知識工程、文本檢索、科學(xué)以及機器智能等許多應(yīng)用領(lǐng)域。在這些應(yīng)用中,數(shù)據(jù)和知識表達式、原語操作、算法特性、存儲器、I/0和通信以及專用的結(jié)構(gòu)特性與數(shù)值計算是不一樣的,符號處理機也稱為邏輯程序設(shè)計語言處理機、表處理語言處理機或符號變換器。符號處理并不和數(shù)值數(shù)據(jù)打交道,它處理的是邏輯程序、符號表、對象、劇本、黑板、產(chǎn)生式系統(tǒng)、語義網(wǎng)絡(luò)、框架以及人工神經(jīng)網(wǎng)絡(luò)等問題。這些操作需要專門的指令系統(tǒng),通常不使用浮點操作。
?。?)存儲器:存儲設(shè)備按容量和存取時間從低到高可分為寄存器、高速緩存、主存儲器、磁盤設(shè)備和磁帶機五個層次。較低層存儲設(shè)備與較高層的相比,存取速度較快、容量較小,每字節(jié)成本較高、帶寬較寬、傳輸單位較小。
存放在存儲器層次結(jié)構(gòu)中的信息滿足三個重要特性:包含性、一致性和局部性。所謂包含性,指的是一個信息字的復(fù)制品可以在比它高的所有層中找到,而如果在高層中丟失了一個信息,則在比它低的所有層中此信息也將丟失。CPU和高速緩存之間的信息傳送是按字進行的,高速緩存和主存儲器間用塊作為數(shù)據(jù)傳送的基本單位,主存和磁盤之間又是以頁面為基本單位來傳送信息的,而在磁盤和磁帶機之間的數(shù)據(jù)傳送則是按文件級處理的。所謂一致性要求的是同一個信息項與后繼存儲器層次上的副本是一致的。也就是說,如果在高速緩存中的一個字被修改過,那么在所有更高層上該字的副本也必須立即或最后加以修改。為了盡量減少存儲器層次結(jié)構(gòu)的有效存取時間,通常把頻繁使用的信息放在較低層次。維護存儲器層次結(jié)構(gòu)一致性一般有兩種策略,一種是寫直達策略,也就是如果,則立即在所有高層存儲器中進行同樣的修改;另一種是寫回策略,也就是在較低層中對信息進行修改后并不立即在高層存儲器中進行相應(yīng)的修改,而是等到該信息將被替換或?qū)牡蛯又邢r才在所有高層存儲器中進行同樣的修改。甚至可以將寫直達和寫回策略的優(yōu)點結(jié)合起來,形成寫一次協(xié)議來維護存儲器的一致性。
存儲器的層次結(jié)構(gòu)是在一種程序行為——訪問的局部性基礎(chǔ)上開發(fā)出來的。主要有時間局部性、空間局部性和順序局部性。時間局部性指的是最近的訪問項很可能在不久的將來再次被訪問。它往往會引起對最近使用區(qū)域的集中訪問。空間局部性表示一種趨勢,指的是一個進程訪問的各項其地址彼此很近。順序局部性指的是在典型程序中,除非是轉(zhuǎn)移指令,一般指令都是順序執(zhí)行的。
在多處理機系統(tǒng)中一般使用共享存儲器。對共享存儲器的組織一般采用低位交叉、高位交叉、高低位交叉三種方法。低位交叉又稱并發(fā)存取,它是把相鄰的地址放在相鄰的存儲器模塊中,在訪問時不容易產(chǎn)生沖突,并行性較好,但可靠性容錯能力和擴展性均較差。高位交叉又稱允許同時存取,它是把相鄰地址分配到同一個存儲器模塊中,可靠性、容錯能力和擴展性均較強,但訪問時易產(chǎn)生沖突,帶寬較窄,并行性較差。高低位交叉存取又稱C—s存取,它是結(jié)合了高位交叉和低位交叉兩種方法的優(yōu)點,既解決了沖突問題,又能有效地提高容錯能力和并行性,最適合于向量處理機結(jié)構(gòu)。
(3)流水線:流水線技術(shù)主要有指令流水線技術(shù)和運算流水線技術(shù)兩種。
指令流水線技術(shù)主要目的是要提高計算機的運行效率和吞吐率。它主要通過設(shè)置預(yù)取指令緩沖區(qū)、設(shè)置多功能部件、進行內(nèi)部數(shù)據(jù)定向、采取適當?shù)闹噶钫{(diào)度策略來實現(xiàn)。指令調(diào)度的策略主要有靜態(tài)和動態(tài)兩種,靜態(tài)詞度是基于軟件的,主要由編譯器完成,動態(tài)詞度是基于硬件的,主要是通過硬件技術(shù)進行。
運算流水線主要有單功能流水線和多功能流水線兩種。其中多功能流水線又可分為靜態(tài)流水線和動態(tài)流水線。靜態(tài)流水線技術(shù)只用來實現(xiàn)確定的功能,而動態(tài)流水線可以在不同時間重新組合,實現(xiàn)不同的功能,它除流線連接外,還允許前饋和反饋連接,因此也稱為非線性流水線。這些前饋和反饋連接使得進入流水線的相繼事件的詞度變得很不簡單。由于這些連接,流水線不一定從最后一段輸出。根據(jù)不同的數(shù)據(jù)流動模式,人們可以用同一條流水線求得不同功能的值。
?。?)并行計算機發(fā)展簡述
40年代開始的現(xiàn)代計算機發(fā)展歷程可以分為兩個明顯的發(fā)展時代:串行計算時代、并行計算時代。每一個計算時代都從體系結(jié)構(gòu)發(fā)展開始,接著是系統(tǒng)軟件(特別是編譯器與操作系統(tǒng))、應(yīng)用軟件,最后隨著問題求解環(huán)境的發(fā)展而達到頂峰。創(chuàng)建和使用并行計算機的主要原因是因為并行計算機是解決單處理器速度瓶頸的最好方法之一。
并行計算機是由一組處理單元組成的,這組處理單元通過相互之間的通信與協(xié)作,以更快的速度共同完成一項大規(guī)模的計算任務(wù)。因此,并行計算機的兩個最主要的組成部分是計算節(jié)點和節(jié)點間的通信與協(xié)作機制。并行計算機體系結(jié)構(gòu)的發(fā)展也主要體現(xiàn)在計算節(jié)點性能的提高以及節(jié)點間通信技術(shù)的改進兩方面。
60年代初期,由于晶體管以及磁芯存儲器的出現(xiàn),處理單元變得越來越小,存儲器也更加小巧和廉價。這些技術(shù)發(fā)展的結(jié)果導(dǎo)致了并行計算機的出現(xiàn),這一時期的并行計算機多是規(guī)模不大的共享存儲多處理器系統(tǒng),即所謂大型主機(Mainframe)。IBM360是這一時期的典型代表。
到了60年代末期,同一個處理器開始設(shè)置多個功能相同的功能單元,流水線技術(shù)也出現(xiàn)了。與單純提高時鐘頻率相比,這些并行特性在處理器內(nèi)部的應(yīng)用大大提高了并行計算機系統(tǒng)的性能。伊利諾依大學(xué)和Burroughs公司此時開始實施IlliacIV計劃,研制一臺64個CPU的SIMD主機系統(tǒng),它涉及到硬件技術(shù)、體系結(jié)構(gòu)、I/O設(shè)備、操作系統(tǒng)、程序設(shè)計語言直至應(yīng)用程序在內(nèi)的眾多研究課題。不過,當一臺規(guī)模大大縮小了的16CPU系統(tǒng)終于在1975年面世時,整個計算機界已經(jīng)發(fā)生了巨大變化。
首先是存儲系統(tǒng)概念的革新,提出虛擬存儲和緩存的思想。IBM360/85系統(tǒng)與360/91是屬于同一系列的兩個機型,360/91的主頻高于360/85,所選用的內(nèi)存速度也較快,并且采用了動態(tài)調(diào)度的指令流水線;但是,360/85的整體性能卻高于360/91,唯一的原因就是前者采用了緩存技術(shù),而后者則沒有。
其次是半導(dǎo)體存儲器開始代替磁芯存儲器。最初,半導(dǎo)體存儲器只是在某些機器被用作緩存,而CDC7600則率先全面采用這種體積更小、速度更快、可以直接尋址的半導(dǎo)體存儲器,磁芯存儲器從此退出了歷史舞臺。與此同時,集成電路也出現(xiàn)了,并迅速應(yīng)用到了計算機中。元器件技術(shù)的這兩大革命性突破,使得IlliacIV的設(shè)計者們在底層硬件以及并行體系結(jié)構(gòu)方面提出的種種改進都大為遜色。
1976年CRAY-1問世以后,向量計算機從此牢牢地控制著整個高性能計算機市場15年。CRAY-1對所使用的邏輯電路進行了精心的設(shè)計,采用了我們?nèi)缃穹Q為RISC的精簡指令集,還引入了向量寄存器,以完成向量運算。這一系列全新技術(shù)手段的使用,使CRAY-1的主頻達到了80MHz。
微處理器隨著機器的字長從4位、8位、16位一直增加到32位,其性能也隨之顯著提高。正是因為看到了微處理器的這種潛力,卡內(nèi)基-梅隆大學(xué)開始在當時流行的DECPDP11小型計算機的基礎(chǔ)上研制成功一臺由16個PDP11/40處理機通過交叉開關(guān)與16個共享存儲器模塊相連接而成的共享存儲多處理器系統(tǒng)C.mmp。
從80年代開始,微處理器技術(shù)一直在高速前進。稍后又出現(xiàn)了非常適合于SMP方式的總線協(xié)議,而伯克利加州大學(xué)則對總線協(xié)議進行了擴展,提出了Cache一致性問題的處理方案。從此,C.mmp開創(chuàng)出的共享存儲多處理器之路越走越寬;現(xiàn)在,這種體系結(jié)構(gòu)已經(jīng)基本上統(tǒng)治了服務(wù)器和桌面工作站市場。
同一時期,基于消息傳遞機制的并行計算機也開始不斷涌現(xiàn)。80年代中期,加州理工成功地將64個i8086/i8087處理器通過超立方體互連結(jié)構(gòu)連結(jié)起來。此后,便先后出現(xiàn)了InteliPSC系列、INMOSTransputer系列,IntelParagon以及IBMSP的前身Vulcan等基于消息傳遞機制的并行計算機。
80年代末到90年代初,共享存儲器方式的大規(guī)模并行計算機又獲得了新的發(fā)展。IBM將大量早期RISC微處理器通過蝶形互連網(wǎng)絡(luò)連結(jié)起來。人們開始考慮如何才能在實現(xiàn)共享存儲器緩存一致的同時,使系統(tǒng)具有一定的可擴展性(Scalability)。90年代初期,斯坦福大學(xué)提出了DASH計劃,它通過維護一個保存有每一緩存塊位置信息的目錄結(jié)構(gòu)來實現(xiàn)分布式共享存儲器的緩存一致性。后來,IEEE在此基礎(chǔ)上提出了緩存一致性協(xié)議的標準。
90年代以來,主要的幾種體系結(jié)構(gòu)開始走向融合。屬于數(shù)據(jù)并行類型的CM-5除大量采用商品化的微處理器以外,也允許用戶層的程序傳遞一些簡單的消息;CRAYT3D是一臺NUMA結(jié)構(gòu)的共享存儲型并行計算機,但是它也提供了全局同步機制、消息隊列機制,并采取了一些減少消息傳遞延遲的技術(shù)。
隨著商品化微處理器、網(wǎng)絡(luò)設(shè)備的發(fā)展,以及MPI/PVM等并行編程標準的發(fā)布,機群架構(gòu)的并行計算機出現(xiàn)。IBMSP2系列機群系統(tǒng)就是其中的典型代表。在這些系統(tǒng)中,各個節(jié)點采用的都是標準的商品化計算機,它們之間通過高速網(wǎng)絡(luò)連接起來。
今天,越來越多的并行計算機系統(tǒng)采用商品化的微處理器加上商品化的互連網(wǎng)絡(luò)構(gòu)造,這種分布存儲的并行計算機系統(tǒng)稱為機群。國內(nèi)幾乎所有的高性能計算機廠商都生產(chǎn)這種具有極高性能價格比的高性能計算機,并行計算機就進入了一個新的時代,并行計算的應(yīng)用達到了前所未有的廣度和深度。
并行計算機隨著微處理芯片的發(fā)展,已經(jīng)進入了一個新時代。目前并行計算機的性能已經(jīng)接近100TFLOPS,1000TFLOPS的并行計算機正在規(guī)劃之中。我國并行計算機的研制已經(jīng)走在世界前列,正在研制生產(chǎn)100TFLOPS的巨型計算機系統(tǒng)。2003年由聯(lián)想公司生產(chǎn)的深騰6800在2003年11月世界TOP500排名中位列第14名,2004年曙光公司生產(chǎn)的曙光4000A在2004年6月的世界TOP500排名中位列第10名,這是我國公開發(fā)布的高性能計算機在世界TOP500中首次進入前十名,這標志著我國在并行計算機系統(tǒng)的研制和生產(chǎn)中已經(jīng)趕上了國際先進水平,為提高我國的科學(xué)研究水平奠定了物質(zhì)基礎(chǔ)。
從TOP500的前10名來看,美國仍然是超級計算機的最大擁有者。按照世界TOP500的統(tǒng)計數(shù)據(jù)來分析,美國在計算能力上占有近全世界的一半,在TOP500中的所有計算機中擁有的數(shù)量超過50%。
二、分布式文件系統(tǒng)
分布式文件系統(tǒng)(DistributedFileSystem)是指文件系統(tǒng)管理的物理存儲資源不一定直接連接在本地節(jié)點上,而是通過計算機網(wǎng)絡(luò)與節(jié)點相連。分布式文件系統(tǒng)的設(shè)計基于客戶機/服務(wù)器模式。一個典型的網(wǎng)絡(luò)可能包括多個供多用戶訪問的服務(wù)器。另外,對等特性允許一些系統(tǒng)扮演客戶機和服務(wù)器的雙重角色。例如,用戶可以“發(fā)表”一個允許其他客戶機訪問的目錄,一旦被訪問,這個目錄對客戶機來說就象使用本地驅(qū)動器一樣,下面是三個基本的分布式文件系統(tǒng)。
(一)網(wǎng)絡(luò)文件系統(tǒng)
(NFS)最早由Sun微系統(tǒng)公司作為TCP/IP網(wǎng)上的文件共享系統(tǒng)開發(fā)。Sun公司估計現(xiàn)在大約有超過310萬個系統(tǒng)在運行NFS,大到大型計算機、小至PC機,其中至少有80%的系統(tǒng)是非Sun平臺。
(二)Andrew文件系統(tǒng)
(AFS)結(jié)構(gòu)與NFS相似,由卡內(nèi)基梅隆大學(xué)信息技術(shù)中心(ITC)開發(fā)、現(xiàn)由前ITC職員組成的Transarc公司負責(zé)開發(fā)和銷售。AFS較NFS有所增強。
(三)分布式文件系統(tǒng)
(DFS)是AFS的一個版本,作為開放軟件基金會(OSF)的分布分布式文件系統(tǒng)
式計算環(huán)境(DCE)中的文件系統(tǒng)部分。
如果文件的訪問僅限于一個用戶,那么分布式文件系統(tǒng)就很容易實現(xiàn)??上У氖?,在許多網(wǎng)絡(luò)環(huán)境中這種限制是不現(xiàn)實的,必須采取并發(fā)控制來實現(xiàn)文件的多用戶訪問,表現(xiàn)為如下幾個形式:
只讀共享任何客戶機只能訪問文件,而不能修改它,這實現(xiàn)起來很簡單。
受控寫操作采用這種方法,可有多個用戶打開一個文件,但只有一個用戶進行寫修改。而該用戶所作的修改并不一定出現(xiàn)在其它已打開此文件的用戶的屏幕上。
并發(fā)寫操作這種方法允許多個用戶同時讀寫一個文件。但這需要操作系統(tǒng)作大量的監(jiān)控工作以防止文件重寫,并保證用戶能夠看到最新信息。這種方法即使實現(xiàn)得很好,許多環(huán)境中的處理要求和網(wǎng)絡(luò)通信量也可能使它變得不可接受。
(三)分布式數(shù)據(jù)庫
分布式數(shù)據(jù)庫系統(tǒng)通常使用較小的計算機系統(tǒng),每臺計算機可單獨放在一個地方,每臺計算機中都有DBMS的一份完整拷貝副本,并具有自己局部的數(shù)據(jù)庫,位于不同地點的許多計算機通過網(wǎng)絡(luò)互相連接,共同組成一個完整的、全局的大型數(shù)據(jù)庫。
1.簡介
這種組織數(shù)據(jù)庫的方法克服了物理中心數(shù)據(jù)庫組織的弱點。首先,降低了數(shù)據(jù)傳送代價,因為大多數(shù)的對數(shù)據(jù)庫的訪問操作都是針對局部數(shù)據(jù)庫的,而不是對其他位置的數(shù)據(jù)庫訪問;其次,系統(tǒng)的可靠性提高了很多,因為當網(wǎng)絡(luò)出現(xiàn)故障時,仍然允許對局部數(shù)據(jù)庫的操作,而且一個位置的故障不影響其他位置的處理工作,只有當訪問出現(xiàn)故障位置的數(shù)據(jù)時,在某種程度上才受影響;第三,便于系統(tǒng)的擴充,增加一個新的局部數(shù)據(jù)庫,或在某個位置擴充一臺適當?shù)男⌒陀嬎銠C,都很容易實現(xiàn)。然而有些功能要付出更高的代價。例如,為了調(diào)配在幾個位置上的活動,事務(wù)管理的性能比在中心數(shù)據(jù)庫時花費更高,而且甚至抵消許多其他的優(yōu)點。
分布式軟件系統(tǒng)(DistributedSoftwareSystems)是支持分布式處理的軟件系統(tǒng),是在由通信網(wǎng)絡(luò)互聯(lián)的多處理機體系結(jié)構(gòu)上執(zhí)行任務(wù)的系統(tǒng)。它包括分布式操作系統(tǒng)、分布式程序設(shè)計語言及其編譯(解釋)系統(tǒng)、分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)等。
分布式操作系統(tǒng)負責(zé)管理分布式處理系統(tǒng)資源和控制分布式程序運行。它和集中式操作系統(tǒng)的區(qū)別在于資源管理、進程通信和系統(tǒng)結(jié)構(gòu)等方面。分布式程序設(shè)計語言用于編寫運行于分布式計算機系統(tǒng)上的分布式程序。一個分布式程序由若干個可以獨立執(zhí)行的程序模塊組成,它們分布于一個分布式處理系統(tǒng)的多臺計算機上被同時執(zhí)行。它與集中式的程序設(shè)計語言相比有三個特點:分布性、通信性和穩(wěn)健性。分布式文件系統(tǒng)具有執(zhí)行遠程文件存取的能力,并以透明方式對分布在網(wǎng)絡(luò)上的文件進行管理和存取。分布式數(shù)據(jù)庫系統(tǒng)由分布于多個計算機結(jié)點上的若干個數(shù)據(jù)庫系統(tǒng)組成,它提供有效的存取手段來操縱這些結(jié)點上的子數(shù)據(jù)庫。分布式數(shù)據(jù)庫在使用上可視為一個完整的數(shù)據(jù)庫,而實際上它是分布在地理分散的各個結(jié)點上。當然,分布在各個結(jié)點上的子數(shù)據(jù)庫在邏輯上是相關(guān)的。
2.主要特點
多數(shù)處理就地完成;
各地的計算機由數(shù)據(jù)通信網(wǎng)絡(luò)相聯(lián)系;
克服了中心數(shù)據(jù)庫的弱點:降低了數(shù)據(jù)傳輸代價;
提高了系統(tǒng)的可靠性,局部系統(tǒng)發(fā)生故障,其他部分還可繼續(xù)工作;
各個數(shù)據(jù)庫的位置是透明的,方便系統(tǒng)的擴充;
為了協(xié)調(diào)整個系統(tǒng)的事務(wù)活動,事務(wù)管理的性能花費高;
3.體系結(jié)構(gòu)
分布式數(shù)據(jù)庫結(jié)構(gòu)模式圖
根據(jù)我國制定的《分布式數(shù)據(jù)庫系統(tǒng)標準》,分布式數(shù)據(jù)庫系統(tǒng)抽象為4層的結(jié)構(gòu)模式。這種結(jié)構(gòu)模式得到了國內(nèi)外的支持和認同。
4層模式劃分為全局外層、全局概念層、局部概念層和局部內(nèi)層,在各層間還有相應(yīng)的層間映射。這種4層模式適用于同構(gòu)型分布式數(shù)據(jù)庫系統(tǒng),也適用于異構(gòu)型分布式數(shù)據(jù)庫系統(tǒng)。
4.數(shù)據(jù)分片類型
?。?)水平分片:按一定的條件把全局關(guān)系的所有元組劃分成若干不相交的子集,每個子集為關(guān)系的一個片段。
?。?)垂直分片:把一個全局關(guān)系的屬性集分成若干子集,并在這些子集上作投影運算,每個投影稱為垂直分片。
?。?)導(dǎo)出分片:又稱為導(dǎo)出水平分片,即水平分片的條件不是本關(guān)系屬性的條件,而是其他關(guān)系屬性的條件。
(4)混合分片:以上三種方法的混合。可以先水平分片再垂直分片,或先垂直分片再水平分片,或其他形式,但他們的結(jié)果是不相同的。
條件:
?。?)完備性條件:必須把全局關(guān)系的所有數(shù)據(jù)映射到片段中,決不允許有屬于全局關(guān)系的數(shù)據(jù)卻不屬于它的某一個片段。
?。?)可重構(gòu)條件:必須保證能夠由同一個全局關(guān)系的各個片段來重建該全局關(guān)系。對于水平分片可用并操作重構(gòu)全局關(guān)系;對于垂直分片可用聯(lián)接操作重構(gòu)全局關(guān)系。
(3)不相交條件:要求一個全局關(guān)系被分割后所得的各個數(shù)據(jù)片段互不重疊(對垂直分片的主鍵除外)。
5.數(shù)據(jù)分配方式
?。?)集中式:所有數(shù)據(jù)片段都安排在同一個場地上。
?。?)分割式:所有數(shù)據(jù)只有一份,它被分割成若干邏輯片段,每個邏輯片段被指派在一個特定的場地上。
?。?)全復(fù)制式:數(shù)據(jù)在每個場地重復(fù)存儲。也就是每個場地上都有一個完整的數(shù)據(jù)副本。
?。?)混合式:這是一種介乎于分割式和全復(fù)制式之間的分配方式。
目前分布式數(shù)據(jù)庫分配的設(shè)計,越來越多的采用尋找最優(yōu)解的算法,比如遺傳算法、退火機制等。
?。ㄋ模┰朴嬎闫脚_
云計算平臺也成為云平臺。云計算平臺可以劃分為3類:以數(shù)據(jù)存儲為主的存儲型云平臺,以數(shù)據(jù)處理為主的計算型云平臺以及計算和數(shù)據(jù)存儲處理兼顧的綜合云計算平臺。
1.平臺架構(gòu)
?。?)顯示層
多數(shù)據(jù)中心云計算架構(gòu)這層主要是用于以友好的方式展現(xiàn)用戶所需的內(nèi)容,并會利用到下面中間件層提供的多種服務(wù),主要有五種技術(shù):
HTML:標準的Web頁面技術(shù),2013年前主要以HTML4為主,但是將要推出的HTML5會在很多方面推動Web頁面的發(fā)展,比如視頻[1]和本地存儲等方面。
JavaScript:一種用于Web頁面的動態(tài)語言,通過JavaScript,能夠極大地豐富Web頁面的功能。
CSS:主要用于控制Web頁面的外觀,而且能使頁面的內(nèi)容與其表現(xiàn)形式之間進行優(yōu)雅地分離。
Flash:業(yè)界最常用的RIA(RichInternetApplications)技術(shù),能夠在現(xiàn)階段提供HTML等技術(shù)所無法提供的基于Web的富應(yīng)用,而且在用戶體驗[3]方面,非常不錯。
Silverlight:來自業(yè)界巨擎微軟[4]的RIA技術(shù),雖然其2013年前的市場占有率稍遜于Flash,但由于其可以使用C#[5]來進行編程,所以對開發(fā)者非常友好。
(2)中間層
這層是承上啟下的,它在下面的基礎(chǔ)設(shè)施層所提供資源的基礎(chǔ)上提供了多種服務(wù),比如緩存服務(wù)和REST服務(wù)等,而且這些服務(wù)即可用于支撐顯示層,也可以直接讓戶調(diào)用,并主要有五種技術(shù);
REST:通過REST技術(shù),能夠非常方便和優(yōu)雅地將中間件層所支撐的部分服務(wù)提供給調(diào)用者。
多租戶:就是能讓一個單獨的應(yīng)用實例可以為多個組織服務(wù),而且保持良好的隔離性和安全性,并且通過這種技術(shù),能有效地降低應(yīng)用的購置和維護成本。
并行處理:為了處理海量的數(shù)據(jù),需要利用龐大的X86集群進行規(guī)模巨大的并行處理,Google的MapReduce是這方面的代表之作。
應(yīng)用服務(wù)器:在原有的應(yīng)用服務(wù)器的基礎(chǔ)上為云計算做了一定程度的優(yōu)化,比如用于GoogleAppEngine的Jetty應(yīng)用服務(wù)器。
分布式緩存:通過分布式緩存技術(shù),不僅能有效地降低對后臺服務(wù)器的壓力,而且還能加快相應(yīng)的反應(yīng)速度,最著名的分布式緩存例子莫過于Memcached。
2.實現(xiàn)基礎(chǔ)
(1)企業(yè)的IT基礎(chǔ)架構(gòu)要有一個集中統(tǒng)一的格局;
?。?)信息部門對虛擬化技術(shù)要有熟練的應(yīng)用;
?。?)要用SOA的理念去理解云計算,按照服務(wù)來構(gòu)建應(yīng)用;
?。?)要有走向智慧企業(yè)的整體目標
3.服務(wù)特征
?。?)服務(wù)無處不在--用戶只需要一臺具備基本計算能力的計算設(shè)備以及一個有效的互聯(lián)網(wǎng)連接,就可以隨時隨地使用該服務(wù)。從這個意義來講,任何聯(lián)網(wǎng)的應(yīng)用,都具備成為云計算平臺的潛力[2]。
?。?)具備進入成本--用戶具備使用該服務(wù)的需求,但是并不具備獨立提供該服務(wù)的經(jīng)濟或者技術(shù)條件。譬如說某些企業(yè)需要定期地進行大規(guī)模的運算,但是并不值得專門為此購置一臺具備大規(guī)模運算能力的計算設(shè)備。超算中心通過發(fā)展客戶群讓多個用戶來分擔(dān)超級計算機的成本,使得其用戶能夠在不擁有計算設(shè)備的情況下以較小的成本完成計算任務(wù)。
?。?)用戶決定應(yīng)用--云計算平臺提供計算能力(包括處理器、內(nèi)存、存儲、網(wǎng)絡(luò)接口),但是并不關(guān)心用戶的應(yīng)用類型。用戶利用云計算平臺所提供的計算能力,并且充分考慮云計算平臺所設(shè)定的(技術(shù)和經(jīng)濟)限制,開發(fā)出豐富多彩的應(yīng)用。滿足如上幾個條件的云計算平臺,又可以按照其所提供服務(wù)之層次細分為基礎(chǔ)設(shè)施服務(wù)(IaaS,例如在線存儲和數(shù)據(jù)庫服務(wù))、平臺即服務(wù)(PaaS,例如AMP虛擬主機和JavaEE應(yīng)用服務(wù)器容器)和軟件即服務(wù)(SaaS,例如GoogleDocs)。很多廠商在提到云計算的時候,往往會同時提到分布式計算(DistributedComputing)、并行計算(ParalleComputing)、網(wǎng)格計算(GridComputing)、實用計算(UtilityComputing)等等概念。事實上用戶并不關(guān)心這些五花八門的新名詞,他們所關(guān)心的僅僅是某項服務(wù)是否可用以及使用該服務(wù)所需要的成本。說得難聽點,這些概念僅僅是云計算平臺提供商在創(chuàng)建云計算平臺時才需要了解的技術(shù)細節(jié),它們可以被認為是云計算的表象,但并不是云計算的本質(zhì)。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。