版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、大數(shù)據(jù)平臺大數(shù)據(jù)與云計算并行計算框架分布式存儲與Hadoop目錄333大數(shù)據(jù)與云計算傳統(tǒng)數(shù)據(jù)分析中的數(shù)據(jù)通常處于靜態(tài)(或者更新緩慢的)且數(shù)量較少,要求數(shù)據(jù)庫設計在不同時間可提供一致的結(jié)果。伴隨大數(shù)據(jù)時代的發(fā)展,數(shù)據(jù)的來源范圍和體量規(guī)模發(fā)生了顛覆性變化,數(shù)據(jù)量大幅增加,數(shù)據(jù)的一致性越來越難以保持。Hadoop等 分布式系統(tǒng)雖然沒有關系型數(shù)據(jù)庫的輸出結(jié)果那么精確,但可以高效地處理超大量的數(shù)據(jù) (Mayer-Schonberger and Cukier, 2013)。為什么需要大數(shù)據(jù)平臺?從技術的淵源來看,數(shù)據(jù)庫、數(shù)據(jù)倉庫、數(shù)據(jù)挖掘、機器學習、深度學習等技術都可以作為大數(shù)據(jù)技術的前身,只不過 在不同
2、時代、不同技術環(huán)境下的實現(xiàn)方式有所不同。在數(shù)據(jù)分析的早期階段,統(tǒng)計學專注于小樣本的分析和推斷, 計算機科學專注于規(guī)則和邏輯的計算。隨著信息爆炸時代的到來,這兩個學科融合后產(chǎn)生了化學反應,從數(shù)據(jù)中挖掘知識成為凝練智能的關鍵。大數(shù)據(jù)技術的發(fā)展變遷1946年,世界上第一臺通用計算機ENIAC在美國賓夕法尼亞大學誕生,每秒鐘可進行5000次運算,最初被美國國防部用來進行彈道計算。1951年,世界上第一臺商用計算機UNIVACI誕生,被交付給美國人口統(tǒng)計局用于人口普查。1968年,IBM公司推出了商業(yè)數(shù)據(jù)庫,基于信息化系統(tǒng)的數(shù)據(jù)分析開始走進普通企業(yè)。1971年,美國AT&T公司的貝爾實驗室發(fā)布了UNIX
3、操作系統(tǒng),計算機操作系統(tǒng)開始通用化。隨著通用計算機乃至個人計算機的發(fā)展,人們可以處理和分析的數(shù)據(jù)量越來越大,基于計算機使用數(shù)據(jù)庫、統(tǒng)計軟件等工具來分析數(shù)據(jù)的方式漸成主流大數(shù)據(jù)技術的發(fā)展變遷20世紀70、80年代在很多分析領域還存在邏輯規(guī)則和數(shù)據(jù)驅(qū)動的路線之爭,90年代以來,業(yè)界使用數(shù)據(jù)挖掘技術開始獲得很多明顯的收益。數(shù)據(jù)挖掘應用之初的最大問題是數(shù)據(jù)孤島:早期的信息時代并沒有帶來完善的系統(tǒng)架構(gòu),很多公司的數(shù)據(jù)都分散在不同的信息系統(tǒng)中, 有些甚至還沒做到電子化,因此給數(shù)據(jù)挖掘的實現(xiàn)帶來了屏障。伴隨數(shù)據(jù)倉庫理論的成熟和可視化技術的發(fā)展,主要針對海量數(shù)據(jù)進行存儲與分析的商業(yè)智能開始流行, 在21世紀初
4、達到巔峰。很長一段時間里,商業(yè)智能都是企業(yè)數(shù)據(jù)分析應用的主流方案。大數(shù)據(jù)技術的發(fā)展變遷隨著互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)的興起,人們處理的數(shù)據(jù)規(guī)模迎來爆發(fā)式的增長。 海量數(shù)據(jù)已經(jīng)不足以描述新時代的數(shù)據(jù),大數(shù)據(jù)概念應運而生。 和傳統(tǒng)的數(shù)據(jù)應用相比,大數(shù)據(jù)處理的對象通常不再是隨機樣本,而是全體數(shù)據(jù)。曾有一種比較主流的觀點認為:在大數(shù)據(jù)時代下人們不再熱衷于追逐因果關系,大數(shù)據(jù)的核心是預測,不必去推測原因(Mayer-Schonberger and Cukier, 2013)。 這個觀點有失偏頗,研究者對于模型的解釋性和因果關系的研究實際上是越來越重視的。大數(shù)據(jù)技術的發(fā)展變遷大數(shù)據(jù)的字面意義就是大量的數(shù)據(jù),這和之
5、前的海量數(shù)據(jù)看上去沒多大區(qū)別。但是人們對大數(shù)據(jù)賦予了更多內(nèi)涵, 比如5V:量大(Volume)、多樣化(Variety)、分析快速(Velocity)、價值高(Value)、可信度高(Veracity)。大數(shù)據(jù)技術的發(fā)展變遷海量數(shù)據(jù)時代主要針對的是數(shù)據(jù)量大,關注大量數(shù)據(jù)的高性能處理。而大數(shù)據(jù)時代下,數(shù)據(jù)的“大”還包括數(shù)據(jù)源的多樣化。除了傳統(tǒng)數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù)以外,各種文本、圖像、聲音、影像等非結(jié)構(gòu)數(shù)據(jù)也變成了分析對象。快速分析也成了重要的目標, 尤其是在互聯(lián)網(wǎng)的推動下,各種實時計算、實時分析都成了大數(shù)據(jù)時代的標配。價值大主要體現(xiàn)在大數(shù)據(jù)已經(jīng)成了一種重要的資源和生產(chǎn)要素??尚哦雀呤且驗楹芏喹h(huán)節(jié)
6、的數(shù)據(jù)都可以被如實地記錄出來,改變了之前受技術所限存儲數(shù)據(jù)不全的問題。大數(shù)據(jù)技術的發(fā)展變遷從技術設施的角度來看,大數(shù)據(jù)時代最大的特點是以云計算平臺為代表的底層架構(gòu)變革:用支持并行計算的框架改變了過去單機服務器的模式, 實現(xiàn)了可擴容的數(shù)據(jù)分析。研究者在實際的工作中需要針對性地開發(fā)并行算法,然后使用廉價的普通電腦構(gòu)成集群來運行。隨著Hadoop之類的框架的興起,云計算平臺逐漸成了企業(yè)大數(shù)據(jù)的主流平臺, 一旦算法和應用在并行框架中部署完成,當數(shù)據(jù)量增加時,只需要線性地增加算力即可。目前很多主流的分布式計算框架 都是開源軟件,幫助用戶擺脫了之前只能選擇大企業(yè)的產(chǎn)品的限制,極大地加快了大數(shù)據(jù)技術的發(fā)展。
7、大數(shù)據(jù)技術的發(fā)展變遷2004年,谷歌公司向公眾發(fā)布了其內(nèi)部使用的大規(guī)模數(shù)據(jù)處理的模型框架MapReduce,提供了一套非常便利的編程模式。在GFS(Google File System)文件系統(tǒng)的基礎上,研究者只需要按照標準編寫每個節(jié)點的映射(Map)和總體化簡(Reduce)函數(shù)并將其放在整個計算框架中,就能實現(xiàn)自動的任務分配和并行計算。由于并行化任務的瓶頸是將工作改寫成并行所耗費的開發(fā)量,MapReduce框架的共享讓普通人、普通公司具備使用并行化任務的可能,在工程上具有劃時代的意義。云計算簡介2006年8月,谷歌公司首席執(zhí)行官埃里克施密特在搜索引擎大會(SES San Jose 2006
8、)上首次提出“云計算”(Cloud Computing)概念。同年,亞馬遜公司將其彈性計算云服務也命名為“云計算”。云計算這個詞逐漸成為遠程并行框架的代稱。2008年,微軟也發(fā)布其公共云計算平臺Azure。這三家公司成為早期云計算產(chǎn)業(yè)的巨頭。由于這種模式是由第三方公司提供服務, 購買云服務的企業(yè)通過公網(wǎng)連接云平臺,因此也稱為公有云。云計算簡介基于谷歌發(fā)布的MapReduce框架,Apache軟件基金會支持Hadoop項目發(fā)布了開源的云計算框架。Hadoop的前身可以追溯到Apache的Lucene項目下 的Nutch系統(tǒng),該項目發(fā)起于2002年,業(yè)界廣泛地使用它來實現(xiàn)網(wǎng)絡爬蟲。該項目實現(xiàn)了ND
9、FS(Nutch Distributed File System)分布式文件系統(tǒng)。2004年谷歌的文章發(fā)布后,該項目開始實現(xiàn)MapReduce機制,并且與谷歌的GFS相對應地發(fā)展為HDFS分布式文件系統(tǒng)。2006年,Apache啟動了對Hadoop項目的獨立支持,正式從Nutch分離。2008年,Hadoop成為Apache的頂級項目。云計算簡介有一些企業(yè)基于Hadoop或者類似的框架,獨自建設內(nèi)部的云平臺,或者委托第三方企業(yè)來幫自己開發(fā)和部署內(nèi)部使用的云計算平臺, 這種方式也稱為私有云。雖然云計算這個概念主要是提供公有云服務的公司在推廣,但就技術本身來說,和私有云沒有本質(zhì)的區(qū)別。不過對普通企
10、業(yè)來說,開發(fā)和部署私有云所需要的成本巨大,因此還是以購買公有云服務為主,這也是云計算時代的主要方式。公有云服務一共有三種模式:SaaS、PaaS和IaaS。云計算簡介SaaS是軟件即服務的簡稱,也稱為按需軟件服務。服務商在云端提供軟件,客戶通常無需購買安裝,可以直接通過瀏覽器來使用其功能, 或者通過簡單的客戶端軟件來連接云端的服務??蛻魺o需為整個軟件付費,只需為自己選擇的功能模塊付費即可, 同時也可以根據(jù)使用時間或者資源占用量來購買,完全顛覆了過去購買軟件許可證(License)的模式,為普通企業(yè)節(jié)省了大量資金, 也省掉了很多安裝和維護的麻煩。SaaSPaaS是平臺即服務的簡稱。服務商提供了遠
11、程的開發(fā)平臺,包括相關的操作系統(tǒng)、集成開發(fā)環(huán)境(IDE)、中間件、數(shù)據(jù)庫、Web服務器等。用戶只需要在平臺上開發(fā)或者部署自己的應用程序、管理自己的數(shù)據(jù)即可,相當于服務商提供了全部硬件平臺和大部分的基礎軟件平臺。用戶購買服務時可以選擇軟硬件平臺,省掉了很多基礎維護的工作。PaaSIaaS是基礎設施即服務的簡稱,服務商提供服務器硬件、存儲設備、網(wǎng)絡硬件、安全工具等基礎設施,用戶可以自行安裝操作系統(tǒng)及各類軟件, 完全自由地遠程操作。可以省去管理機房、購買硬件、安裝網(wǎng)絡設施等工作。這種服務方式通常還包括彈性的硬件和軟件, 用戶可以在不遷移系統(tǒng)的同時完成計算性能的升級,相關的網(wǎng)絡、存儲和所有基礎設施管理
12、都由云服務提供商負責,還可以選用安全與備份服務。laaS在三種云服務中,IaaS作為云計算的基礎層,具有最高的技術壁壘和產(chǎn)品的標準化程度。該領域的國外市場主要由亞馬遜、微軟、谷歌和IBM這四家巨頭占據(jù), 國內(nèi)主要有阿里巴巴、華為、騰訊、金山云等服務商。有一些PaaS和SaaS平臺本身就建立在IaaS之上,只不過會針對具體的行業(yè)和應用場景提供針對性的服務。對于企業(yè)用戶來說,完全可以根據(jù)自身的需要來選用不同的公有云服務。公有云服務企業(yè)還可以綜合使用公有云和私有云,這種模式稱為混合云。通常使用公有云來儲存和開發(fā)大多數(shù)不涉及敏感信息的系統(tǒng), 使用私有云來管理核心資源和敏感信息。二者通過專用的安全接口進
13、行交互,對于用戶來說,可能感覺不到公有云和私有云的差別。這種使用云計算的方式改變了過去購買和維護大量軟硬件資產(chǎn)的模式,完全可以按需購買云資源,除了可以節(jié)省管理和維護的精力以外, 關鍵是能實現(xiàn)可擴容。當企業(yè)規(guī)模不大、或者計算資源要求不高的時候,可以選用較低的配置,當業(yè)務擴大的時候,可以隨時購買資源, 最大化地避免浪費,也能實時地實現(xiàn)升級。混合云212121并行計算框架并行計算(Parallel Computing)是指將計算或者數(shù)據(jù)劃分為多個部分再分配到不同處理單元上同時運行的計算過程,以達到加快求解 速度或者擴大求解問題規(guī)模的目的(劉文志,2015)。在實際工作中,研究者對算法的要求首先是能解
14、決問題,然后是提升性能。由于算法的優(yōu)化具有極限, 當無法繼續(xù)從串行算法上進行優(yōu)化時,研究者可以將算法改成并行的形式:通過多個計算結(jié)點的并行計算,減少運算時間或者擺脫內(nèi)存的限制。一旦并行算法開發(fā)和 部署完成,當未來數(shù)據(jù)量增加的時候,仍可以簡單地通過添加計算結(jié)點來解決性能的問題。并行計算簡介根據(jù)實現(xiàn)層次的差異,并行計算可以分為單核指令集并行、多核并行、多處理器并行和分布式并行四種類型(張舒,褚艷利, 2012)。其中最微觀的是單核指令集并行(Instruction-Level Parallelism,簡稱ILP),讓單個處理器的執(zhí)行單元同時執(zhí)行多條指令。向上一層是多核并行(Multi-core),
15、在一個芯片上集成多個處理器核心,實現(xiàn)線程級并行(Thread-Level Parallelism,簡稱TLP)。再往上是多處理器并行(Multi-processor), 在一臺計算機中安裝多個處理器,實現(xiàn)線程和進程級并行。最上層的是分布式并行,通過網(wǎng)絡將多臺計算機連接成集群(Cluster),實現(xiàn)更大規(guī)模的并行計算。并行計算簡介常見的并行模式是單機多核或者多臺計算機組成的集群。雖然支持不同層次并行計算的框架和工具有所不同,但其“分而治之”的思想是相通的。在并行計算的框架中,通常存在一臺主機(Master)和多臺從機(Slave)。主機也稱為管理結(jié)點(Manage Node),通常負責和串行程序
16、連接以及對并行任務進行分發(fā)調(diào)度。從機也稱為工作結(jié)點(Work Node),主要負責具體的并行計算工作。主機和從機都是抽象的概念,可以代表不同的核或者線程,不一定對應著真實的計算機。并行計算簡介最簡單的并行范式是“分發(fā)/匯集”(Scatter/Gather)模式:主機把要做的計算分解成塊,然后把任務塊發(fā)送給從機;從機在每個塊上進行計算,并將結(jié)果發(fā)送回 主機;最后主機把結(jié)果匯集起來,從而實現(xiàn)并行計算。在這個過程中,主機需要和每個從機進行通信,從機之間不需要通信,可以簡單理解成各個結(jié)點并列地工作、 各自完成一部分任務。并行計算簡介并行計算簡介并行計算簡介代碼如下:并行計算簡介并行計算簡介代碼如下:并
17、行計算簡介并行計算簡介代碼如下:并行計算簡介并行計算簡介從消耗的時間來看,性能有了明顯的提升,R和Python中都從分鐘級提升到了秒級,而且程序結(jié)構(gòu)也得到了簡化。并行計算簡介代碼如下:并行計算簡介在R中使用內(nèi)置的 parallel 包,這是一個基于“分發(fā)/匯集”模式的簡單框架,可以在單機中實現(xiàn)多核計算,也可以基于Socket的通信方式建立網(wǎng)絡集群。在Python中,則使用 multiprocessing 包。這是一個多進程并行的框架。在這個例子中,參數(shù) cls 表示集群對象,這本來是多臺計算機組成的集群的概念,但是在單機多核的場景下,也可以代表進程池。并行計算簡介并行計算簡介代碼如下:并行計算
18、簡介從結(jié)果可以發(fā)現(xiàn),性能提升了2倍左右。理論上4個計算結(jié)點有可能提升4倍,但實際上并行任務的分發(fā)過程中會存在延遲, 并行的結(jié)點越多,在延遲上花費的時間可能會越多。但如果結(jié)點太少,并行的程度就會下降。而且在實際的并行工作中, 還需要將任務或者數(shù)據(jù)進行分塊,并且在并行框架中控制不同的調(diào)度方式,從而實現(xiàn)負載均衡,也盡可能地優(yōu)化整體的計算時間。并行計算簡介共享內(nèi)存是一種典型的并行范式,指多個并行的進程通過存取機器中所共享內(nèi)存單元來互相通信的過程,需要特定的硬件支持。 常見的共享內(nèi)存硬件有多核機器、加速芯片、圖形處理單元(GPU)。在支持共享內(nèi)存的并行框架中, 進程通過相同的內(nèi)存地址訪問相同數(shù)據(jù),如圖所
19、示。如果數(shù)據(jù)被某個進程修改,那么其他進程獲取的數(shù)據(jù)也會隨之改變。共享內(nèi)存和GPU計算共享內(nèi)存機制共享內(nèi)存和GPU計算共享內(nèi)存和GPU計算在并行程序中可能存在各結(jié)點都要讀寫某些資源的情況,相關的代碼區(qū)域稱為臨界區(qū)。假如程序需要對某個共享內(nèi)存中變量 tot 的值每次加1, 在單個結(jié)點中,每次操作會先讀取 tot 的當前值,進行加1運算后將新的數(shù)值寫回 tot 。如果兩個結(jié)點取得了相同的中間值,計算后再先后把相同的結(jié)果寫回變量,就起不到累加的作用了,最終導致計算結(jié)果錯誤。 為了防范這種情況,需要一種機制限制在同一個時刻只有一個進程或者線程存取臨界區(qū),這被稱為互斥。一種常見的機制是使用鎖變量(Lock
20、 Variable)或者互斥量 (Mutex)。共享內(nèi)存和GPU計算共享內(nèi)存和GPU計算共享內(nèi)存和GPU計算另一種常見的共享內(nèi)存框架是GPU計算,目前最常用的框架是NVIDIA公司于2007年推出的CUDA (Compute Unified Device Architecture),其基于C/C+提供了一套編程接口和模板庫。利用CUDA 技術,可以將顯卡上所有的內(nèi)處理器串通起來,成 為線程處理器去解決數(shù)據(jù)密集的計算。在CUDA中,用主機(Host)指代CPU和內(nèi)存,設備(Device)指代GPU和顯存,一般把共享的顯卡內(nèi)存稱為全局內(nèi)存,而“共享 內(nèi)存”通常指的是緩存。設備上運行的函數(shù)是主機通過
21、調(diào)用CUDA核函數(shù)(Kernel Function)啟動。CUDA 函數(shù)庫包括了在設備上為數(shù)據(jù)對象分配空間以及在主機與設備之間互相傳遞數(shù)據(jù)的程序。CUDA 應用了單指令多線程(SIMT)的并行模式,其最基礎的計算單元稱為核(Core),也稱為流式處理器 (Streaming Processor,簡稱SP)。多個核集在一起被稱為多流處理器(Streaming Multiprocessor,簡稱SM)。 一個GPU 由多個SM 構(gòu)成,每個SM 獨立運行,但可以共享 GPU 全局內(nèi)存。共享內(nèi)存和GPU計算下頁圖來自NVIDIA官網(wǎng),描述了GPU和CPU在硬件構(gòu)成上的差異。很明顯GPU中作為計算單元的
22、核心(Core)數(shù) 比較多,但多個計算核心才共用一個比較小的控制單元(Control)和緩存(Cache)。CPU則相反,計算核心占比比較少,控制單元和緩存占比比較多。 大量的緩存可以縮小因核和內(nèi)存的距離增加而帶來的延遲。從硬件結(jié)構(gòu)可以發(fā)現(xiàn),CPU適合處理復雜邏輯的問題,GPU適合密集型計算。共享內(nèi)存和GPU計算CPU和GPU共享內(nèi)存和GPU計算CUDA 本質(zhì)上是一個C+框架,可以直接使用C+原生程序,也可以使用Thrust代碼庫,從而實現(xiàn)更高效的開發(fā)。R和Python中可以調(diào)用C+編寫的CUDA程序從而實現(xiàn)GPU操作,也可以使用一些更方便的第三方包,例如R 中的 gputools 和 gpu
23、R 封裝了很多常用算法,Python中的 pyCUDA 可以直接基于Python實現(xiàn) CUDA編程。讀者可以查閱相關資料進行更深入的研究。共享內(nèi)存和GPU計算在傳統(tǒng)的“分發(fā)/匯集”模式中,從機只和主機進行通信。如果允許從機之間也可以互相通信,可以通過“消息傳遞范式”來實現(xiàn)。 消息傳遞是一個軟件上的概念,因此并不要求硬件平臺具有特殊的結(jié)構(gòu)。由于從機之間可以互相通信,理論上可以精準控制 任意結(jié)點的行為,從而可以通過算法盡可能地優(yōu)化性能。當前最流行的消息傳遞并行框架是基于C函數(shù)庫的消息傳遞接口(Message Passing Interface,MPI),于1991 年在奧地利發(fā)起、1992 年形成
24、了標準、1997 年進行重大擴充。 MPI存在不同的軟件實現(xiàn)方式,常用的有OpenMPI、MPICH2、Microsoft MPI等。MPI并行本節(jié)以Windows系統(tǒng)為例,安裝 Microsoft MPI 展示。讀者可到微軟官網(wǎng)下載“MSMpiSetup.exe”文件進行默認安裝。 如果是Mac或者Linux系統(tǒng),可以安裝相應的MPI程序,并設置好環(huán)境變量,將可以通過操作系統(tǒng)的命令行來實現(xiàn)MPI編程。在R中可以使用 pbdMPI 包,在Python中可以使用 mpi4py 包。示例代碼如下:MPI并行示例代碼如下:MPI并行MPI并行MPI并行555555分布式存儲與HADOOP理論上,使用
25、MPI等框架可以解決任何并行計算的問題。通過之前的例子可以發(fā)現(xiàn),針對特定的任務開發(fā)并行算法雖然靈活高效, 但是工作量巨大。尤其在工程應用中,光是高效地實現(xiàn)算法還不夠,還需要考慮系統(tǒng)的健壯性、負載均衡、數(shù)據(jù)的分布式存儲與分發(fā)、 計算中的容錯處理等諸多問題。這使得日常工作中使用并行計算的代價很高,一般只有在遇到非常重要的性能問題時才會從底層的并行算法入手。如果有并行框架可以提供一套標準的分布式存儲方案,并且自動處理冗余備份、解決分發(fā)調(diào)度等工程問題,使得用戶只需要關注并行任務和算法,哪怕 犧牲掉一些性能, 也能極大地減輕并行計算的工作量。這就是以Hadoop為代表的并行框架存在的價值所在,是并行算法
26、和云計算平臺能夠迅速大規(guī)模流行的重要原因。分布式存儲與Hadoop對于數(shù)據(jù)科學家,最重要的能力是使用模型和算法解決問題,至于是否需要進一步提升算法的性能、是否需要并行地實現(xiàn), 通常不是其首要任務。因此,數(shù)據(jù)科學家的常用工作環(huán)境不大可能是分布式集群。如果要學習或?qū)嶒灧植际剿惴?,需要手動搭建分布式?計算機集群,或者租用多臺云服務器,時間和成本的花費比較大。對于云平臺的運維工程師,需要管理很多臺計算機,雖然都可以遠程訪問,但如果集群中計算機的數(shù)目過大,安裝和調(diào)試 的工作量也會很大。而且云服務通常由服務商通過本地的硬件集群來提供遠程的服務,使得遠程用戶感覺不到硬件的限制并且可以很輕松地擴容, 也需要
27、系統(tǒng)的支持。容器與Docker以上問題都可以通過虛擬化技術解決。所謂虛擬化技術,可以看作將一臺計算機虛擬為一臺或多臺邏輯計算機,每臺邏輯計算機可運行不同的操作系統(tǒng), 并且應用程序可以彼此獨立不互相干擾。數(shù)據(jù)科學家可以在普通的Windows電腦上虛擬出一個Linux系統(tǒng)的集群來實驗并行算法, 云平臺的運維工程師也可以將一臺主機虛擬化成多臺供遠程訪問的邏輯計算機。過去常用的虛擬化技術是虛擬機監(jiān)視器(又稱Hypervisor), 其基本原理是通過中間層將一臺或多臺獨立的機器虛擬運行于物理硬件上,雖然使用方便但是會明顯地損失計算性能。容器與Docker在云計算服務里,性能是非常重要的,因此輕量化的虛擬
28、化技術有了廣泛的需求,其中最典型的是容器技術。容器虛擬化是一種操作系統(tǒng)層面的虛擬化, 最早的原型可以簡化為對目錄結(jié)果的簡單抽象,2000年,Linux平臺開始出現(xiàn)一些商用的容器技術,到現(xiàn)在容器技術已經(jīng)成了云計算虛擬化的主流, 最常用的工具是Docker。Docker公司的前身是dotCloud,于2010年成立于美國舊金山,專注于PaaS平臺。2013年,dotCloud將其核心技術Docker開源, 基于Apache2.0協(xié)議發(fā)布。Docker是一個能夠把開發(fā)的應用程序自動部署到 容器的引擎,發(fā)布后很快風靡全球,隨后dotCloud 公司改名為 Docker Inc。容器與Docker基于D
29、ocker技術,研究者可以很容易地把云計算集群中每一個節(jié)點需要安裝配置的工具部署在容器中,然后以文件的形式將容器分發(fā)到各個節(jié)點, 以實現(xiàn)統(tǒng)一的管理和維護。在學習的過程中,也可以使用容器來虛擬一套Linux系統(tǒng)的集群,本節(jié)以Windows為例演示Docker的操作方式, 并用來介紹Hadoop和Spark的操作方式。Mac和Linux下安裝Docker更加容易,使用方式完全一樣,因此不做專門的介紹。容器與Docker讀者可在Docker官網(wǎng)下載“Docker Desktop”并選擇Windows下的“Stable”版本,可以下載得到一個“Docker Desktop Installer.exe”
30、文件,雙擊安裝即可。推薦的操作系統(tǒng)為64位Windows 10下的專業(yè)版、企業(yè)版和教育版,但當前版本的Docker也支持 Windows 10家庭版,需要把操作系統(tǒng)更新到最新,否則安裝時有可能提示錯誤信息“Docker Desktop requires Windows 10 Pro/Enterprise (15063+) or Windows 10 Home (19018+).”。容器與Docker安裝成功后啟動“Docker Desktop”,會在桌面右下角出現(xiàn)Docker的圖標,點擊后選擇“About Docker Desktop”,會顯示圖中的信息,說明成功安裝。容器與Docker在桌面
31、右下角的Docker界面下點擊“Dashboard”打開控制臺,可以管理容器和進行常規(guī)設置。例如可以把默認的鏡像地址設為國內(nèi)的源,這樣下載資源的速度會非???。在設置界面下點擊“Docker Engine”,在JSON格式的字符串的 “registry-mirrors”項目內(nèi)填寫地址即可。容器與Docker假設讀者希望更新成163的源,按照圖的方式設置即可。容器與Docker容器與Docker容器與Docker以上命令會自動下載鏡像文件,完成后創(chuàng)建一個容器,并使用“root”賬號登錄到系統(tǒng)中,如圖。容器與Docker容器與Docker容器與Docker在本例中,剛才新建的容器以及下載的鏡像如圖。
32、查看容器和鏡像容器與Docker容器與Docker容器與Docker容器與Docker就會在本地自動創(chuàng)建鏡像文件,之后可以基于這個本地鏡像來創(chuàng)建新的容器。如果想把該鏡像上傳到Docker Hub,可以運行 以下命令:容器與Docker容器與Docker容器與Docker容器與Docker容器與DockerHadoop 是一款以 Apache 2.0 許可協(xié)議發(fā)布的開源軟件框架,根據(jù)谷歌公司發(fā)表的 MapReduce 并行計算框架和谷歌文件系統(tǒng)的論文開發(fā)實現(xiàn)。 2008年Hadoop成為Apache的頂級項目,開始進入1.0時代。2012年Hadoop發(fā)布了2.0版本,引入了資源管理平臺YARN
33、。當前版本的Hadoop包含以下幾個模塊:Hadoop Common:基礎功能模塊,用來支持其他模塊。HDFS:分布式文件系統(tǒng),可以對應用數(shù)據(jù)進行高吞吐量的訪問。Hadoop YARN:一套作業(yè)調(diào)度和集群資源管理框架。Hadoop MapReduce:基于YARN的分布式計算框架。Hadoop與MapReduce在當前的2.X版本下,底層的基礎是HDFS文件系統(tǒng),用來存儲大數(shù)據(jù)。 其上是資源調(diào)度框架YARN,是整個平臺正常運行的基礎。在YARN之上是各種應用層,最具代表性的是分布式計算框架MapReduce。Hadoop與MapReduce下圖顯示了Hadoop平臺的框架架構(gòu)。Hadoop架構(gòu)
34、(圖片來源于“Big Data Analytics News”網(wǎng)站)Hadoop與MapReduceHadoop的安裝和配置比較繁瑣,在實際的工作中需要安裝在Linux系統(tǒng)的集群中。每個工作結(jié)點都要單獨安裝,并且要通過各種配置文件 來組成集群。好在Docker提供了容器的功能,能夠通過安裝配置好的鏡像在生產(chǎn)系統(tǒng)中生產(chǎn)容器,也可以在測試環(huán)境中虛擬化一個集群。 本節(jié)仍以Windows系統(tǒng)為例,使用Docker在Docker Hub中下載一個安裝配置好的Hadoop鏡像并創(chuàng)建Hadoop網(wǎng)絡:Hadoop與MapReduce該鏡像基于 Ubuntu 14.04 生成,包含了 Hadoop 2.7.2。讀者可以創(chuàng)建一個最小的Hadoop集群,包含一個主機(命名為hadoop-master)和兩個從機(分別命名為hadoop-slave1和hadoop-slave2):Hadoop與MapReduce成功創(chuàng)建容器后可以在Docker的管理界面下查看,如圖所示。綠色圖標表示服務器開啟, 可以通過點擊“CLI”圖標進入容器的命令行模式。開啟Hadoop集群Hadoop與MapReduceHadoop與MapReduce結(jié)果如圖所示。在本例中,主機hadoop-master的IP地址為“”, 兩個從機的IP地址分別為“”和“”。查看集群各結(jié)點的IP地址Hadoop與MapReduce在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 IEC 60947:2025 SER EN-FR Low-voltage switchgear and controlgear - ALL PARTS
- 山東省德州市第二中學2024-2025學年高三上學期第三次學情檢測歷史試題(含答案)
- 廣東省肇慶市2025屆高中畢業(yè)班第二次模擬考試生物學試題(含答案)
- 重大版小學英語四年級上冊期末試卷(含答案含聽力原文無音頻)
- 2025年度大型儲藏室購置與倉儲運營管理合同3篇
- 2024設計圖紙合同-智能家居系統(tǒng)設計3篇
- 2024版基礎設施施工協(xié)議
- 2024年游覽的景物作文300字
- 2024版電商園區(qū)供應鏈合同
- 2024潤滑油品牌授權合作合同樣本3篇
- 教育管理學課件-管理、教育管理和教育管理學之概述
- 2025年廣西事業(yè)單位聯(lián)考招聘高頻重點提升(共500題)附帶答案詳解
- 真需求-打開商業(yè)世界的萬能鑰匙
- 2025五金配件購銷合同范本
- 2025年中儲糧儲運限公司公開招聘高頻重點提升(共500題)附帶答案詳解
- AS16571992固定平臺走道樓梯與梯子的設計施工與安裝
- 《鋰離子電池用二氟草酸硼酸鋰》
- 【MOOC】《形勢與政策》(北京科技大學)中國大學MOOC慕課答案
- 中學生心理健康教育主題班會課件
- 稅務新政策培訓
- 2024-2030年中國第三方檢測認證行業(yè)發(fā)展創(chuàng)新模式及投資規(guī)劃分析報告版
評論
0/150
提交評論