王媛滿
第一步:大數(shù)據(jù)
“大數(shù)據(jù)”這個(gè)概念是近幾年開始火起來(lái)的,現(xiàn)在可謂是無(wú)處不在了。那么在了解什么是大數(shù)據(jù)之前,我們先了解一下什么是傳統(tǒng)數(shù)據(jù)?
傳統(tǒng)數(shù)據(jù)就是IT業(yè)務(wù)系統(tǒng)里面的數(shù)據(jù),如客戶資料、財(cái)務(wù)數(shù)據(jù)等。這些數(shù)據(jù)是結(jié)構(gòu)化的,量也不是特別大,一般只是TB級(jí)。對(duì)比傳統(tǒng)數(shù)據(jù),還有一種叫“新數(shù)據(jù)”,是來(lái)源于社區(qū)網(wǎng)絡(luò)、互聯(lián)網(wǎng)等渠道,包括文本、圖片、音頻和視頻等非結(jié)構(gòu)化的數(shù)據(jù)。目前全世界75 %以上都是非結(jié)構(gòu)化數(shù)據(jù),而且還一直呈現(xiàn)爆炸性的增長(zhǎng)。我們看看下面的圖就更好理解了:
大數(shù)據(jù)就是:結(jié)構(gòu)化的“傳統(tǒng)數(shù)據(jù)+非結(jié)構(gòu)化的新數(shù)據(jù)”。因而,大數(shù)據(jù)還具有以下特點(diǎn),簡(jiǎn)稱“4V”:
大量(Volume):數(shù)據(jù)體量巨大,從TB級(jí)別躍升到PB級(jí)別;
多樣(Variety):數(shù)據(jù)類型繁多,有網(wǎng)絡(luò)日志、視頻、圖片和地理位置信息等;
高速(Velocity):處理速度快,可從各種類型的數(shù)據(jù)中快速獲得高價(jià)值的信息,這一點(diǎn)是和傳統(tǒng)的數(shù)據(jù)挖掘技術(shù)有著本質(zhì)的不同;
價(jià)值(Value):只要合理利用數(shù)據(jù)并對(duì)其進(jìn)行正確、準(zhǔn)確的分析,將會(huì)帶來(lái)很高的價(jià)值回報(bào)。
第二步:大數(shù)據(jù)組成
大數(shù)據(jù)系統(tǒng)由基礎(chǔ)設(shè)施、平臺(tái)和應(yīng)用組成。對(duì)應(yīng)我們平時(shí)使用的電腦,基礎(chǔ)設(shè)施就是電腦這臺(tái)硬件,平臺(tái)就是裝在里面的操作系統(tǒng),應(yīng)用就是操作系統(tǒng)上面的各種應(yīng)用程序。
大數(shù)據(jù)的應(yīng)用五花八門,但總體上可分為“業(yè)務(wù)應(yīng)用”和“數(shù)據(jù)分析”兩大類。
前者包括ERP、CRM等業(yè)務(wù)系統(tǒng),后者指的是各種分析應(yīng)用,包括經(jīng)營(yíng)分析、價(jià)值分析和人流分析等。分析系統(tǒng)從業(yè)務(wù)系統(tǒng)獲取源數(shù)據(jù),經(jīng)過(guò)分析后可以反哺業(yè)務(wù)系統(tǒng),對(duì)其進(jìn)行賦能,讓其具有智慧。說(shuō)到這里,大家是不是覺(jué)得有點(diǎn)熟悉了?跟我們的BI是不是有某些聯(lián)系呢?沒(méi)錯(cuò)了,“大數(shù)據(jù)平臺(tái)”和“數(shù)據(jù)分析系統(tǒng)”加在一起就是BI的升級(jí)版。既然是升級(jí)版,它與傳統(tǒng)BI有什么區(qū)別呢?
(1)成本更低廉
去IOE,硬件采用廉價(jià)的X86,軟件更多使用的開源方式,節(jié)省成本。
(2)容災(zāi)性好
平臺(tái)部署在X86集群上,機(jī)器出問(wèn)題可隨時(shí)切換。
(3)擴(kuò)展性好
X86集群可根據(jù)需要隨時(shí)進(jìn)行擴(kuò)展,提高靈活性。
(4)處理效率高
當(dāng)數(shù)據(jù)達(dá)到TB級(jí)別,處理效率顯著提高。
(5)處理類型多
可以處理結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
(6)進(jìn)一步挖掘價(jià)值
由于處理的數(shù)據(jù)量大、類型多,因而可以進(jìn)一步挖掘數(shù)據(jù)的價(jià)值。
是不是發(fā)現(xiàn)有很多升級(jí)的地方呢?為了支持這些升級(jí),大數(shù)據(jù)系統(tǒng)需要具備哪些功能呢?這就涉及到架構(gòu)問(wèn)題了。
第三步:大數(shù)據(jù)架構(gòu)
我們已經(jīng)知道大數(shù)據(jù)系統(tǒng)由基礎(chǔ)設(shè)施、平臺(tái)和應(yīng)用組成,現(xiàn)在進(jìn)一步細(xì)分:
基礎(chǔ)設(shè)施由通過(guò)局域網(wǎng)或互聯(lián)網(wǎng)連接的X86集群組成,為大數(shù)據(jù)平臺(tái)提供最基本的硬件支持。
大數(shù)據(jù)平臺(tái)是由基礎(chǔ)架構(gòu)、數(shù)據(jù)處理和數(shù)據(jù)服務(wù)三部分組成:基礎(chǔ)架構(gòu)負(fù)責(zé)對(duì)基礎(chǔ)設(shè)施進(jìn)行系統(tǒng)管理,為數(shù)據(jù)處理提供分布式底層服務(wù);數(shù)據(jù)處理負(fù)責(zé)數(shù)據(jù)的采集、存儲(chǔ)和計(jì)算;數(shù)據(jù)服務(wù)負(fù)責(zé)將處理后的數(shù)據(jù)提供給上層應(yīng)用使用。大數(shù)據(jù)應(yīng)用是面向用戶的各種應(yīng)用系統(tǒng),包括業(yè)務(wù)應(yīng)用和數(shù)據(jù)分析。
第四步:虛擬化
基礎(chǔ)設(shè)施提供計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)三種能力,是大數(shù)據(jù)平臺(tái)的根基,但是需要解決以下問(wèn)題:
(1)大量的機(jī)器如何管理
當(dāng)集群的狀態(tài)改變,即增加或者減少一些機(jī)器的時(shí)候,難道要去修改平臺(tái)的配置嗎?
(2)如何充分利用系統(tǒng)資源
當(dāng)集群的能力只使用了一部分,而這個(gè)時(shí)候需要一部新的機(jī)器用來(lái)部署其它系統(tǒng),難道是從集群上拆下一部機(jī)器來(lái)提供嗎?
(3)如何解決彈性問(wèn)題
當(dāng)高峰期的時(shí)候,系統(tǒng)可能需要20部機(jī)器,平時(shí)只需要10部。那么我們是提供多少部合適呢?如果提供20部,平時(shí)空閑下來(lái)的10部如何處理?
這些問(wèn)題有一種解決方法:虛擬化。就是把集群作為一個(gè)整體進(jìn)行管理,可以根據(jù)需要從某些機(jī)器中調(diào)配相關(guān)資源,快速組成一部“新的機(jī)器”。例如可以用機(jī)器A的CPU1/2性能、1/3的內(nèi)存和機(jī)器B的1/5硬盤組成。
當(dāng)集群的狀態(tài)改變時(shí),我們只需要修改虛擬化軟件的配置,減少對(duì)平臺(tái)的影響。當(dāng)集群有多余的資源時(shí),可以虛擬出一些新的機(jī)器給其它系統(tǒng)使用,充分利用了系統(tǒng)資源。
虛擬化的主流商業(yè)軟件是Vmware,開源的軟件有Xen和KVM等。
第五步:云化
虛擬化雖然帶來(lái)資源配置的靈活性,但也有明顯的缺陷。配置一部“新的機(jī)器”需要人工操作,配置非常麻煩,最多只能管理幾百臺(tái)電腦的規(guī)模,作為企業(yè)內(nèi)部的應(yīng)用是可以的。但對(duì)于提供公眾服務(wù)的互聯(lián)網(wǎng)公司來(lái)說(shuō),需要上萬(wàn)部電腦的規(guī)模,通過(guò)虛擬化的方式是行不通的。所以又有了新技術(shù)的出現(xiàn):云化,即把基礎(chǔ)設(shè)施作為一項(xiàng)服務(wù)提供。
最早是亞馬遜基于自身電商業(yè)務(wù)的發(fā)展,傳統(tǒng)的IT架構(gòu)已經(jīng)滿足不了需求,所以基于開源的虛擬化軟件開發(fā)了AWS(Amazon Web Service),可以支持超大規(guī)模的集群應(yīng)用。在解決自己的業(yè)務(wù)需求后,亞馬遜發(fā)現(xiàn)可以把這項(xiàng)技術(shù)作為一項(xiàng)單獨(dú)的業(yè)務(wù)推向市場(chǎng),這就是現(xiàn)在穩(wěn)居全球市場(chǎng)頭把交椅的的亞馬遜云服務(wù)。同樣的背景,阿里巴巴也基于Xen推出了市場(chǎng)化的阿里云,現(xiàn)成已經(jīng)成為國(guó)內(nèi)云市場(chǎng)的老大。由此知道為什么云服務(wù)做得最早、最好的都是互聯(lián)網(wǎng)公司了吧?因?yàn)樗麄冇凶陨淼臉I(yè)務(wù)在驅(qū)動(dòng)。規(guī)模上萬(wàn)的機(jī)器,以資源池(數(shù)據(jù)中心)的形式分布在不同的地域上(很多建設(shè)在廣西、貴州和內(nèi)蒙等省份,電費(fèi)、人工比較便宜,又可以促進(jìn)當(dāng)?shù)鼐蜆I(yè)),通過(guò)調(diào)度中心進(jìn)行統(tǒng)一管理,這就是公有云平臺(tái)。
在亞馬遜開展商業(yè)化云服務(wù)的同時(shí),美國(guó)另一家叫Rackspace的公司也推出OpenStack跟亞馬遜競(jìng)爭(zhēng)。無(wú)奈競(jìng)爭(zhēng)不過(guò)人家,最后決定和美國(guó)國(guó)家航空航天局(NASA)合作,把OpenStack開源,一起成立了開源云平臺(tái)。后來(lái)各家傳統(tǒng)的IT巨頭紛紛加入這個(gè)開源的社區(qū),經(jīng)過(guò)二次開發(fā)和包裝后推出了自己的私有云平臺(tái),和自家的硬件或解決方案一起打包銷售。
不管是公有云,還是私有云,都是實(shí)現(xiàn)了基礎(chǔ)設(shè)施的時(shí)間靈活性和空間靈活性,把基礎(chǔ)設(shè)施作為一項(xiàng)服務(wù)提供,這就是IaaS。
第六步:Hadoop
大數(shù)據(jù)平臺(tái)的基礎(chǔ)架構(gòu)采用Hadoop,包括HDFS和MapReduce兩部分:
HDFS在集群上實(shí)現(xiàn)分布式文件系統(tǒng),負(fù)責(zé)對(duì)文件的操作(類似windows下的文件管理系統(tǒng)NTFS)。
MapReduce在集群上實(shí)現(xiàn)分布式計(jì)算和任務(wù)處理,負(fù)責(zé)將作業(yè)分解成多個(gè)任務(wù),分派到多部機(jī)器一起執(zhí)行,同時(shí)監(jiān)控執(zhí)行情況,保證每個(gè)任務(wù)都能順利執(zhí)行,所有任務(wù)結(jié)束后再將結(jié)果匯總(類似多個(gè)人一起數(shù)圖書館的書,每個(gè)人算一個(gè)書架(Map),最后把所有結(jié)果加在一起(Reduce))
那么,如何把Hadoop安裝到集群下面那么多機(jī)器上呢?每部機(jī)器的配置、操作系統(tǒng)都可能不一樣。
解決辦法就是采用“容器”技術(shù):先將Hadoop打包到一個(gè)封閉的容器中,再統(tǒng)一發(fā)布到各部機(jī)器上。容器能夠根據(jù)機(jī)器實(shí)際環(huán)境做出相應(yīng)的調(diào)整,保證Hadoop的順利安裝(類似用統(tǒng)一規(guī)格的集裝箱來(lái)運(yùn)送貨物)。
容器的主流技術(shù)是開源的Docker。不僅僅是Hadoop可以通過(guò)容器進(jìn)行安裝,所有的應(yīng)用都可以使用。
現(xiàn)在已經(jīng)在集群下每部機(jī)器安裝了Hadoop,那么Hadoop是如何運(yùn)行的呢?
Hadoop把集群下其中一個(gè)節(jié)點(diǎn)拿來(lái)當(dāng)Master,其它節(jié)點(diǎn)當(dāng)Slave。對(duì)于HDFS來(lái)說(shuō),Master就是NameNode,負(fù)責(zé)管理文件系統(tǒng)的命名空間和控制客戶端訪問(wèn);Slave就是DataNode,負(fù)責(zé)管理存儲(chǔ)的數(shù)據(jù)。對(duì)于MapReduce來(lái)說(shuō),Master就是JobTracker,負(fù)責(zé)調(diào)度構(gòu)成一個(gè)作業(yè)的所有任務(wù),這些任務(wù)分布在不同的TaskTracker上;Slave就是TaskTracker,負(fù)責(zé)執(zhí)行由JobTracker指派的任務(wù)。
Hadoop已經(jīng)衍生出很多不同的升級(jí)版本,目前應(yīng)用最成熟、最廣泛的是Spark。
第七步:數(shù)據(jù)處理
數(shù)據(jù)處理是對(duì)數(shù)據(jù)的采集、存儲(chǔ)和計(jì)算。因?yàn)榇髷?shù)據(jù)有各種各樣的應(yīng)用,不同的應(yīng)用,數(shù)據(jù)的種類、結(jié)構(gòu),數(shù)據(jù)的實(shí)時(shí)性要求都可能不同。所以要根據(jù)實(shí)際情況進(jìn)行數(shù)據(jù)庫(kù)選型,這是大數(shù)據(jù)平臺(tái)設(shè)計(jì)的關(guān)鍵,將影響到整個(gè)平臺(tái)的整體性能。不同的數(shù)據(jù)庫(kù)類型可以進(jìn)行混搭,同時(shí)采用不同的ETL技術(shù)。
目前常見(jiàn)的各種數(shù)據(jù)庫(kù)類型如下:
(1)傳統(tǒng)數(shù)據(jù)庫(kù)
主流數(shù)據(jù)庫(kù)有Oracle、DB2、MySQL,主要應(yīng)用于小規(guī)模應(yīng)用系統(tǒng),或者為了利用已有的資源,同時(shí)降低系統(tǒng)升級(jí)的風(fēng)險(xiǎn),采用的ETL技術(shù)是Datastage、Kettle等。
(2)內(nèi)存數(shù)據(jù)庫(kù)
主流數(shù)據(jù)庫(kù)有SQLite、HANA,主要應(yīng)用于對(duì)實(shí)時(shí)性要求高,需要實(shí)時(shí)處理的數(shù)據(jù),如實(shí)時(shí)指標(biāo)展示、精準(zhǔn)營(yíng)銷等,采用的ETL技術(shù)是流處理技術(shù)kafka。
(3)MPP數(shù)據(jù)庫(kù)
MPP是指大規(guī)模并行處理,MPP數(shù)據(jù)庫(kù)支持X86集群,常見(jiàn)的有Greanplum,Vertica等,主要應(yīng)用于大規(guī)模結(jié)構(gòu)化數(shù)據(jù)分析,如信令分析、DPI分析,一般采用Kettle作為ETL工具。
(4)NoSQL數(shù)據(jù)庫(kù)
NoSQL是指半結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)庫(kù),主流的數(shù)據(jù)庫(kù)有MongoDB、HBase和HDFS等,HBase用來(lái)存儲(chǔ)半結(jié)構(gòu)化或結(jié)構(gòu)很稀疏的數(shù)據(jù),HDFS用來(lái)存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)。HBase和HDFS都不支持SQL,需要使用Hive作為SQL接口執(zhí)行一些簡(jiǎn)單的查詢操作。NoSQL數(shù)據(jù)庫(kù)基于Hadoop平臺(tái),主要應(yīng)用于大規(guī)模半/非結(jié)構(gòu)化離線分析,例如互聯(lián)網(wǎng)數(shù)據(jù)分析、文檔分析等,一般采用網(wǎng)絡(luò)爬蟲技術(shù)進(jìn)行ETL。
第八步:數(shù)據(jù)服務(wù)
經(jīng)過(guò)處理后的數(shù)據(jù),一般不提供給上層應(yīng)用直接用SQL訪問(wèn),這一點(diǎn)與數(shù)據(jù)倉(cāng)庫(kù)不同。通常情況是數(shù)據(jù)倉(cāng)庫(kù)把采集過(guò)來(lái)的數(shù)據(jù)經(jīng)過(guò)處理后存儲(chǔ)在匯總層,上層應(yīng)用直接用SQL訪問(wèn)。但大數(shù)據(jù)平臺(tái)把處理后的數(shù)據(jù)進(jìn)行封裝和分類,為上層應(yīng)用提供可靈活調(diào)用的數(shù)據(jù)服務(wù)接口,可以保證數(shù)據(jù)訪問(wèn)的規(guī)范性和安全性。
接口的承載方式有:文件、消息、API、SDK和界面集成,其流程如下:
(1)數(shù)據(jù)格式化
對(duì)原始數(shù)據(jù)進(jìn)行格式化,過(guò)濾字段并進(jìn)行排序。
(2)數(shù)據(jù)封裝
對(duì)格式化后的數(shù)據(jù)及其元數(shù)據(jù)進(jìn)行封裝,以實(shí)現(xiàn)對(duì)外一致、標(biāo)準(zhǔn)化的數(shù)據(jù)訪問(wèn)接口。
(3)數(shù)據(jù)分類
根據(jù)封裝后的數(shù)據(jù),按主題進(jìn)行接口分類。
(4)數(shù)據(jù)服務(wù)
上層應(yīng)用可通過(guò)數(shù)據(jù)服務(wù)接口調(diào)用數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的服務(wù)功能。
數(shù)據(jù)服務(wù)接口屏蔽掉大數(shù)據(jù)平臺(tái)的所有細(xì)節(jié),把平臺(tái)作為一項(xiàng)服務(wù)提供給應(yīng)用使用,這種方式稱之為PaaS。
在公有云提供商中,一般都會(huì)有對(duì)應(yīng)的PaaS服務(wù)提供,如阿里云的企業(yè)級(jí)分布式應(yīng)用服務(wù)(EDAS)。
私有云是企業(yè)自建,對(duì)數(shù)據(jù)訪問(wèn)的控制沒(méi)那么嚴(yán)格。為了開發(fā)效率,應(yīng)用通常可以通過(guò)SQL直接訪問(wèn)數(shù)據(jù)。
第九步:大數(shù)據(jù)應(yīng)用
對(duì)于大數(shù)據(jù)應(yīng)用來(lái)說(shuō),私有云上的應(yīng)用,就是我們平時(shí)說(shuō)的企業(yè)信息化系統(tǒng),只不過(guò)這些系統(tǒng)是采用大數(shù)據(jù)的架構(gòu)。而公有云上的應(yīng)用,指的是我們平時(shí)使用的互聯(lián)網(wǎng)服務(wù),如微信、微博和支付寶等。但是,隨著云服務(wù)市場(chǎng)的發(fā)展,越來(lái)越多的傳統(tǒng)IT廠商也通過(guò)公有云為公眾提供服務(wù),比如我們熟悉的Microsoft Office 365。這種把軟件作為服務(wù)提供的方式稱之為SaaS。
在國(guó)際市場(chǎng),比較常見(jiàn)的企業(yè)級(jí)SaaS服務(wù)有客戶管理服務(wù)Saleforce與團(tuán)隊(duì)協(xié)同服務(wù)Google Apps等。國(guó)內(nèi)市場(chǎng)的金蝶、微軟和Oracle也都提供多種SaaS產(chǎn)品和服務(wù)。我們可以看一下IDC對(duì)2017-2022年中國(guó)公有云整體市場(chǎng)的預(yù)測(cè)(單位:百萬(wàn)美元)。
從上表可以看出,整個(gè)云服務(wù)市場(chǎng)的年復(fù)合增長(zhǎng)率達(dá)到了41 %,其中PaaS服務(wù)增長(zhǎng)最快,達(dá)到了55.7 %。中國(guó)企業(yè)級(jí)SaaS市場(chǎng)份額全球第二,未來(lái)5年依舊呈現(xiàn)快速增長(zhǎng)態(tài)勢(shì),年復(fù)合增長(zhǎng)率達(dá)到35.7 %。到2022年,整個(gè)SaaS市場(chǎng)規(guī)模達(dá)將到400億人民幣。
第十步:云計(jì)算
云計(jì)算就是一種IT架構(gòu),是一種IT資源的交付和使用模式。前面介紹的IaaS、PaaS和SaaS就是云計(jì)算架構(gòu)下對(duì)不同資源的交付模式,分別將基礎(chǔ)設(shè)施、平臺(tái)以及軟件用服務(wù)的形式提供給用戶使用。