官术网_书友最值得收藏!

1.2 大數據處理的基礎技術

大數據的存儲、處理與分析依賴于分布式計算機系統,理解分布式系統基本理論對掌握以Hadoop為代表的計算機分布式系統體系架構、MapReduce分布式計算框架以及HDFS分布式文件系統有重要幫助。

分布式計算機系統是指由多臺分散的、硬件自治的計算機,經過互聯的網絡連接而形成的系統,系統的處理和控制功能分布在各個計算機上。分布式系統由許多獨立的、可協同工作的CPU組成,從用戶的角度看,整個系統更像一臺獨立的計算機。分布式系統是從分散處理的概念出發來組織計算機系統,沖破了傳統的集中式單機局面,具有較高的性價比,靈活的系統可擴展性,良好的實時性、可靠性與容錯性。

此外,組成分布式系統的各計算機節點由分布式操作系統管理,以便讓各個節點共同承擔整個計算功能。分布式操作系統由內核以及提供各種系統功能的模塊和進程組成,不僅包括了單機操作系統的主要功能,還包括分布式進程通信、分布式文件系統、分布式進程遷移、分布式進程同步和分布式進程死鎖等功能。系統中的每一臺計算機都保存分布式操作系統的內核,以實現對計算機系統的基本控制。常見的分布式系統有分布式計算系統、分布式文件系統和分布式數據庫系統等。

下面先介紹大數據的處理流程,然后簡要介紹與大數據處理流程相關的基礎技術,如分布式技術、數據庫技術和云計算技術等。

1.2.1 大數據處理流程

一般而言,大數據處理流程可分為四步:數據采集、數據清洗與預處理、數據統計分析和挖掘、結果可視化,如圖1.3所示。這四個步驟看起來與現在的數據處理分析沒有太大區別,但實際上數據集更大,相互之間的關聯更多,需要的計算量也更大,通常需要在分布式系統上,利用分布式計算完成。

圖1.3 大數據處理流程

1.數據采集

數據的采集一般采用ETL(Extract-Transform-Load)工具將分布的、異構數據源中的數據(如關系數據、平面數據以及其他非結構化數據等)抽取到臨時文件或數據庫中。大數據的采集不是抽樣調查,它強調數據盡可能完整和全面,盡量保證每一個數據準確有用。

2.數據清洗與預處理

采集好的數據,肯定有不少是重復的或無用的,此時需要對數據進行簡單的清洗和預處理,使得不同來源的數據整合成一致的、適合數據分析算法和工具讀取的數據,如數據去重、異常處理和數據歸一化等,然后將這些數據存儲到大型分布式數據庫或者分布式存儲集群中。

3.數據統計分析和挖掘

統計分析需要使用工具(如SPSS工具、一些結構算法模型)來進行分類匯總。這個過程最大的特點是目的清晰,按照一定規則去分類匯總,才能得到有效的分析結果。這部分處理工作需要大量的系統資源。

分析數據的最終目的是通過數據來挖掘數據背后的聯系,分析原因,找出規律,然后應用到實際業務中。與統計分析過程不同的是,數據挖掘一般沒有什么預先設定好的主題,主要是在現有數據上面進行基于各種算法的計算,通過分析結果達到預測趨勢的目的,以滿足一些高級別數據分析的需求。比較典型的算法有用于聚類的Kmeans、用于統計學習的SVM和用于分類的NaiveBayes,主要使用的工具有Hadoop的Mahout等。

4.結果可視化

大數據分析最基本的要求是結果可視化,因為可視化結果能夠直觀地呈現大數據的特點,非常容易被用戶所接受,就如同看圖說話一樣簡單明了。

大數據處理流程基本是這四個步驟,不過其中的處理細節、工具的使用、數據的完整性等需要結合業務和行業特點而不斷變化更新。

1.2.2 分布式計算

分布式計算是相對于集中式計算而言的,它將需要進行大量計算的項目數據分割成小塊,由分布式系統中多臺計算機節點分別計算,再合并計算結果并得出統一的數據結論。要達到分布式計算的目的,需要編寫能在分布式系統上運行的分布式計算機程序。分布式程序可以基于通用的并行分布式程序開發接口進行設計,例如MPI、Corba、OpenMP、MapReduce和Spark等。

分布式計算的目的在于分析海量的數據,例如,從雷達監測的海量歷史信號中分析異常信號,淘寶“雙十一”實時計算各地區的消費習慣等。SETI@home是比較有代表性的分布式計算項目,是由美國加州大學伯克利分校創立的一項利用全球聯網的計算機共同搜尋地外文明(SETI)的科學實驗計劃。該項目通過互聯網進行數據傳輸,利用世界各地志愿者計算機的閑置計算能力,分析地外無線電信號,搜索外星生命跡象。該項目數據基數很大,有著千萬位數的數據量,已有百余萬志愿者加入這個項目。他們通過運行一個免費程序下載并分析從射電望遠鏡傳來的數據。

人們最初是通過提高單機計算能力性能(如使用大型機、超級計算機)來處理海量數據。但由于單機的性能無法跟上數據爆發式增長的需要,分布式計算應運而生。由于計算需要拆分在多個計算機上并行運行,也會出現一致性、數據完整性、通信、容災、任務調度等一系列問題。

術語“分布式計算(Distributed Computing)”與“并行計算(Parallel Computing)”沒有特別明確的區別,同一個系統可能同時被特指為“并行的(Parallel)”和“分布式的(Distributed)”。一個典型的分布式系統中的各處理器是以并行的形式運作的,可以稱為并行分布式計算(Parallel Distributed Computing)。此時,并行計算也可能以分布式計算的一種密集形式出現,而分布式計算也可能以并行計算的一種較松散形式出現。不過,可利用下列標準粗略地將“并行系統”與“分布式系統”區分開。

(1)若所有的處理器共享內存,共享的內存可以讓多個處理器彼此交換信息,是并行計算。

(2)若每個處理器都有其獨享的內存(分布式內存),數據交換通過處理器跨網絡完成信息傳遞,則為分布式計算或分布式并行計算。

1.2.3 分布式文件系統

分布式文件系統是將數據分散存儲在多臺獨立的設備上,采用可擴展的系統結構,多臺存儲服務器分擔存儲負荷,利用元數據定位數據在服務器中的存儲位置,具有較高的系統可靠性、可用性和存取效率,并且易于擴展。而傳統的網絡存儲系統則采用集中的存儲服務器存放所有數據,這樣存儲服務器就成為了整個系統的瓶頸,也成為了可靠性和安全性的焦點,不能滿足大數據存儲應用的需要。

分布式文件系統利用分布式技術將標準X86服務器的本地HDD、SSD等存儲介質組織成一個大規模存儲資源池,同時,對上層的應用和虛擬機提供工業界標準的SCSI、i SCSI和對象訪問接口,進而打造一個虛擬的分布式統一存儲產品。常見的分布式存儲系統有谷歌的GFS系統、Hadoop的HDFS系統、加州大學圣克魯茲分校提出的Ceph系統等。

分布式文件系統的關鍵技術如下。

1.元數據管理

元數據(Metadata)為描述數據的數據,主要是描述數據屬性的信息,用來支持存儲位置描述、歷史數據描述、資源查找、文件記錄等功能。

在大數據環境下,要求數據分布式存儲,描述數據的元數據的體量也會非常大,所以如何管理好元數據、并保證元數據的存取性能是整個分布式文件系統性能的關鍵。集中式管理架構和分布式管理架構是兩種常見的元數據管理方式。集中式元數據管理采用單一的元數據服務器框架,實現簡單,但是存在單點故障等問題。分布式元數據管理則將元數據分散在多個節點上,解決了元數據服務器的性能瓶頸等問題,并提高了元數據管理的可擴展性,但實現較為復雜,并引入了元數據一致性的問題。

另外,可以通過在線算法組織數據,建立無元數據服務器的分布式架構,但是該架構實現復雜,而且很難保證數據一致性,文件目錄遍歷操作的效率低下,缺乏文件系統全局監控管理功能。

2.系統高可擴展技術

在大數據環境下,數據規模的增長和復雜度的增加往往成指數上升,這對系統的擴展性提出了較高的要求。實現存儲系統的高可擴展性需要解決元數據的分配和數據的透明遷移兩個方面的問題。元數據的分配主要通過靜態子樹劃分技術實現,透明遷移則側重數據遷移算法的優化。

大數據存儲體系規模龐大,節點失效率高,因此還需要提供一定的自適應管理功能。系統必須能夠根據數據量和計算的工作量估算所需要的節點個數,并動態地將數據在節點間進行遷移,以實現負載均衡;在節點失效時,數據必須能夠通過副本等機制進行恢復,不能對上層應用產生影響。

3.存儲層級內的優化技術

大數據的規模大,因此需要在保證系統性能的前提下,降低系統能耗和構建成本,即從性能和成本兩個角度對存儲層次進行優化,數據訪問局部性原理是進行這兩方面優化的重要依據,通常采用多層不同性價比的存儲器件組成存儲層次結構。從提高性能的角度,可以通過分析應用特征,識別熱點數據并對其進行緩存或預取,通過高效的緩存預取算法和合理的緩存容量配比,以提高訪問性能。從降低成本的角度,采用信息生命周期管理方法,將訪問頻率低的冷數據遷移到低速廉價存儲設備上,可以在小幅犧牲系統整體性能的基礎上,大幅降低系統的構建成本和能耗。

4.針對應用和負載的存儲優化技術

針對應用和負載來優化存儲,就是將數據存儲與應用耦合,簡化或擴展分布式文件系統的功能,根據特定應用、特定負載、特定的計算模型對文件系統進行定制和深度優化,使應用達到最佳性能。這類優化技術可在諸如谷歌、Facebook等互聯網公司的內部存儲系統上,高效地管理超過千萬億字節級別的大數據。

1.2.4 分布式數據庫

分布式數據庫的基本思想是將原來集中式數據庫中的數據分散存儲到多個通過網絡連接的數據存儲節點上,以獲取更大的存儲容量和更高的并發訪問量。分布式數據庫系統可以由多個異構、位置分布、跨網絡的計算機節點組成。每臺計算機節點中都可以有數據庫管理系統的一份完整或部分拷貝副本,并具有自己局部的數據庫。多臺計算機節點利用高速計算機網絡將物理上分散的多個數據存儲單元相互連接起來,共同組成一個完整的、全局的、邏輯上集中、物理上分布的大型數據庫系統。

隨著數據量的高速增長,分布式數據庫技術得到了快速的發展。傳統的關系型數據庫開始從集中式模型向分布式架構發展,基于關系型的分布式數據庫在保留了傳統數據庫的數據模型和基本特征下,從集中式存儲走向分布式存儲,從集中式計算走向分布式計算。

為了快速處理海量的數據,分布式數據庫系統在數據壓縮和讀寫方面進行了優化,并行加載技術和行列壓縮存儲技術是兩種常用技術。并行加載技術利用并行數據流引擎,數據加載完全并行,并且可以直接通過SQL語句對外部表進行操作。行列壓縮存儲技術的壓縮表通過利用空閑的CPU資源而減少I/O資源占用,除了支持主流的行存儲模式外,還支持列存儲模式。如果常用的查詢中只取表中少量字段,則列模式效率更高;如果需要取表中的大量字段,則行模式效率更高,可以根據不同的應用需求提高查詢效率。

應對大數據處理的分布式數據庫系統可以歸納為關系型和非關系型兩種。隨著數據量越來越大,關系型數據庫開始在高可擴展性、高并發性等方面暴露出一些難以克服的缺點,而Key-Value存儲系統、文檔型數據庫等NoSQL非關系型數據庫,逐漸成為大數據時代下分布式數據庫領域的主力,如HBase、MongoDB、VoltDB、ScaleBase等。

適應于大數據存儲的分布式數據庫應具有高可擴展性、高并發性、高可用性三方面的特征。

(1)高可擴展性:分布式數據庫具有高可擴展性,能夠動態地增添存儲節點以實現存儲容量的線性擴展。

(2)高并發性:分布式數據庫能及時響應大規模用戶的讀/寫請求,能對海量數據進行隨機讀/寫。

(3)高可用性:分布式數據庫提供容錯機制,能夠實現對數據的冗余備份,保證數據和服務的高度可靠性。

1.2.5 數據庫與數據倉庫

數據庫和數據倉庫在概念上有很多相似之處,但是有本質上的差別。數據倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrated)、相對穩定的(Non-Volatile)、反映歷史變化(Time Variant)的數據集合,用于支持管理決策。而數據庫是按照一定數據結構來組織、存儲和管理數據的數據集合。數據倉庫所在層面比數據庫更高,換言之,一個數據倉庫可以采用不同種類的數據庫實現。兩者差異主要歸結為以下幾點:

(1)在結構設計上,數據庫主要面向事務設計,數據倉庫主要面向主題設計。所謂面向主題設計,是指數據倉庫中的數據按照一定的主題域進行組織;

(2)在存儲內容上,數據庫一般存儲的是在線數據,對數據的變更歷史往往不存儲,而數據倉庫一般存儲的是歷史數據,以支持分析決策;

(3)在冗余上,數據庫設計盡量避免冗余以維持高效快速的存取,數據倉庫往往有意引入冗余;

(4)在使用目的上,數據庫的引入是為了捕獲和存取數據,數據倉庫是為了分析數據。

在大數據處理分析方面,往往沿著從非結構數據中抽取特定結構化數據存儲在關系數據庫中,再從關系數據庫抽取數據形成數據倉庫,以支持最終的決策與分析從而體現大數據的價值。

1.2.6 云計算與虛擬化技術

云計算是硬件資源的虛擬化,而大數據是海量數據的高效處理,云計算作為計算資源的底層,支撐著上層的大數據存儲和處理。本小節將概要介紹云計算、虛擬化及它們的關系。

1.云計算

云計算(Cloud Computing)是基于互聯網的相關服務的增加、使用和交付模式,通常涉及通過互聯網來提供動態、易擴展且虛擬化的資源。云是網絡、互聯網的一種比喻說法。以前往往用云來表示電信網,后來也用來表示互聯網和底層基礎設施的抽象。因此,云計算甚至可以讓你體驗每秒10萬億次的運算能力,這么強大的計算能力甚至于可以模擬核爆炸、預測氣候變化和市場發展趨勢等。用戶只需通過PC、筆記本電腦、手機等方式接入云端,就可按自己的需求進行運算。

對云計算的定義有多種說法,現階段被業界廣為接受的是美國國家標準與技術研究院(National Institute of Standards and Technology,NIST)給出的定義:云計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問,進入可配置的計算資源共享池(資源包括網絡、服務器、存儲、應用軟件和服務)。用戶只需投入較少的管理工作,或與服務供應商進行輕量級的交互,就能快速獲取這些資源。

2.虛擬化

虛擬化一般是指將物理的實體,通過軟件模式,形成若干虛擬存在的系統,其實際運作還是在實體上,只是劃分了若干區域或者時域。虛擬化大致分為四類:內存虛擬化、網絡虛擬化、存儲虛擬化、服務器虛擬化。

內存虛擬化:是指利用虛擬化技術實現對計算機內存的管理。從上層應用來看,內存虛擬化系統使得其具有連續可用的內存,即一個連續而完整的地址空間。從物理層來看,通常被分割成多個物理內存碎片。內存虛擬化的作用更多的是滿足對內存的分配,對必要的數據進行交換。

存儲虛擬化:存儲虛擬化是將存儲資源的邏輯視圖和物理存儲分離,從而為系統提供無縫的資源管理。由于存儲標準化程度低,存儲兼容是必須要考慮的一個問題,如果存儲虛擬化技術源自不同的廠商,那么,就會增加后續升級和更新的難度。

網絡虛擬化:網絡虛擬化是利用軟件從物理網絡元素中分離網絡的一種方式,網絡虛擬化與其他形式的虛擬化有很多共同之處。網絡虛擬化也面臨著技術挑戰,網絡設備和服務器不同,一般需要執行高I/O任務,在數據處理方面往往有專用的硬件模塊。

服務器虛擬化:服務器虛擬化是將服務器的CPU、內存、磁盤等硬件集中管理,通過集中式的動態按需分配,提高資源的利用率。

KVM(Kernel-based Virtual Machine)虛擬機是開源Linux原生的全虛擬化解決方案,它基于X86硬件的虛擬化擴展(Intel VT或者AMD-V技術)。在KVM中,虛擬機被實現為常規的Linux進程,由標準Linux調度程序進行調度;而虛擬機的每個虛擬CPU則被實現為一個常規的Linux進程。這使得KMV能夠使用Linux 內核的已有功能。

3.云計算與虛擬化的關系

云計算是個概念,而不是具體技術。虛擬化是一種具體技術,指把硬件資源虛擬化,實現隔離性、可擴展性、安全性、資源可充分利用等。這兩者之間看似不相關,但背后卻依然有千絲萬縷的聯系。云計算的基礎是虛擬化,但虛擬化只是云計算的一部分,云計算是在虛擬化出若干資源池以后的應用。

基于上面的觀點,很多人認為虛擬化不過是云計算的基礎,是云計算快速發展的嫁衣,助推了云計算的發展,而且虛擬化只是云計算后面的一個小小的助推力。其實,虛擬化并不只有這些作用,虛擬化廣泛應用于IT領域中,針對不同的資源,有著相應的虛擬化技術。云計算的原理更多的是利用了虛擬化,但是虛擬化并不僅僅只服務云計算。

1.2.7 虛擬化產品介紹

1.VMware

VMware是全球桌面到數據中心虛擬化解決方案的領導廠商,在虛擬化和云計算基礎架構領域處于全球領先地位,VMware工作站(VMware Workstation)是VMware公司的商業軟件產品之一,該工作站軟件包含一個用于英特爾X86兼容計算機的虛擬機套裝,允許多個X86虛擬機同時被創建和運行,每個虛擬機實例可以運行自己的客戶機操作系統,如Windows、Linux、BSD變生版本。

運行VMware工作站進程的計算機和操作系統實例被稱為宿主機,在一個虛擬機中運行的操作系統實例被稱為虛擬機客戶(又稱客戶機)。類似仿真器,VMware工作站為客戶操作系統提供完全虛擬化的硬件集。例如,客戶機只會檢測到一個AMD PCnet網絡適配器,而和宿主機上真正安裝的網絡適配器的制造商和型號無關。VMware在虛擬環境中將所有設備都虛擬化了,包括顯卡、網卡和硬盤,它還為串行和并行設備提供傳遞驅動程序(Pass-Through Drivers),通過該驅動程序可以將對這些虛擬設備的訪問傳遞到真實物理設備。

由于與宿主機的真實硬件無關,虛擬機使用的都是相同的硬件驅動程序,因此虛擬機對各種計算機都是高度可移植的。例如,一個運行中的虛擬機可以被暫停下來,并被拷貝到另外一臺作為宿主機的真實計算機上,然后從其被暫停的確切位置恢復運行。借助VMware的VirtualCenter產品中的Vmotion功能,甚至可以在移動一個虛擬機時不必將其暫停就可以向不同的宿主機上進行移植。

2.VirtualBox

VirtualBox是由德國Innotek公司開發,由Sun Microsystems公司出品的軟件,在Sun公司被Oracle公司收購后正式更名成Oracle VM VirtualBox。Innotek以GNU General Public License(GPL)發布VirtualBox,并提供二進制版本及OSE版本的代碼。使用者可以在VirtualBox上安裝并且執行Solaris、Windows、DOS、Linux、OS/2 Warp、BSD等系統作為客戶端操作系統。現在則由Oracle公司進行開發,是Oracle公司xVM虛擬化平臺技術的一部分。

VirtualBox號稱是最強的免費虛擬機軟件,它不僅特色明顯,而且性能也很優異,簡單易用。與同性質的VMware及Virtual PC相比,VirtualBox的獨到之處包括遠端桌面協定(RDP)、對iSCSI及USB的支持等。

本書采用VirtualBox搭建實驗環境,詳見2.4節。

3.OpenStack

OpenStack是一個由美國國家航空航天局(NASA)和Rackspace合作研發并發起的項目,是一個開源的云計算平臺,由來自世界各地的云計算開發人員共同創建。OpenStack通過一組相關的服務提供一個簡單,大規模可伸縮,功能豐富的基礎設施,即服務(IaaS)解決方案,其各組件之間的關系如圖1.4所示。

圖1.4 OpenStack架構圖

(1)Keystone認證服務

Keystone 管理用戶目錄以及用戶可以訪問的OpenStack服務的目錄,其目的是跨所有OpenStack組件暴露一個中央身份驗證機制。Keystone本身沒有提供身份驗證,但它可以集成其他各種目錄服務,如Pluggable Authentication Module、Lightweight Directory Access Protocol(LDAP)或OAuth。通過這些插件,它能夠實現多種形式的身份驗證,包括簡單的用戶名密碼和復雜的多因子系統。

(2)Nova計算服務

Nova控制云計算架構(基礎架構服務的核心組件),它是用Python編寫的,創建了一個抽象層,讓CPU、內存、網絡適配器和硬盤驅動器等服務器資源實現虛擬化管理(但并不實現具體的虛擬化技術),并具有提高利用率和自動化的功能。它的實時VM管理具有啟動、調整大小、掛起、停止和重新引導的功能。這是通過集成一組受支持的虛擬機管理程序來實現的。還有一個機制可以在計算節點上緩存VM鏡像,以實現更快的配置。在運行鏡像時,可以通過應用程序編程接口(API)以編程方式存儲和管理文件。

(3)Neutron網絡服務

Neutron提供了管理局域網的能力,具有適用于虛擬局域網(VLAN)、動態主機配置協議和IPv6的一些功能。用戶可以定義網絡、子網和路由器,以配置其內部拓撲,然后向這些網絡分配IP地址和VLAN,浮動IP地址允許用戶向VM分配(和再分配)固定的外部IP地址。

(4)Swift對象存儲服務

Swift是一個分布式存儲系統,主要用于靜態數據,比如VM鏡像、備份和存檔,將文件和其他對象寫入可能分布在一個或多個數據中心的一組磁盤驅動器,在整個集群內確保數據復制和完整性。

(5)Glance鏡像服務

Glance為VM鏡像提供了支持,除了發現、注冊和激活服務之外,它還有快照和備份功能。Glance鏡像可以充當模板,快速并且一致地部署新的服務器,其API服務器提供具象狀態傳輸(Representational State Transfer,REST)接口,用戶可以利用它來列出并獲取可分配給一組可擴展后端存儲(包括OpenStack Object Storage)的虛擬磁盤鏡像。

(6)Cinder塊存儲服務

Cinder管理計算實例所使用的塊級存儲,塊存儲非常適用于有嚴格性能約束的場景,比如數據庫和文件系統。與Cinder配合使用的最常見存儲是Linux服務器存儲,但也有一些面向其他平臺的插件,其中包括Ceph、NetApp、Nexenta和SolidFire。

(7)Horizon Web界面管理服務

Horizon Web是圖形用戶界面,管理員可以很方便地使用它來管理所有項目。

4.Docker

Docker是一個開源的引擎,可以輕松地為任何應用創建一個輕量級的、可移植的、自給自足的容器,通過容器可以在生產環境中批量地部署,包括VM(虛擬機)、BareMetal、OpenStack集群和其他基礎的應用平臺。

Docker可以解決虛擬機能夠解決的問題,同時也能夠解決虛擬機由于資源要求過高而無法解決的問題。利用Docker可以隔離應用依賴,創建應用鏡像并進行復制,允許實例簡單、快速地擴展, Docker背后的想法就是創建軟件程序可移植的輕量級容器,讓其可以在任何安裝了Docker的機器上運行,而不用關心底層操作系統。下面介紹Docker中最為重要的幾個概念。

(1)鏡像

Docker的鏡像類似虛擬機的快照,但更輕量。創建Docker鏡像有很多方式,多數是在一個現有鏡像基礎上創建新鏡像,在一個文件中指定一個基礎鏡像及完成需要的修改;或者通過運行一個鏡像,對其進行修改并提交。鏡像擁有唯一的ID,以及一個供人閱讀的名字和標簽對。

(2)容器

制作好鏡像后,就可以從鏡像中創建容器了,這相當于從快照中創建虛擬機一樣,不過更輕量,應用是由容器運行的。

容器與虛擬機一樣,是隔離的,它們也擁有一個唯一的ID和唯一的供人閱讀的名字。容器對外公開服務是必要的,因此Docker允許公開容器的特定端口。與虛擬機相比,容器有一個很大的差異,它們被設計用來運行單進程,無法很好地模擬一個完整的環境,Docker設計者極力推崇“一個容器一個進程的方式”。

容器是設計用來運行一個應用的,而非一臺機器。你也可以把容器當作虛擬機使用,但是會失去很多靈活性,因為Docker提供了用于分離應用與數據的工具,使得你可以快捷地更新運行中的代碼/系統,而不影響數據。

(3)數據卷

數據卷可以使一些數據在不受容器生命周期的影響下進行數據持久化。數據卷表現為容器內的空間,但實際保存在容器之外,從而允許用戶在不影響數據的情況下銷毀、重建、修改、丟棄容器。Docker允許用戶定義應用部分和數據部分,并提供工具將它們分開,使用Docker的思想是:容器應該是短暫和一次性的。

卷是針對容器的,用戶可以使用同一個鏡像創建多個容器并定義不同的卷。卷保存在運行Docker的宿主機文件系統上,用戶可以指定卷存放的目錄,或讓Docker保存在默認位置。卷還可以用來在容器間共享數據。

(4)鏈接

容器啟動時,將被分配一個隨機的私有IP,其他容器可以通過這個IP與其進行通信,這樣就為容器間的相互通信提供了渠道。要開啟容器間的通信,Docker允許用戶在創建一個新容器的時候引用其他現存容器,在剛創建的容器里被引用的容器將獲得一個別名,就使兩個容器就鏈接到了一起。Docker要求聲明容器在被鏈接時要開放哪些端口給其他容器,否則將沒有端口可用。

主站蜘蛛池模板: 南昌县| 民县| 岱山县| 太康县| 商城县| 葫芦岛市| 佛教| 普定县| 凤阳县| 谷城县| 恭城| 屏南县| 澎湖县| 苏州市| 巧家县| 古交市| 长葛市| 长白| 河西区| 茂名市| 运城市| 永安市| 平南县| 大同县| 北川| 图木舒克市| 广德县| 德江县| 西青区| 内丘县| 喀什市| 察隅县| 长沙县| 唐海县| 滁州市| 福建省| 临西县| 桂东县| 如皋市| 南江县| 余姚市|