大數(shù)據(jù)生態(tài)系統(tǒng)迭代:容器要革“虛擬化”的命?
大數(shù)據(jù)時(shí)代面臨著生態(tài)系統(tǒng)的不斷更新迭代。程序猿和攻城獅們絞盡腦汁地想要降低硬件成本、開(kāi)發(fā)出能保羅萬(wàn)象的系統(tǒng)。
先是系統(tǒng)分身——虛擬機(jī)的出現(xiàn),宿主系統(tǒng)和虛擬鏡像靈活切換,十分酷炫!隨著GO語(yǔ)言這位***王者的出現(xiàn),又有“神猿”編寫出了docker這個(gè)貌似鯨魚的可愛(ài)工具。服務(wù)器的資源共享進(jìn)入了容器時(shí)代。如今很多頭部的IT公司基于docker不斷拓展新業(yè)務(wù)。隨著微服務(wù)架構(gòu)的橫空出世,docker迅速與之組成戰(zhàn)隊(duì),就更加飄飄然了。
這幾年,容器將取代“虛擬化”的言論甚囂塵上。事實(shí)上,沒(méi)有絕對(duì)的技術(shù),大數(shù)據(jù)的生態(tài)系統(tǒng)是鮮活的,不斷更新且多向兼容。虛擬化和容器必將經(jīng)歷短期共存的過(guò)程,最終的生死存亡只能交給“生態(tài)圈”自主篩選。
就目前而言,容器比虛擬機(jī)更敏捷迅速,且容器支持混合和多云的采用。最重要的一點(diǎn)是容器具有很強(qiáng)的適應(yīng)性:它可以輕松地集成于現(xiàn)有的IT實(shí)踐當(dāng)中。同時(shí),容器化應(yīng)用程序因其靈活共享的特性,大大提高了VM的CPU利用率,降低了硬件成本。但另一方面,每一個(gè)虛擬機(jī)都有自己的操作系統(tǒng),驅(qū)動(dòng)程序和應(yīng)用程序,具有更強(qiáng)的隔離性。
VMs
二十年前,一家名為VMware的創(chuàng)業(yè)公司通過(guò)提供創(chuàng)建非物理機(jī)器虛擬化平臺(tái)(如Linux,Windows等)來(lái)引入業(yè)務(wù)。
隨著服務(wù)器處理能力的提高,基本應(yīng)用程序無(wú)法***限度地利用所有豐富的新資源。而虛擬機(jī)(VM)的出現(xiàn),可以在物理服務(wù)器上運(yùn)行軟件,并模擬特定的硬件系統(tǒng)。其中管理程序是可以創(chuàng)建和運(yùn)行虛擬機(jī)的軟件或硬件。
使用不同操作系統(tǒng)的虛擬機(jī)可以在同一服務(wù)器上運(yùn)行。例如,一個(gè)Unix虛擬機(jī)可以同時(shí)在能夠運(yùn)行Linux虛擬機(jī)的服務(wù)器上運(yùn)行。每個(gè)虛擬機(jī)都有自己的應(yīng)用程序、二進(jìn)制文件和庫(kù)。因此,企業(yè)可以保留舊計(jì)算機(jī),添加新軟件,無(wú)需重新購(gòu)買能夠運(yùn)行Unix軟件的新計(jì)算機(jī)。對(duì)于組織不斷變化的需求而言,這是一個(gè)更簡(jiǎn)單、更便宜的解決方案。
服務(wù)器虛擬化是在虛擬化軟件的幫助下,將物理服務(wù)器劃分為若干個(gè)小型虛擬服務(wù)器的技術(shù)。在這個(gè)系統(tǒng)中,每個(gè)虛擬服務(wù)器將同時(shí)運(yùn)行多個(gè)操作。Wikibon的***分析師James Kobielus在最近的一次Dataversity®采訪中說(shuō):
服務(wù)器虛擬化的巨大優(yōu)勢(shì)在于可以更好地利用所投資的硬件資源。其面臨的問(wèn)題是:在不同平臺(tái)的不同虛擬機(jī)中,管理不同的機(jī)器映像相當(dāng)復(fù)雜,這可能會(huì)造成相應(yīng)的管理負(fù)擔(dān)。
容器(Containers)
即使有可用的工具,虛擬機(jī)技術(shù)也很難被使用。例如,在虛擬世界中很難分離特定的、消耗資源的應(yīng)用程序。微服務(wù)和容器化提供了一個(gè)更簡(jiǎn)單的選擇。一個(gè)特定的應(yīng)用程序代碼(例如查詢處理器和數(shù)據(jù)庫(kù)索引邏輯中的后端數(shù)據(jù))可以通過(guò)微服務(wù)的容器來(lái)分割不同的工作負(fù)載。
容器類似于虛擬機(jī),來(lái)自其他系統(tǒng)的軟件也可以在不同的服務(wù)器上運(yùn)行。容器還允許應(yīng)用程序與庫(kù)和依賴項(xiàng)一起運(yùn)行。也就是說(shuō),當(dāng)虛擬機(jī)模擬硬件系統(tǒng)時(shí),容器能夠以核心操作系統(tǒng)為基礎(chǔ)來(lái)運(yùn)輸自己的軟件系統(tǒng)。
相較于虛擬機(jī)而言,容器占用空間更少。“虛擬機(jī)可能需要大量的資源開(kāi)銷,例如網(wǎng)絡(luò)輸入、輸出、內(nèi)存和磁盤。因?yàn)閱蝹€(gè)虛擬機(jī)運(yùn)行自己的操作系統(tǒng),而容器則不運(yùn)行。”Kobielus說(shuō)道。容器共享稱為操作系統(tǒng)(OS)內(nèi)核的東西,它訪問(wèn)操作系統(tǒng)核心。另外,支持容器的操作系統(tǒng)可以更小,并且具有比虛擬機(jī)的操作系統(tǒng)更少的特征。容器啟動(dòng)速度更快,僅使用啟動(dòng)整個(gè)操作系統(tǒng)所用內(nèi)存的一小部分。顯然,容器是下一個(gè)進(jìn)化的步驟。Kobielus評(píng)論說(shuō):
容器化在過(guò)去五年里開(kāi)始流行。這是一種做微服務(wù)、分發(fā)與平臺(tái)無(wú)關(guān)的虛擬化服務(wù)器環(huán)境的方法,并且此方法有效。容器不僅可以在服務(wù)器中運(yùn)行,還可以在客戶機(jī)設(shè)備等上運(yùn)行。容器化實(shí)際上是通常所謂的云計(jì)算的核心。
容器化技術(shù)長(zhǎng)期以來(lái)一直是Linux的一部分。Kobielus表示,目前Docker是***的容器之一,其他容器化技術(shù),都被插入到Linux中了。基本上,Linux是操作系統(tǒng),Linux容器可以通過(guò)Docker、Mesos和其他各種方式實(shí)現(xiàn)。“可以在Docker容器中運(yùn)行應(yīng)用程序邏輯,然后獨(dú)立地?cái)U(kuò)展它們。”

Docker支持在大多數(shù)Linux平臺(tái)上都可用,可以輕松運(yùn)行這些容器及其應(yīng)用程序。它們基本上可以在任何Linux平臺(tái)以及其他非Linux平臺(tái)上運(yùn)行。通過(guò)使用容器,可以在操作系統(tǒng)和底層硬件平臺(tái)之間靈活地移動(dòng)微服務(wù)。
Kubernetes
Kubernetes是一個(gè)開(kāi)源的容器編排系統(tǒng),旨在自動(dòng)擴(kuò)展、部署和管理容器化應(yīng)用程序。容器編排系統(tǒng)最初由Google開(kāi)發(fā),但現(xiàn)在由Cloud Native計(jì)算基金會(huì)保存和維護(hù)。NetApp現(xiàn)在使用Kubernetes發(fā)行版,該發(fā)行版嵌入在其環(huán)境中,并在整個(gè)分布式云架構(gòu)中協(xié)調(diào)存儲(chǔ)資源和存儲(chǔ)容器化。
StackPointCloud開(kāi)發(fā)了一個(gè)基于Kubernetes的控制平面,用于管理聯(lián)合可信存儲(chǔ)集群,并在公共云服務(wù)提供商之間同步持久性存儲(chǔ)容器。之后,大型數(shù)據(jù)存儲(chǔ)供應(yīng)商N(yùn)etApp采用該技術(shù)并將其轉(zhuǎn)變?yōu)镹etApp Kubernetes服務(wù),該服務(wù)允許客戶在僅僅三次點(diǎn)擊的情況下啟動(dòng)Kubernetes集群或存儲(chǔ)集群。
“它可以擴(kuò)展到被數(shù)百個(gè)用戶使用,客戶能夠部署可以從單個(gè)用戶界面擴(kuò)展的容器,”Kobielus評(píng)論道。這就是存儲(chǔ)的容器化。容器化的大部分過(guò)程都集中發(fā)生在應(yīng)用程序和中間設(shè)備功能上。

據(jù)Kobielus說(shuō):“Kubernetes或Docker以及Linux容器的一個(gè)傳統(tǒng)弱點(diǎn)就是它們不適合存儲(chǔ)或不具有持久性。但是,在利用kubernetes和容器、docker等工具在云環(huán)境中實(shí)現(xiàn)數(shù)據(jù)持久性方面,wikibon提供了大量關(guān)于存儲(chǔ)空間的創(chuàng)新。”
目前已有多個(gè)將存儲(chǔ)容器化的例子(存儲(chǔ)有時(shí)被描述為大數(shù)據(jù)分析的核心)。NetApps稱其新的Kubernetes服務(wù)可以在AWS,Google Compute平臺(tái)和Microsoft Azure中運(yùn)行StackPoint引擎。(它還支持DigitalOcean,Packetclouds等)此外,Cloud Native Computing Foundation還有Rook,它用于非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)容器化和底板的編排。
Hadoop存儲(chǔ)
大數(shù)據(jù)分析平臺(tái)正在形成一種趨勢(shì)。這與被用于存儲(chǔ)的Hadoop有關(guān)。它被用于數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)存檔和數(shù)據(jù)轉(zhuǎn)換。同時(shí)也被用于數(shù)據(jù)治理。Hadoop是一個(gè)開(kāi)源核心平臺(tái),許多企業(yè)將其與大數(shù)據(jù)一起使用,以達(dá)到各種目的。因此,Hadoop分布式文件存儲(chǔ)已經(jīng)變得非常流行。Hadoop目前被用于內(nèi)部云、公共云和混合云中。Hadoop生態(tài)系統(tǒng)現(xiàn)在正處于容器化過(guò)程中。Red Hat是Kubernetes云中的主要實(shí)施者之一。Kobielus說(shuō)道:
創(chuàng)新者基本上將Hadoop生態(tài)系統(tǒng)的所有組成部分納入他們的計(jì)劃,然后對(duì)其進(jìn)行容器化,以便后期獨(dú)立部署、擴(kuò)展和管理。然后使用Kubernetes將它們以各種組合形式進(jìn)行編排。

如今,很多企業(yè)都在應(yīng)用這些數(shù)據(jù)分析的開(kāi)源平臺(tái)技術(shù)。“他們正在以各種各樣的方式將它們結(jié)合起來(lái),很多獨(dú)立開(kāi)源項(xiàng)目的原始開(kāi)發(fā)人員并沒(méi)有完全預(yù)料到這一點(diǎn)。”Kobielus評(píng)論道。所有這些平臺(tái)都得到了容器化,這種趨勢(shì)將會(huì)持續(xù),在短期內(nèi)不會(huì)很快改變。