1. 程式人生 > >海量實時使用者行為資料的儲存和分析

海量實時使用者行為資料的儲存和分析

在短時間內爆發大量資料,這時資料資源的採集、儲存和分析和應用等,都是大資料行業的難點。行為資料、日誌資料的處理,往往成為企業資料建設首先面對的瓶頸,這些資料不易儲存,實時獲取分析難度較大,但是資料價值卻不可估量。

在大資料中,90% 以上的資料爆發來自於行為資料,就像現在的網際網路、移動網際網路、甚至在產生於物聯網中用來描述人和物的每一分每一秒的變化的資料狀態,這些都是行為資料。

行為資料能用做什麼?

行為資料能做什麼?有一個簡單的例子 —— 分析訪客行為的路徑,我們拿一個網站的資料進行分析,針對網站的訪客,我們可以通過分析其訪問前期、中期、後期的行為習慣去了解哪些引流的渠道需要加強投入,以及使用這些來指導內容編輯和競品研究分析工作。

實際上在做需求時,還有更多的細節要求如:對資料的實時性的要求比較高、要求資料的熱點情報的準確性、與客戶資料的協同分析等。

行為資料的處理方式

使用者行為資料通常具備以下特徵:

  • 使用者基數大;

  • 高基數維度比較多;

  • 資料量大;

  • 時序的特徵。

我們用到的高基維,其中有些維度都是上千萬的高基維引數。使用者行為資料的處理,在支援原始資料查詢的同時,也要支援原始資料的聚合能力。

原始資料的聚合分析這塊又分為兩種,一種是過去常用的做法,通過一個固化的業務模型或者主題,提前計算好的資料,叫做物化檢視。

第二種是基於原始資料儲存之後,在實時查詢的過程中進行多維交叉的計算,這個稱為實時聚合。

在查詢過程中對實時聚合的一個分析,也是大家在進行資料探勘分析中共同面臨的一個問題,就是針對海量資料。

首先,針對這些資料,需要快速的檢索出所需要的資料的行號。其次,在獲取資料所在位置之後,如何快速地把資料裝載到記憶體裡,最後是裝載到記憶體之後通過分散式計算的方式,怎麼去把我們的結果計算出來。

這些就是在做資料的實時查詢過程中的需要具備的基本技術條件。

挖掘資料新的價值

面對海量實時行為資料的技術思考,主要是從四個角度來進行:

第一,必須要以原始資料儲存。為什麼要基於原始資料儲存?因為在整個的資料分析階段,可以細分為三個階段。第一個就是傳統的是 BI 階段。第二個是資料的挖掘,第三個是資料的預測分析。

想解決這三個階段的過程,以傳統的方法是建一個數倉,基於數倉來實施的時,只能面向比較固化的業務報表模式,產生一些資料的分析結果,得到決策結果。如果想做資料探勘時,基於固化業務模式計算的結果的很難滿足資料探勘需求,所以必須從初始階段基於原始資料去提取其特徵。

基於固化的的業務報表模型所獲取資料計算的結果,對資料探勘分析的價值不高。儲存引擎必須以原始資料進行儲存,才能既滿足 BI 階段的需求,又可以解決未來資料探勘與資料預測分析的需求。

第二,要滿足實時多維的查詢,是為了在資料基於原始資料儲存之後,去做到聚合結果能夠滿足使用者對海量增量資料快速查詢的需求。

第三,快速響應需求,在企業內部,其實資料部門的需求量是最大的,各個業務部門的需求都往資料中心提,所以資料部門必須去解決好如何快速地響應業務需求。

第四,資料的探索分析,以往把資料,按照固化的業務報表模式所獲取的結果,做二次分析的空間量比較小。所以必須要基於原始多維的資料進行資料的探索,挖掘資料新的價值,而不是按照已有的固化的業務模式,只是生產出一些固化的業務模型的資料。

平臺架構

數果現在基於之前做過的一些技術的預言跟驗證,自行研發了一個基於 Hadoop 加速引擎,稱為 Tindex。之前我也在網路上做過萬億級日誌與行為資料儲存查詢技術剖析http://www.infoq.com/cn/articles/trillion-log-and-data-storage-query-techniques 的文章 ,也講解了 Tindex 是如何實現的。Tindex 的實現主要基於三點,第一點基於索引,第二點基於類似儲存的方式,第三點做了分散式記憶體計算的框架在 Tindex 中,使之能夠支援資料的實時的多維分析的能力。

基於加速引擎這塊,在其上層做了一個適配層,有 SQL引擎。SQL 引擎支援 SQL 語句和表示式,還有大資料生態技術,目前已經是完全支援。基於適配層,來做不同的行業應用。這是數果整個平臺技術架構的一個圖。

平臺特性

平臺的特性方面,支援海量增量資料實時接入。在資料接入這塊,現在提供視覺化埋點,跟檔案、MR 的一些資料的採集,就像我們目前在做的單程序的接入式,基本上在 3 萬以上,從資料的產生,到資料顯示、出現查詢結果,在 5 秒以內即可實現。

第二個特性,基於明細資料的儲存與預聚合的儲存分別去搭建。為什麼不僅要基於原始資料儲存,還需要預聚合儲存?因為其有兩種不同的需求。第一個是面向固化的高頻查詢的資料,我們可以基於預聚合儲存的方式,去查詢其週期跨度比較長的需求,一年兩年都可以進行查詢。但是基於近半年或者一年的資料需要進行深度資料探索分析的,便可以基於原始明細資料做實時聚合分析。還有在基於原始明細資料進行分析的時候,他會更佳靈活。

第三,海量資料中怎麼去實現快速檢索,是基於搜尋引擎的索引技術進行改造的。但是在篩選方式上,目前只能支援時間篩選、文字篩選和數值篩選,例如文字篩選中支援分詞與模糊匹配,數值篩選中,數值的分組和數值的範圍這些均可支援。

這個展示的是靈活多維的分析,在這個介面中,左邊的這一列中是基於原始明細資料產生的所有的維度,可以根據許可權去進行顯示。而在指標方面通過介面拖拽進行多維實時分析,選擇想要的資料分析結果,進行視覺化的展示,可以自由地資料探索。因為資料是基於原始明細資料的儲存,所以不需要提前預計算。可以在介面上進行任意資料交叉分析,去了解資料的分佈態是非常便捷的。

通過指標的靈活定義,來實現實時響應的業務需求,這個指標定義這塊有幾個指標,一種叫單指標,即按照某一個維度進行一個聚合計算,通過介面可以簡單、快速完成。另一種叫複合指標,需要進行一些四則運算,可以通過這個介面定義出來。

在指標這方面還有比較複雜的,需要通過多個維度進行定義的,可以通過一些表示式,進行快速的定義,定義完成後就通過介面,直接看到結果,獲得圖形顯示,進行資料分析。

支援實時監控與跟蹤告警,在多維分析介面中把分析結果定義出來後,可以直接形成一個實時監控大屏,不需要重新開放,多站完成各類需求。

最後一個也是最重要的一個特性,是支援二次的開發。數果的平臺提供普通類查詢,有 Timeseries、TopN、select、groupby、firstN、scanQuery。也提供像使用者分組,使用者漏斗查詢,使用者留存查詢這類高階查詢,還支援多種條件的過濾,像日期範圍、數值範圍、地理座標範圍,還有字串的精準匹配。還支援多種聚合的方式。如統計,分組,還有聚合再聚合,這類業務場景,也是在業務需求中經常出現的。

基於平臺我們做了什麼?

基於這個平臺實現了指標任意定製,因為資料是基於原始明細記錄儲存的,所以指標的定製這方面,不需要提前預計算,直接通過介面,通過一些表示式便可以輕鬆實現。

維度的自由的篩選,可以通過介面,自由地拖拽資料,就可以完成交叉分析。

基於平臺提供使用者行為分析模型,例如實時的使用者分群,可以通過介面快速的完成。再例如實時的路徑分析,實時的流程分析,實時的漏斗分析。提供了一個智慧演算法模型,相當於在這個模組實現了,將機械學習跟深度學習的演算法吸收進來,跟我們的平臺打通,就可以實現通過介面的簡單拖拽,來完成大部分演算法的模型。使用者也有一些固化的模型,像使用者的擴群,使用者 RFM 細分的模型,使用者流失預測的模型。基於這方面也提供了一個實時大屏的模組,能夠由使用者自由拖拽完成其實時監控的需求。

掃描下方二維碼,關注我們。每天都有精彩內容哦!~  學習瞭解大資料相關技術可以加群:724693112 可以領取免費學習資料