天天看點

大資料時代技術架構

  1. 概述

目前大資料已經滲透到每個行業和領域,成為了重要的生産因素。在大資料環境下,資料是海量的,且呈爆發式增長,資料類型複雜多樣,除結構化資料外,還有大量半結構化和非結構化資料。大資料應用需求也很複雜,包括複雜多表關聯查詢,即席查詢,離線資料批量處理等。這種形勢給建構大資料處理的通用平台帶來了挑戰。

  1. 傳統資料庫建構大資料平台的不足

傳統事務型資料庫是針對事務型處理設計的,采用行存儲和Shared Disk架構,硬體方面采用小型機+磁盤陣列的配置。而面對大資料的分析處理型應用,傳統的資料庫在處理海量資料方面表現出明顯的不足,主要表現在如下方面:

傳統的Shared Disk架構存在I/O瓶頸,擴充能力不足,無法支撐PB級别資料的存儲和計算,對于海量非結構化資料處理也很有限;

傳統資料庫基于行存儲方式适用于事務型應用,需要大量讀取備援資料而增加磁盤I/O,在分析類型應用效率低下;

傳統資料庫索引針對于每一行建立,檢索速度慢,需要手工建立,不便于維護,且極大的影響資料的入庫效率;

采用小型機+磁盤陣列的硬體平台成本較高,擴容成本大,且擴容能力有限;

傳統的資料庫系統采用關系型資料庫,主要用于對結構化資料的處理,不支援對半結構化和非結構化資料的存儲和處理,無法滿足海量半結構化、非結構化的存儲、查詢、分析和處理的需求。

  1. 大資料分析平台技術選型

針對傳統資料庫處理大資料瓶頸以及大資料的應用需求,衍生了多項大資料技術。目前市面上有兩種主流的處理架構:MPP資料庫和Hadoop技術。

3.1.MPP資料庫

MPP資料庫是新型資料庫類型,采用Shared Nothing+MPP架構,通過列存儲、高效壓縮、粗粒度智能索引等多項大資料處理技術,結合MPP架構高效的分布式計算模式,完成對海量高密度結構化資料的分析類應用的支撐,運作環境多為低成本PC Server,具有高性能和高擴充性的特點。MPP資料庫廣泛應用到行業資料倉庫和各類結構化資料分析領域。

MPP資料庫可以有效支撐PB級别的結構化資料處理,它具有如下特點:

具備ACID特性:滿足原子性、一緻性等要求;

支援關系模型:基于關系模型設計;

使用SQL引擎:标準接口,開發效率高,應用遷移友善;

基于Share Nothing架構:可以橫向擴充數百個節點,支撐PB級别的資料處理;

存儲結構化資料,有明顯的星型和雪花模型結構:便于進行OLAP分析、多元分析;

可基于開放的X86架構伺服器部署:平台建設成本低;

MPP資料庫擅長處理高價值密度的結構化資料,适合大規模的複雜分析,海量資料的查詢、關聯等場景,例如資料倉庫、資料集市、企業級報表、統計分析、即席查詢、多元分析等。

3.2.Hadoop技術

基于Hadoop生态的大資料技術主要針對非結構化資料的存儲和計算、實時流處理等傳統關系型資料庫較難處理的資料和場景。Hadoop依托于開源社群的優勢,以及相關技術的不斷進步和疊代更新,可支撐對于非結構、半結構化資料處理、複雜的ETL流程、複雜的資料挖掘和計算模型。

Hadoop技術具有如下特點:

鍵值對存儲方式:簡單低耦合方式存儲資料;

分布式檔案系統:基于HDFS的分布式檔案系統,具有明顯的存儲優勢,可以存儲海量的結構化、半結構化、非結構化資料;

MR/RDD:靈活的程式設計模式;

存儲結構化、半結構化和非結構化資料:全量資料存儲;

可基于開放的X86架構伺服器部署:擴容成本低;

擴充性:可以擴充到上千節點;

3.3.兩種技術對比

MPP資料庫與Hadoop技術具有各自的優缺點和适用場景,二者之間的對比如下:

MPP資料庫為Shared Nothing架構,對于JOIN或GROUP BY操作,執行計劃可以優化為直接通過本地計算完成關聯或分組,而不需要進行各節點間重分布資料,處理性能優越。Hadoop是基于HDFS檔案存儲,需要通過掃描來定位資料,同時在計算中會有大量的節點間資料搬運和排序操作,對于大表複雜關聯及GROUP BY處理性能較低。

MPP資料庫擅長處理高價值密度的結構化資料,而Hadoop的優勢在于處理非結構化資料和流資料。

Hadoop對資料的操作模型,更适合于隻支援一次寫入多次讀取,

QQ号拍賣平台

資料更新性能較低;MPP資料庫基于關系模型,其存儲結構和處理結構可以支援任意對資料集合的更新和删除。

對于小資料量,MPP資料庫和Hadoop生态的Spark在運算關系型上沒有太大差異,但對于100TB級以上的資料處理,MPP資料庫充分利用其記憶體管理和CBO設計上的優勢,有比較Spark更強的性能優勢。但在關系型運算之外,Spark在資料挖掘算法,尤其在基于疊代的算法執行方面具有優勢。

Hadoop生态的Spark處理性能高,但也隻有在記憶體中處理才能保證高性能,一旦記憶體不足,資料就需要存回到HDFS中,性能将會發生很大的抖動。

Hadoop對SQL相容性不好,且調優算法複雜多樣。MPP 資料庫是關系型資料庫,本身支援SQL,且執行計劃有多年的積累,便于進行高效的優化。

MPP資料庫擅長SQL程式設計解決的問題。Hadoop的MapReduce及RDD程式設計模型比較靈活,可以處理部分SQL不能處理的問題,例如機器學習等。

Hadoop采用Java開發,在運作時依賴JAVA虛拟機,記憶體需求較大時容易出現大量的記憶體垃圾,影響任務執行效率。MPP資料庫有完善的記憶體管理,保證記憶體和磁盤之間資料置換的平滑性

MPP資料庫可以有效的采取基于代價的優化(CBO),根據内部資料字典作動态優化資料的分析和處理。

3.4.混搭方案

綜上所述,在大資料進行中MPP資料庫和Hadoop技術均有其各自的優劣勢以及适用的場景,在實際應用中必須采用MPP資料庫和Hadoop技術的混搭方案,這樣才可以充分發揮各自的優勢,實作功能互補,解決大資料的諸多複雜需求。對于大規模的複雜分析、即席查詢、多表複雜關聯等場景,由MPP資料庫處理;而非結構化資料處理、流處理以及大規模批量複雜作業,則由Hadoop架構負責。MPP資料庫和Hadoop技術的混搭方案可以實作對全量資料的處理,滿足各行業對大資料的應用需求。

  1. 沒有銀彈

目前資料管理技術發展很快,供我們選擇的技術種類繁多。而面臨大資料平台技術選型時,很難說哪種技術更好,是以我們要摒棄一種技術支撐所有應用的幻想。需求是選型中最重要的因素。根據需求,選取最合适的技術,針對多類需求,選取多種技術混搭來滿足。引用Fred Brooks先生的經典論述:真正的銀彈并不存在。最新的未必是最好的,以開放的心态面對所有技術類型,取我所需,為我所用。畢竟能夠滿足需求的技術,才是最好的技術。