- 征信大數據:理論與實踐(中國金融四十人論壇書系)
- 姚前 謝華美 劉松靈 劉新海
- 4187字
- 2021-04-25 16:45:15
第二章
大數據技術
一、大數據技術層
目前,大數據領域每年都會涌現出大量新的技術,成為大數據獲取、存儲、處理分析、大數據安全及可視化的有效手段。大數據技術能夠將大規模數據中隱藏的信息和知識挖掘出來,為人類社會經濟活動提供依據,提高各個領域的運行效率,甚至整個社會經濟的集約化程度。
這里把大數據技術層歸納為五大類,如表1所示。
表1 大數據技術分類

(一)基礎架構支持
由于大數據要處理大量、非結構化的數據,所以在各處理環節中都可以采用并行處理。目前,Hadoop、MapReduce和Spark等分布式處理方式已經成為大數據處理各環節的通用處理方法。大數據處理需要擁有大規模物理資源的云數據中心和具備高效的調度管理功能的云計算平臺的支撐。云計算管理平臺能為大型數據中心及企業提供靈活高效的部署、運行和管理環境,降低應用系統開發、部署、運行和維護的成本,提高資源使用效率。
作為新興的計算模式,云計算在學術界和業界獲得巨大的發展動力。政府、研究機構和行業領跑者正在積極嘗試應用云計算來解決網絡時代日益增長的計算和存儲問題。除了亞馬遜的AWS、Google的APP Engine和Microsoft的Windows Azure Services等商業云平臺之外,還有一些如OpenNebula、Eucalyptus、Nimbus和OpenStack等開源的云計算平臺,每個平臺都有其顯著的特點和不斷發展的社區。
(二)數據采集
數據采集技術指從傳感器和其他待測設備等模擬和數字被測單元中自動采集非電量或者電量信號,送到上位機中進行分析、處理的過程。數據采集技術可分為3大類:
網絡數據采集方法:指通過網絡爬蟲或網站公開API等方式從網站上獲取圖片、音頻、視頻等文件或附件等數據信息。該方法可以將非結構化數據從網頁中抽取出來,將其存儲為統一的本地數據文件,并以結構化的方式存儲。支持文件之間的自動關聯。除了網絡中包含的內容之外,對于網絡流量的采集可以使用DPI或DFI等帶寬管理技術進行處理。
系統日志采集方法:通過智能硬件、傳感器、社交網絡等數據載體的日常運維進行數據資源的采集,大部分數據企業都擁有自己的采集工具,如Hadoop的Chukwa、Cloudera的Flume、Facebook的Scribe等,這些工具均采用分布式架構,能滿足每秒數百MB的日志數據采集和傳輸需求。
其他數據采集方法:其他數據包括企業生產經營數據或學科研究數據等保密性要求較高的數據,可以通過與企業或研究機構合作,使用特定系統接口等相關方式采集數據。
大數據預處理技術,主要完成對已接收數據的辨析、抽取、清洗等操作。數據抽取:因獲取的數據可能具有多種結構和類型,數據抽取過程可以將這些復雜的數據轉化為單一的或者便于處理的類型,以達到快速分析處理的目的。數據清洗:對于大數據,并不全是有價值的,對于無價值的數據或干擾數據,需要通過過濾“去噪”進而提取出有效數據。
(三)數據存儲
傳統的數據存儲和管理以結構化數據為主,因此關系數據庫系統(RDBMS)可以一統天下滿足各類應用需求。大數據往往是以半結構化和非結構化數據為主,結構化數據為輔,而且各種大數據應用通常是對不同類型的數據內容檢索、交叉比對、深度挖掘與綜合分析。為了滿足快速增長的存儲需求,大數據的存儲需要具備高擴展性、高可靠性、高可用性、低成本、自動容錯和去中心化等特點。常見的大數據的存儲形式可以分為分布式文件系統和分布式數據庫。其中,分布式文件系統采用大規模的分布式存儲節點來滿足存儲大量文件的需求,而分布式的NoSQL數據庫則為大規模非結構化數據的處理和分析提供支持。
Google在早期面對海量互聯網網頁的存儲及分析難題時,率先開發出了Google文件系統GFS以及基于GFS的MapReduce分布式計算分析模型。由于一部分的Google應用程序需要處理大量的格式化以及半格式化數據,Google又構建了弱一致性要求的大規模數據庫系統Big-Table,能夠對海量數據進行索引、查詢和分析。Google的這一系列產品,開創了云計算時代大規模數據存儲、查詢和處理的先河,也成為這個領域的事實上的標準,在技術上一直保持領先地位。
在大規模分布式數據庫方面,HBase及Cassandra等主流NoSQL數據庫主要是提供高可擴展性支持,在一致性和可用性方面會做相應的犧牲,在對傳統的RDBMS的ACID語義、事務支持等方面存在不足。Google的Megastore則是努力把NoSQL與傳統的關系型數據庫融合,并為一致性和高可用性提供了強有力的保證。Megastore使用同步復制來達到高可用性和數據的一致性視圖。簡而言之,MegaStore對“不同地域的低延遲性的數據副本”提供了完全的串行化ACID語義來支持交互的在線服務。Megastore兼具了NoSQL和RDBMS兩者的優點,在保障一致性的原則下,又能滿足高可擴展性、高容錯性和低延遲,為Google的上百個生產應用提供服務。
(四)數據計算
面向大數據處理的數據查詢、統計、分析、挖掘等需求,促生了大數據計算的不同計算模式,整體上我們把大數據計算分為離線批處理計算、實時交互計算和流計算三種。
1.離線批處理
隨著云計算技術得到廣泛的應用和發展,基于開源的Hadoop分布式存儲系統和MapReduce數據處理模式的分析系統也得到了廣泛的應用。Hadoop通過數據分塊及自恢復機制,能支持PB級的分布式的數據存儲,以及基于MapReduce分布式處理模式對這些數據進行分析和處理。MapReduce編程模型可以很容易地將多個通用批數據處理任務和操作在大規模集群上并行化,而且有自動化的故障轉移功能。MapReduce編程模型在Hadoop這樣的開源軟件帶動下被廣泛采用,應用到Web搜索、欺詐檢測等各種各樣的實際應用中。
除了MapReduce計算模型之外,以Swift為代表的工作流計算模式,Pregel為代表的圖計算模式,也都可以處理包含大規模的計算任務的應用流程和圖算法。Swift系統作為科學工作流和并行計算之間的橋梁,是一個面向大規模科學和工程工作流的快速、可靠的定義、執行和管理的并行化編程工具。Swift采用結構化的方法管理工作流的定義、調度和執行,它包含簡單的腳本語言SwiftScript,SwiftScript可以用來簡潔地描述基于數據集類型和迭代的復雜并行計算,同時還可以對不同數據格式的大規模數據進行動態的數據集映射。運行時系統提供一個高效的工作流引擎用來進行調度和負載均衡,它還可以與PBS和Condor等資源管理系統進行交互,完成任務執行。Pregel是一種面向圖算法的分布式編程框架,可以用于圖遍歷、最短路徑、PageRank計算等。它采用迭代的計算模型:在每一輪,每個頂點處理上一輪收到的消息,并發出消息給其他頂點,并更新自身狀態和拓撲結構(出、入邊)等。
2.實時交互計算
當今的實時計算一般都需要針對海量數據進行,除了要滿足非實時計算的一些需求(如計算結果準確)以外,實時計算最重要的一個需求是能夠實時響應計算結果,一般要求為秒級。
數據量巨大且不能提前計算出結果的,但要求對用戶的響應時間是實時的。主要用于特定場合下的數據分析處理。當數據量龐大,同時發現無法窮舉所有可能條件的查詢組合,或者大量窮舉出來的條件組合無用的時候,實時計算就可以發揮作用,將計算過程推遲到查詢階段進行,但需要為用戶提供實時響應。這種情形下,也可以將一部分數據提前進行處理,再結合實時計算結果,以提高處理效率。
數據源是實時的不間斷的,要求對用戶的響應時間也是實時的。海量數據的實時計算過程可以被劃分為以下三個階段:數據的產生與收集階段、傳輸與分析處理階段、存儲和對外提供服務階段。如圖1所示。

圖1 實時計算過程
數據實時采集在功能上需要保證可以完整地收集到所有數據,為實時應用提供實時數據;響應時間上要保證實時性、低延遲;配置簡單,部署容易;系統穩定可靠等。目前,互聯網企業的海量數據采集工具,有Facebook開源的Scribe、LinkedIn開源的Kafka、Cloudera開源的Flume、淘寶開源的TimeTunnel、Hadoop的Chukwa等,均可以滿足每秒數百MB的日志數據采集和傳輸需求。
數據實時計算:傳統的數據操作,首先將數據采集并存儲在數據庫管理系統(DBMS)中,然后通過query和DBMS進行交互,得到用戶想要的答案。整個過程中,用戶是主動的,而DBMS系統是被動的。但是,對于現在大量存在的實時數據,這類數據實時性強,數據量大,數據格式多種多樣,傳統的關系型數據庫架構并不合適。新型的實時計算架構一般都是采用海量并行處理MPP的分布式架構,數據的存儲及處理會分配到大規模的節點上進行,以滿足實時性要求,在數據的存儲上,則采用大規模分布式文件系統,比如Hadoop的HDFS文件系統,或是新型的NoSQL分布式數據庫。
實時查詢服務的實現可以分為三種方式:(1)全內存:直接提供數據讀取服務,定期dump到磁盤或數據庫進行持久化。(2)半內存:使用Redis、Memcache、MongoDB、BerkeleyDB等數據庫提供數據實時查詢服務,由這些系統進行持久化操作。(3)全磁盤:使用HBase等以分布式文件系統(HDFS)為基礎的NoSQL數據庫,對于key - value引擎,關鍵是設計好key的分布。
3.流計算
在很多實時應用場景中,比如實時交易系統、實時詐騙分析、實時廣告推送、實時監控、社交網絡實時分析等,存在數據量大,實時性要求高,而且數據源是實時不間斷的。新到的數據必須馬上處理完,不然后續的數據就會堆積起來,永遠也處理不完。反應時間經常要求在秒級以下,甚至是毫秒級,這就需要一個高度可擴展的流式計算解決方案。
流計算就是針對實時連續的數據類型而準備的。在流數據不斷變化的運動過程中實時地進行分析,捕捉到可能對用戶有用的信息,并把結果發送出去。整個過程中,數據分析處理系統是主動的,而用戶卻是處于被動接收的狀態。如圖2所示。

圖2 流計算過程
(五)數據的展現與交互
可視化通過交互式視覺表現的方式來幫助人們探索和理解復雜的數據,能在生產實踐和企業運營中,形成有效的統計、分析、預測及決策。因此大數據的展現技術,以及與數據的交互技術在大數據全局中也占據重要的位置。
大數據可視化技術主要是利用計算機圖形學和圖像處理技術,將數據轉換成圖形或圖像在屏幕上顯示出來,并進行交互處理的理論、方法和技術等。它涉及到計算機圖形學、圖像處理、計算機視覺、計算機輔助設計等多個領域,成為研究數據表示、數據處理、決策分析等一系列問題的綜合技術。當然這種新型設備和技術的弊端也是顯而易見,我們處在一個隨時被監控、隱私被刺探、侵犯的狀態,所以大數據技術所帶來的安全性問題也不容忽視。
大數據技術的興起正完成對各傳統領域的顛覆。全球范圍內,運用大數據推動經濟發展、完善社會治理、提升政府服務和監管能力正成為趨勢。各國已相繼制定實施大數據戰略性文件,大力推動大數據發展和應用。從全球大數據發展的趨勢來看,大數據產業推動社會生產要素的網絡化共享、集約化整合、協作開發和高效利用,改變了傳統的生產方式和經濟運行機制,可顯著提升經濟運行水平和效率。中國是數據生產大國。目前,中國互聯網、移動互聯網用戶規模居全球第一,擁有豐富的數據資源和應用市場優勢。如果能在大數據管理和分析技術的研發與應用方面取得突破,可持續推動互聯網創新企業和創新應用的高速成長。