資料中臺(資料整合篇)

一寸HUI發表於2022-01-13

宣告:本文歸屬一寸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怎麼構建資料中臺(四)-資料接入系統

相關文章