數據中臺(數據集成篇)

聲明:本文歸屬一寸HUI所有。@一寸HUI

在上一篇文章數據中臺(架構篇)中瞭解到了數據中臺的架構,其中,數據集成開發平臺:數據集成開發平臺能最高效地使用底層的組件和數據,提供從源數據到數據能力的轉換。數據集成平臺是數據中臺數據接入的入口。數據中臺本身幾乎不產生數據,所有數據來自於業務系統、日誌、文件、網絡等,這些數據分散在不同的網絡環境和存儲平臺中,難以利用,很難產生業務價值。數據集成是數據中臺必須提供的核心工具,把各種異構網絡、異構數據源的數據方便地採集到數據中臺中進行集中存儲,爲後續的加工建模做準備。數據集成方式一般有數據庫同步、埋點、網絡爬蟲、消息隊列等;從匯聚的時效性來分,有離線批量匯聚和實時採集,也有增量同步和全量同步。在數據集成的過程中一般會用到datax,flume,sqoop,canal等工具。

要構建企業級的數據中臺,第一步就是要讓企業內部各個業務系統的數據實現互聯互通,從物理上打破數據孤島,這主要通過數據匯聚和交換的能力來實現。在面向具體場景時,可以根據數據類型將匯聚對象分爲結構化和非結構化、大文件和小文件、離線與在線等幾種,不同類型的數據對存儲的要求不同。

在數據採集和匯聚過程中,需要特別注意的一點是數據的隱私和安全,數據採集和匯聚是最容易觸碰法律紅線的環節, 因此在制訂相應的方案時,一定要考慮當地安全法規的要求,避免侵犯用戶的個人隱私,導致用戶信息安全受損。

數據採集方法和工具

1.線上行爲採集

線上行爲的主要載體可以分爲傳統互聯網和移動互聯網兩種,對應的形態有PC系統、PC網頁、H5、小程序、App、智能可穿戴設備等。在技術上,數據採集主要有客戶端SDK埋點和服務端SDK埋點等方式。其中客戶端SDK埋點主要是通過在終端設備內嵌入埋點功能模塊,通過模塊提供的能力採集客戶端的用戶行爲,並上傳回行爲採集服務端。

客戶端埋點:

  • 全埋點:將終端設備上用戶的所有操作和內容都記錄並保存下來,只需要對內嵌SDK做一些初始配置就可以實現收集全部行爲的目的。這也經常被稱爲無痕埋點、無埋點等。
  • 可視化埋點:將終端設備上用戶的一部分操作,通過服務端配置的方式有選擇性地記錄並保存。
  • 代碼埋點:根據需求來定製每次的收集內容,需要對相應的終端模塊進行升級。

服務端埋點:

  • 服務端埋點,通過在系統服務器端部署相應的數據採集模塊,將這部分數據作爲行爲數據進行處理和分析。服務端埋點常見的形態有HTTP服務器中的access_log,即所有的Web服務的日誌數據。

2.線下行爲採集

  • 線下行爲數據主要通過一些硬件來採集,如常見的Wi-Fi探針、攝像頭、傳感器等。隨着設備的升級,各種場景中對智能設備的應用也越來越多,安防、客戶監測、考勤等都開始深入到生活中。常見的主要有Wi-Fi信號採集、信令數據採集、圖像視頻採集以及傳感器探測等。

3.互聯網數據採集

  • 網絡爬蟲又稱爲網頁蜘蛛,是一種按照既定規則自動抓取互聯網信息的程序或者腳本,常用來做網站的自動化測試和行爲模擬。

在數據能力建設過程中,很多企業結合自身的場景和最佳實踐也開源了一些優秀的匯聚工具,如Flume、Flinkx,Sqoop、DataX、Canal等,適用場景不同,也各有優缺點。

數據分類

數據組織形式來分,數據主要分成三類:

  • 結構化數據:規則、完整,能夠通過二維邏輯來表現的數據,嚴格遵循數據格式與長度規範,常見的有數據庫表、Excel等二維表。
  • 半結構化數據:數據規則、完整,同樣嚴格遵循數據格式與長度規範,但無法通過二維關係來表現,常見如JSON、XML等形式表達的複雜結構。
  • 非結構化數據:數據結構不規則或不完整,不方便用二維邏輯表來表現,需要經過複雜的邏輯處理才能提取其中的信息內容,如辦公文檔、圖片、圖像和音視頻等。

時效性和應用場景來分,數據匯聚可以分成離線和實時兩類:

  • 離線:主要用於大批量數據的週期性遷移,對時效性要求不高,一般採用分佈式批量數據同步的方式,通過連接讀取數據,讀取數據過程中可以有全量、增量的方式,經過統一處理後寫入到目標存儲。
  • 實時:主要面向低時延的數據應用場景,一般通過增量日誌或通知消息的方式實現,如通過讀取數據庫的操作日誌(RedoLog、BinLog)來實現相應的實時處理,業界常見的Canal、MaxWell、StreamSets、NiFi等框架和組件都有較多的實際應用。

數據交換平臺

從數據類型來看,有結構化數據和非結構化數據;從實效性來看,有實時數據交換和離線數據交換。另外,數據交換應該是後續數據作業的起點,因此,相應的交換任務調度及狀態要能夠有效地與上下游形成依賴,藉助統一調度的能力構建數據作業流。

數據交換中心的首要目的是屏蔽底層工具的複雜性,以可視化配置的方式提供給企業用戶;其次需要考慮,爲了解決數據孤島,需要滿足異構存儲、異構數據類型的交換需求;同時,還要考慮不同時效要求下的數據互通。因此,數據交換平臺需要屏蔽系統底層協議、傳輸安全、特性組件等信息,讓開發人員在數據接入過程中無須關注數據格式轉換、數據路由、數據丟失等,只需要關注與業務本身的數據交換部分。企業信息化建設的多種數據源類型,可以通過同步模塊的數據源進行統一管理,方便用戶快速通過可視化頁面執行數據匯聚工作。

基於異構數據源、異構廠商集羣、數據應用時效性和相關技術棧等因素考慮,採取了不同的同步策略:離線數據同步和實時數據同步。同時,在兩種同步服務的產品形態上,可以採用相同的可視化同步配置策略,以降低用戶操作成本。

1.數據源管理

數據源管理主要是管理數據所用的存儲,用於平臺在做數據交換時,可以方便地對外部存儲進行相應的管理。數據源可以是已有系統存儲業務數據的地方,作爲數據中臺的數據來源,也可以是數據應用場景,爲應用場景提供結果數據存儲的地方。根據業務系統以及數據應用場景的不同,數據源也有不同的選擇。

數據源會有很多種,大致可以分成:

  • 關係型數據庫:如Oracle、MySQL、SQL Server、Greenplum等。
  • NoSQL存儲:如HBase、Redis、Elasticsearch、Cassandra、MongoDB、Neo4J等。
  • 網絡及MQ:如Kafka、HTTP等。
  • 文件系統:如HDFS、FTP、OSS、CSV、TXT、Excel等。
  • 大數據相關:如Hive、Impala、Kudu、MaxCompute、ADB、LibrA、
    ELK等

2.離線數據交換

離線數據交換是針對數據時效要求低、吞吐量大的場景,解決大規模數據的批量遷移問題,其實現原理是將不同數據源的交換抽象爲從源頭數據源讀取數據的讀取插件,以及向目標端寫入數據的寫入插件,理論上可以支持任意類型數據源的數據交換工作。採用插件化方式構建,將數據源讀取和寫入抽象成讀取插件、寫入插件。

  • 讀取插件:數據採集模塊,負責採集數據源的數據,將數據發送給數據交換核心模塊。
  • 寫入插件:數據寫入模塊,不斷從數據交換核心模塊取數據,並將數據寫入到目的端。
  • 數據交換核心模塊:用於連接讀取插件和寫入插件,作爲兩者的數據傳輸通道,並處理緩衝、流控、併發、數據轉換等核心技術問題。

離線數據同步:

  • 前置稽覈:在源端數據同步開始前,可以進行數據質量規則校驗,根據配置規則的阻塞、告警等策略控制數據同步是否運行。
  • 數據轉換:數據轉換是指將各類非標準數據轉換成標準數據格式,並且將轉換後的數據推送到大數據平臺指定的位置或庫表。在數據同步、傳輸過程中,存在用戶對於數據傳輸進行定製化的場景,包括字段截取、替換、編碼轉換等操作,可以藉助ETL的T過程(Transform)實現。
  • 跨集羣數據同步:數據同步模塊可支持不同集羣間的數據同步。
  • 全量同步:全量數據同步分爲表全量同步和庫全量同步(整庫同步)兩種方式。表全量同步每次讀取表中全量數據並寫入;庫全量同步策略是把庫中所有表進行數據同步,要求源端和目的端的表名稱、結構相同,允許目標表不存在,不存在時自動創建目標表。
  • 增量同步:增量同步分爲新增、覆蓋和更新三種策略。新增策略主要通過在目的端創建新分區或者直接追加寫數據實現。覆蓋和更新策略在同步配置時選擇唯一鍵,根據唯一鍵對比同步中的數據和目的端數據,結合增量策略來判斷數據是覆蓋還是更新。

3.實時數據交換

實時數據交換主要負責把數據庫、日誌、爬蟲等數據實時接入Kafka、Hive、Oracle等存儲中,便於後續進行實時計算或供業務查詢分析使用。

實時同步有兩個核心服務:數據訂閱服務(Client Server)、數據消費服務(Consumer Server)。

數據訂閱服務主要包含數據的訂閱和讀取、任務實例的啓停控制等功能,Client Server採用插件式設計思路,可以支持擴展不同類型的數據訂閱讀取。

數據存儲

類數據匯聚後,首先面臨的是存儲壓力,不同類型的數據內容、不同的數據匯聚方式及未來可能的使用場景,對存儲的選擇也會有較多的考慮。常見的問題有:

  • 存儲是選擇關係型數據庫還是大數據相關的技術(Hadoop等)?
  • 現有的存儲與新存儲之間的關係是什麼?

除了上面要考的內容,還要考慮如下內容:

  • 數據規模:當前的數據規模以及未來的數據規模,這取決於對中臺的定位及未來的發展預期,DT時代企業的數據生產方式越來越豐富,數據量越來越大,選擇成本可控且容易擴展的存儲是當前比較常見的選擇。
  • 數據生產方式:有些數據生產端沒有存儲,因此會通過實時推送的方式將生產數據按特定協議和方式進行推送,這類場景要求數據採集時的存儲能夠滿足數據實時落地的需求。有些目標存儲不具備這種高性能落地的能力,因此需要考慮在數據生產端和目標存儲端中間加一個寫性能較好的存儲。
  • 數據應用方式:數據使用場景決定了數據存儲的選型,如離線的數據分析適合非人機交互的場景,搜索則需要能夠快速檢查並支持一些關鍵字和權重處理。這些能力也需要有特定的存儲來支撐。
  • 在線存儲or離線存儲:在線存儲是指存儲設備和所存儲的數據時刻保持“在線”狀態,可供用戶隨意讀取,滿足計算平臺對數據訪問的速度要求,就像PC機中常用的磁盤存儲模式一樣。在線存儲設備一般爲磁盤、磁盤陣列、雲存儲等。離線存儲是爲了對在線存儲的數據進行備份,以防範可能發生的數據災難。離線存儲的訪問速度慢、效率低。離線存儲的典型產品是硬盤、磁帶和光盤等。

當然數據集成平臺在建設的過程中要考慮到用戶的體驗,在管理好數據源的基礎上,裏面的表字段做到可視化,源表和目標表的字段自動對其,方便查看和排查問題,還有就是要考慮數據質量,避免重複接入,或者接入髒數據,髒數據可以在源端控制好,或者直接丟棄,既然是集成,當然是之多各種各樣的數據源,同步方式也要支持多種,做到可視化,做好數據集成監控,還有就是接入的數據存放在哪裏,所以在接入的存放點我們要設置好規範,不能亂接入,命名規範(可以看下數據中臺-實施篇:數據接入相關規範)。還有就是各種作業的命名規範,最好一眼就能看出來這個作業名是從哪裏到哪裏,是什麼業務的什麼表等。數據集成平臺最好做到零代碼開發接入,通過配置等就可以實現各個數據存儲系統之間的相互接入。

參考:
《數據中臺:讓數據用起來》
數據採集與埋點
數據埋點怎麼做
基於Apache doris怎麼構建數據中臺(四)-數據接入系統

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章