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