1. 程式人生 > >10步帶你認識大資料和雲端計算,圖文並茂讓你不再蒙圈

10步帶你認識大資料和雲端計算,圖文並茂讓你不再蒙圈

第一步:大資料

“大資料”這個概念是近幾年開始火起來的,現在可謂是無處不在了。在瞭解什麼是大資料之前,我們先了解一下什麼是傳統資料?

傳統資料就是IT業務系統裡面的資料,如客戶資料、財務資料等。這些資料是結構化的,量也不是特別大,一般只是TB級。對比傳統資料,還有一種叫“新資料”,是來源於社群網路、網際網路等渠道,包括文字、圖片、音訊、視訊等非結構化的資料。目前全世界75%以上都是非結構化資料,而且還一直呈現爆炸性的增長。我們看看下面的圖就更好理解了:

大資料就是:結構化的傳統資料+非結構化的新資料。

對大資料的概念都是模糊不清的,大資料是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解

想學習的同學歡迎加入大資料學習qq群:458345782,有大量乾貨(零基礎以及進階的經典實戰)分享給大家

並且有清華大學畢業的資深大資料講師給大家免費授課,給大家分享目前國內最完整的大資料高階實戰實用學習流程體系 。

因而,大資料還具有以下特點,簡稱“4V”:

Volume(大量):資料體量巨大,從TB級別,躍升到PB級別;

Variety(多樣):資料型別繁多,有網路日誌、視訊、圖片、地理位置資訊等;

Velocity(高速):處理速度快,可從各種型別的資料中快速獲得高價值的資訊,這一點也是和傳統的資料探勘技術有著本質的不同;

Value(價值):只要合理利用資料並對其進行正確、準確的分析,將會帶來很高的價值回報。

第二步:大資料組成

大資料系統由基礎設施、平臺和應用組成。對比我們平時使用的電腦,基礎設施就是電腦這臺硬體,平臺就是裝在裡面的作業系統,應用就是作業系統上面的各種應用程式。

大資料的應用五花八門,但總體上可分為“業務應用”和“資料分析”兩大類。

前者包括ERP、CRM等業務系統,後者指的是各種分析應用,包括經營分析、價值分析、人流分析等等。分析系統從業務系統獲取源資料,經過分析後可以反哺業務系統,對其進行賦能(注智),讓其具有智慧。說到這裡,大家是不是覺得有點熟悉了?跟我們的BI是不是有某些聯絡呢?沒錯了,“大資料平臺”和“資料分析系統”加在一起就是BI的升級版啊!既然是升級版,它與傳統BI有什麼區別呢?請看下面就知道啦。

成本更低廉

去IOE,硬體採用廉價的X86,軟體更多使用開源,節省成本

容災性好

平臺部署在X86叢集上,機器出問題可隨時切換

擴充套件性好

X86叢集可根據需要隨時進行擴充套件,提高靈活性

處理效率高

當資料達到TB級別,處理效率顯著提高

處理型別多

可以處理結構化、半結構化、非結構化資料

進一步挖掘價值

處理的資料量大,型別多,因而可進一步挖掘資料的價值。

是不是有很多升級的地方呢?為了支援這些升級,大資料系統需要具備哪些功能呢?這就涉及到架構問題了,跟著小麥繼續往下看吧。

第三步:大資料架構

我們已經知道大資料系統由基礎設施、平臺和應用組成,我們現在進一步細分,請看下圖:

基礎設施由通過區域網或網際網路連線的X86叢集組成,為大資料平臺提供最基本的硬體支援。

大資料平臺由基礎架構、資料處理和資料服務三部分組成

基礎架構負責對基礎設施進行系統管理,為資料處理提供分散式底層服務;資料處理負責資料的採集、儲存、計算;資料服務負責將處理後的資料提供給上層應用使用。大資料應用是面向使用者的各種應用系統,包括業務應用和資料分析。大資料系統的總體架構就是這樣子,是不是跟我們平時見到的BI架構很像呢? 通過這個表格對比我們就更清楚了:

下面我們將圍繞這個架構展開說明。理解了這個架構,小麥的目的也就達到啦。

第四步:虛擬化

基礎設施提供計算、儲存、網路三種能力,是大資料平臺的根基。但是如何解決以下問題:

大量的機器如何管理

當叢集的狀態改變,也即增加或者減少一些機器的時候,難道要去修改平臺的配置嗎?

如何充分利用系統資源

當叢集的能力只使用了一部分,而這個時候需要一部新的機器用來部署其它系統,難道是從叢集上拆下一部機器來提供嗎?

如何解決彈性問題

當高峰期的時候,系統可能需要20部機器,平時只需要10部。那麼我們是提供多少部合適呢?如果提供20部,平時空閒下來的10部如何處理?

這些問題有一種解決方法:虛擬化。就是把叢集作為一個整體進行管理,可以根據需要從某些機器中調配相關資源,快速組成一部“新的機器”。例如可以用機器A的CPU1/2效能、1/3的記憶體,和機器B的1/5硬碟組成。

當叢集的狀態改變時,我們只需要修改虛擬化軟體的配置,減少對平臺的影響。當叢集有多餘的資源時,可以虛擬出一些新的機器給其它系統使用,充分利用了系統資源。

虛擬化的主流商業軟體是Vmware,開源的軟體有Xen、KVM等。

第五步:雲化

虛擬化雖然帶來資源配置的靈活性,但也有明顯的缺陷。配置一部“新的機器”需要人工操作,配置非常麻煩,最多隻能管理幾百臺電腦的規模,作為企業內部的應用是可以的。但對於提供公眾服務的網際網路公司來說,需要上萬部電腦的規模,通過虛擬化的方式是行不通的。所以又有了新技術的出現:雲化,也即把基礎設施作為一項服務提供。請看下圖:

最早是亞馬遜基於自身電商業務的發展,傳統的IT架構已經滿足不了需求,所以基於開源的虛擬化軟體開發了AWS(Amazon Web Service),可以支援超大規模的叢集應用。在解決自己的業務需求後,亞馬遜發現可以把這項技術作為一項單獨的業務推向市場,這就是現在穩居全球市場頭把交椅的的亞馬遜雲服務。同樣的背景,阿里巴巴也基於Xen推出了市場化的阿里雲,現成已經成為國內雲市場的老大。由此我們也知道為什麼雲服務做得最早、最好的都是網際網路公司了吧?因為他們有自身的業務在驅動。規模上萬部的機器,以資源池(資料中心)的形式分佈在不同的地域上(很多建設在廣西、貴州、內蒙等欠發達省份,電費、人工比較便宜,又可以促進當地就業),通過排程中心進行統一管理,這就是公有云平臺。

在亞馬遜開展商業化雲服務的同時,美國另一家叫Rackspace的公司也推出OpenStack在跟亞馬遜競爭。無奈競爭不過人家,最後決定和NASA(美國國家航空航天局)合作,把OpenStack開源,一起成立了開源雲平臺。後來各家傳統的IT巨頭紛紛加入這個開源的社群,經過二次開發和包裝後推出了自己的私有云平臺,和自家的硬體或解決方案打包一起銷售。

不管是公有云,還是私有云,都是實現了基礎設施的時間靈活性和空間靈活性,把基礎設施作為一項服務提供,也即:Infranstracture as a Service(IaaS

第六步:Hadoop

大資料平臺的基礎架構採用Hadoop,包括HDFS和MapReduce兩部分:

HDFS在叢集上實現分散式檔案系統,負責對檔案的操作。(類似windows下的檔案管理系統NTFS)

MapReduce在叢集上實現分散式計算和任務處理,負責將作業分解成多個任務,分派到多部機器一起執行,同時監控執行情況,保證每個任務都能順利執行,所有任務結束後再將結果彙總。(類似多個人一起數圖書館的書,每個人算一個書架(Map),最後把所有結果加在一起(Reduce))

那麼,如何把Hadoop安裝到叢集下面那麼多機器上呢?每部機器的配置、作業系統都可能不一樣。

解決辦法就是採用“容器“技術:先將Hadoop打包到一個封閉的容器中,再統一發布到各部機器上。容器能夠根據機器實際環境做出相應的調整,保證Hadoop的順利安裝。(類似用統一規格的集裝箱來運送貨物)

容器的主流技術是開源的Docker。不僅僅是Hadoop可以通過容器進行安裝,所有的應用都可以使用。

現在已經在叢集下每部機器安裝了Hadoop,那麼Hadoop是如何執行的呢?請看下圖:

 

Hadoop把叢集下其中一個節點拿來當Master,其它節點當Slave。對於HDFS來說,Master就是NameNode,負責管理檔案系統的名稱空間和控制客戶端訪問;Slave就是DataNode,負責管理儲存的資料。對於MapReduce來說,Master就是JobTracker,負責排程構成一個作業的所有任務,這些任務分佈在不同的TaskTracker上;Slave就是TaskTracker,負責執行由JobTracker指派的任務。

Hadoop已經衍生出很多不同的升級版本,目前應用最成熟、最廣泛的是Spark。

第七步:資料處理

資料處理是對資料的採集、儲存和計算。因為大資料有各種各樣的應用,不同的應用,資料的種類、結構,資料的實時性要求都可能不同。所以要根據實際情況進行資料庫選型,這是大資料平臺設計的關鍵,將影響到整個平臺的整體效能。不同的資料庫型別可以進行混搭,同時採用不同的ETL技術。

目前常見的各種資料庫型別如下:

傳統資料庫

主流資料庫有Oracle、DB2、MySQL,主要應用於小規模應用系統,或者為了利用已有的資源,同時降低系統升級的風險,採用的ETL技術是Datastage、Kettle等。

記憶體資料庫

主流資料庫有SQLite、HANA,主要應用於對實時性要求高,需要實時處理的資料,如實時指標展示,精準營銷等,採用的ETL技術是流處理技術kafka。

MPP資料庫

MPP是指大規模並行處理,MPP資料庫支援X86叢集,常見的有Greanplum、Vertica等,主要應用於大規模結構化資料分析,如信令分析、DPI分析,一般採用Kettle作為ETL工具。

NoSQL資料庫

NoSQL是指半結構化或非結構化資料庫,主流的資料庫有MongoDB、HBase和HDFS等,HBase用來儲存半結構化或結構很稀疏的資料,HDFS用來儲存非結構化資料。HBase和HDFS都不支援SQL,需要使用Hive作為SQL介面執行一些簡單的查詢操作。NoSQL資料庫基於Hadoop平臺,主要應用於大規模半/非結構化離線分析,例如網際網路資料分析、文件分析等,一般採用網路爬蟲技術進行ETL。

第八步:資料服務

經過處理後的資料,一般不提供給上層應用直接用SQL訪問,這一點與資料倉庫不同。資料倉庫把採集過來的資料經過處理後儲存在彙總層,上層應用直接用SQL訪問。但大資料平臺把處理後的資料進行封裝和分類,為上層應用提供可靈活呼叫的資料服務介面,可以保證資料訪問的規範性和安全性。介面的承載方式有:檔案、訊息、API、SDK、介面整合,其流程如下:

 

資料格式化

對原始資料進行格式化,過濾欄位並進行排序。

資料封裝

對格式化後的資料及其元資料進行封裝,以實現對外一致、標準化的資料訪問介面。

資料分類

根據封裝後的資料,按主題進行介面分類。

資料服務

上層應用可通過資料服務介面呼叫資料,實現資料的服務功能。

資料服務介面遮蔽掉大資料平臺的所有細節,把平臺作為一項服務提供給應用使用,這種方式稱之為Platform as a service(PaaS)。

在公有云提供商中,一般都會有對應的PaaS服務提供,如阿里雲的EDAS(企業級分散式應用服務)。

私有云是企業自建,對資料訪問的控制沒那麼嚴格。為了開發效率,應用通常可以通過SQL直接訪問資料。

第九步:大資料應用

前面小麥已經為大家介紹了基礎設施和大資料平臺,也介紹了私有云和公有云的區別。對於大資料應用來說,私有云上的應用,就是我們平時說的企業資訊化系統,只不過這些系統是採用大資料的架構。而公有云上的應用,指的是我們平時使用的網際網路服務,如微信、微博、支付寶等。但是,隨著雲服務市場的發展,越來越多的傳統IT廠商也通過公有云為公眾提供服務,比如我們熟悉的 MicrosoftOffice 365。這種把軟體作為服務提供的方式稱之為:Software as a Service(SaaS)。

在國際市場,比較常見的企業級SaaS服務有客戶管理服務Saleforce、團隊協同服務Google Apps等等。國內市場的金蝶、微軟、Oracle也都提供多種SaaS產品和服務。我們可以看一下IDC對2017-2022年中國公有云整體市場的預測(單位:百萬美元):

從上表可以看出,整個雲服務市場的年複合增長率達到了41%,其中PaaS服務增長最快,達到了55.7%。中國企業級SaaS市場份額全球第二,未來五年依舊呈現快速增長態勢,年複合增長率達到35.7%。到了2022年,整個SaaS市場規模達到400億人民幣。

第十步:雲端計算

大家有沒有發現,前面說了那麼久,還沒提到雲端計算呢?其實前面都是鋪墊,現在就要給大家介紹雲計算了。雲端計算就是一種IT架構,是一種IT資源的交付和使用模式。前面介紹的IaaS、PaaS、SaaS就是雲端計算架構下對不同資源的交付模式,分別將基礎設施、平臺、軟體以服務的形式提供給使用者使用。

到目前為止,小麥已經把相關的概念都介紹給大家了。我們把前面的大資料架構圖進一步細化,大家是否看得懂了呢?

如果大家看懂了,那小麥本次的介紹也算功德圓滿了。如果還沒看懂,請跳到第一步再看一遍,哈哈。。。。

對大資料的概念都是模糊不清的,大資料是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解

想學習的同學歡迎加入大資料學習qq群:458345782,有大量乾貨(零基礎以及進階的經典實戰)分享給大家

並且有清華大學畢業的資深大資料講師給大家免費授課,給大家分享目前國內最完整的大資料高階實戰實用學習流程體系 。