◆梁麗琴 鄭少明 鄭漢軍 羅 佳
利用大數據技術進行海量數據治理
◆梁麗琴 鄭少明 鄭漢軍 羅 佳
(廈門安勝網絡科技有限公司 福建 361008)
大數據的風靡使得各行各業都加入了或者正加入大數據“淘金”的浪潮中。大數據應用的目的主要是從海量數據中獲取收益或者價值,而這一目標的實現離不開大數據治理的基礎。本文將從數據特點、數據匯集、數據處理、數據存儲和安全的整體流程出發并結合大數據技術來闡述海量數據治理過程。
海量數據;數據歸集;數據治理;離線計算;實時計算
隨著科技的不斷進步以及互聯網時代的飛速發展,信息化、自動化、數字化和智能化等技術滲透并作用于國家、企業和個人的方方面面。而大數據就是用來描述和定義信息爆炸時代產生的海量數據。大數據具有數據量大、種類多樣化和數據增長塊的特點,那么如何可靠并有效的治理這些數據成為大數據時代的基礎問題之一。因此,本文將介紹大數據治理的流程與其對應的解決技術。
數據治理的基礎就是數據,首先對數據進行分析梳理。從數據結構可以將數據分為三類,一類是能夠由二維表結構來邏輯表達和實現的數據,稱為結構化數據,主要使用關系型數據庫進行存儲和管理,如OA系統、財務系統等核心數據庫。一類是半結構化數據,數據具有一定結構特征但并不總是保持一致,字段長度可變,字段多值并且每個字段的記錄又可以由重復或不可重復的子字段構成,如JSON文件。另一類是非結構化數據,這類數據毫無結構特征,比如文本、圖片、XML、HTML、報表、音頻、超媒體等等。
在深入了解了數據的特點之后,接下來就是歸集不同系統、平臺上產生的多源異構數據。根據數據處理需求的時效性,將數據歸集分為離線和實時兩種。對于離線數據,可以使用DataX工具來進行異構數據源的同步,因為其采用Framework Plugin架構構建,將數據源讀取和寫入抽象成為Reader/Writer插件,在接入一個新的數據源時只要將此數據源對接到DataX,就可以與已有數據源做到數據的無縫同步。通過配置DataX的定時調度任務便可以同步包括MySQL、MySQL、Oracle、HDFS、Hive、ElasticSearch、kafka、Ftp等各種異構數據源之間的數據。而對于實時數據則使用Kafka來進行數據對接,Kafka是一種高吞吐量的分布式發布訂閱消息系統,Kafka作為中間件不僅可以對消息起到緩存作用并為下游實時計算提供數據,還可以解耦前端數據支撐。將前端系統產生的數據在生成時或者短時間內定時向Kafka中對應的topic中放置一份數據即可,以供后面實時處理使用。
對于數據匯集傳輸過來的數據,需要驗證數據的合法性、準確性,防止數據傳輸過程中被篡改。在數據歸集寫入到存儲系統時會加上元數據標識,包括數據的來源、收集日期、數據安全級別和其他屬性,以便數據識別檢索和管理。
對于匯集到的原生數據也稱為不規整數據,存在數據的格式無法滿足對數據處理要求的情況,需要對其進行處理轉化為所需要的較為規整的數據。所以數據處理其實指的就是對數據進行基本的預處理,包括數據標準的統一、抽取、整合、清洗、入庫的操作,以方便數據治理后的統計分析。對于歸集來的數據根據不同業務需求,數據處理也采用離線和實時兩種方式。離線處理主要是對于需要定時批量去統計的數據,并且對數據的時效性要求不高,采用的是專為大規模數據處理而設計的Spark技術。而對實時數據處理則使用Spark Streaming,Spark Streaming具有低延遲、高性能和容錯等特點,滿足對數據實時處理的要求。
將DataX收集過來的數據通過Spark進行加載。首先根據加載數據的格式,啟動不同的解析job來處理,統一整理成鍵值對的形式。然后根據業務需求提前定義一系列數據需要預處理的job鏈,包括對數據的清洗、臟數據處理、歸一化處理、字段編碼轉換、地址經緯度轉換等操作,處理完成的數據可針對業務需求對數據的一些公共信息進行提取。對于數據的存儲需要根據對離線數據的業務需求來確定,如果是需要全文檢索或者復雜查詢的數據,則可選擇Hbase和Elasticsearch結合的方式,數據同時錄入到Hbase和Elasticsearch,利用Elasticsearch的全文檢索和分布式架構的優勢提供快速檢索,其中Elasticsearch索引中應包含Hbase的行鍵值,以便后續根據行健從Hbase中快速查詢出原數據;如果是需要實時快速查詢且數據量較小的數據,則將處理后的數據直接錄入關系型數據庫,方便業務端系統查詢;如果是簡單的查詢,則可以將數據存到Hbase,并根據業務需求合理定義行健值以提高查詢效率。
對于實時數據的處理,Spark Streaming會訂閱Kafka的topic來獲取前端業務數據流,通過配置Spark Streaming的窗口時間來實時處理數據。對于需要清洗的數據,會在Spark Streaming計算中預先加載相關的配置文件、碼表數據等靜態信息,編寫job鏈對窗口數據進行格式解析、字段提取、歸一化處理等操作。對于整理完成的數據,根據業務需求會進行數據抽取、打標簽、統計和預警監測等操作。完成實時處理之后就是對數據的存儲,對于抽取或打標簽的數據寫入到Hbase,而行健則是業務查詢字段的拼接,如身份證號、標簽、日期等;統計的數據相對數據量較小,可以寫入到關系型數據庫中或者緩存庫中,便于前端系統的實時展示;而預警數據在存儲的同時寫到消息隊列中,預警服務通過監控消息隊列的數據,在有預警信息寫入時,及時發送短信或者郵件等提醒。對于實時處理的源數據,因為實時數據處理一般都是秒級的數據,數據量累積比較快,一般不會存儲或者只存儲最近幾天的數據。如果需要歸檔則可以按日期寫入到Hdfs中,并設置定時任務刪除過期文件,防止無效文件占用過大存儲空間。
大數據治理最主要的是數據存儲和安全,如何合理且安全地存儲歸集和處理后的數據,并提供完整的資源目錄結構以便接下來數據分析和應用的使用是一個急需解決的問題。首先根據數據匯集和數據處理后的業務應用需求,構建一套具有高可擴展性、數據處理能力的多源異構數據存儲中心,包括海量分布式文件系統、Sql數據庫、NoSQL數據庫、圖數據庫、內存緩存數據庫和全文檢索庫等。并提供統一的數據中心的管理方式進行數據的管理和分配。在進行數據存儲的時候需要按照數據的特征選擇妥善安全的存儲機制和存儲架構存儲數據。
大數據治理以數據為中心,那么數據安全則是重中之重。可以根據數據使用的全過程,從訪問控制、數據保護、網絡安全和事件監控四個方面全方位保護數據的安全。訪問控制是數據安全的第一層關卡,根據業務要求、合規性和安全性等策略對數據進行分類分級管理,通過身份認證技術使得只有通過身份認證的人員才可以訪問數據。數據保護主要是通過對數據進行脫敏、失真等技術處理,從數據上保護數據的安全。網絡安全主要是保證數據通信傳輸過程的通信安全,針對不同的通信采用不同的加密方式,比如大數據平臺的RPC加密,HTTP通信加密等。最后一層就是對數據一切操作進行審計和監控,記錄所有事件的信息,并對監控數據進行分析并生成預警。
在大數據戰略的整體架構中,大數據治理是連接數據和應用的橋梁。要實現數據的分析和應用,讓數據去創建價值就離不開一個科學的大數據治理方式。而數據治理工作不可能一蹴而就,包括數據的采集、數據的處理、數據的標準化、數據的儲存和數據安全管理等各個方面。只有從數據出發,關注數據的所有細節,同時結合合適的大數據技術才能科學的治理。
[1]張紹華,潘蓉,宗宇偉.大數據治理與服務[M].上海科學技術出版社,2016.
[2]張鋒軍.大數據技術研究綜述[J].通信技術,2014.