在短期內爆發大量數據,這時數據資源的採集、存儲和分析和應用等,都是大數據行業的難點。行爲數據、日誌數據的處理,每每成爲企業數據建設首先面對的瓶頸,這些數據不易保存,實時獲取分析難度較大,可是數據價值卻不可估量。算法
在大數據中,90% 以上的數據爆發來自於行爲數據,就像如今的互聯網、移動互聯網、甚至在產生於物聯網中用來描述人和物的每一分每一秒的變化的數據狀態,這些都是行爲數據。網絡
行爲數據能用作什麼?架構
行爲數據能作什麼?有一個簡單的例子 —— 分析訪客行爲的路徑,咱們拿一個網站的數據進行分析,針對網站的訪客,咱們能夠經過分析其訪問前期、中期、後期的行爲習慣去了解哪些引流的渠道須要增強投入,以及使用這些來指導內容編輯和競品研究分析工做。框架
實際上在作需求時,還有更多的細節要求如:對數據的實時性的要求比較高、要求數據的熱點情報的準確性、與客戶數據的協同分析等。分佈式
行爲數據的處理方式oop
用戶行爲數據一般具有如下特徵:學習
咱們用到的高基維,其中有些維度都是上千萬的高基維參數。用戶行爲數據的處理,在支持原始數據查詢的同時,也要支持原始數據的聚合能力。大數據
原始數據的聚合分析這塊又分爲兩種,一種是過去經常使用的作法,經過一個固化的業務模型或者主題,提早計算好的數據,叫作物化視圖。網站
第二種是基於原始數據存儲以後,在實時查詢的過程當中進行多維交叉的計算,這個稱爲實時聚合。搜索引擎
在查詢過程當中對實時聚合的一個分析,也是你們在進行數據挖掘分析中共同面臨的一個問題,就是針對海量數據。
首先,針對這些數據,須要快速的檢索出所須要的數據的行號。其次,在獲取數據所在位置以後,如何快速地把數據裝載到內存裏,最後是裝載到內存以後經過分佈式計算的方式,怎麼去把咱們的結果計算出來。
這些就是在作數據的實時查詢過程當中的須要具有的基本技術條件。
挖掘數據新的價值
面對海量實時行爲數據的技術思考,主要是從四個角度來進行:
第一,必需要以原始數據存儲。爲何要基於原始數據存儲?由於在整個的數據分析階段,能夠細分爲三個階段。第一個就是傳統的是 BI 階段。第二個是數據的挖掘,第三個是數據的預測分析。
想解決這三個階段的過程,以傳統的方法是建一個數倉,基於數倉來實施的時,只能面向比較固化的業務報表模式,產生一些數據的分析結果,獲得決策結果。若是想作數據挖掘時,基於固化業務模式計算的結果的很難知足數據挖掘需求,因此必須從初始階段基於原始數據去提取其特徵。
基於固化的的業務報表模型所獲取數據計算的結果,對數據挖掘分析的價值不高。存儲引擎必須以原始數據進行存儲,才能既知足 BI 階段的需求,又能夠解決將來數據挖掘與數據預測分析的需求。
第二,要知足實時多維的查詢,是爲了在數據基於原始數據存儲以後,去作到聚合結果可以知足用戶對海量增量數據快速查詢的需求。
第三,快速響應需求,在企業內部,其實數據部門的需求量是最大的,各個業務部門的需求都往數據中心提,因此數據部門必須去解決好如何快速地響應業務需求。
第四,數據的探索分析,以往把數據,按照固化的業務報表模式所獲取的結果,作二次分析的空間量比較小。因此必需要基於原始多維的數據進行數據的探索,挖掘數據新的價值,而不是按照已有的固化的業務模式,只是生產出一些固化的業務模型的數據。
平臺架構
數果如今基於以前作過的一些技術的預言跟驗證,自行研發了一個基於 Hadoop 加速引擎,稱爲 Tindex。以前我也在網絡上作過萬億級日誌與行爲數據存儲查詢技術剖析http://www.infoq.com/cn/artic... 的文章 ,也講解了 Tindex 是如何實現的。Tindex 的實現主要基於三點,第一點基於索引,第二點基於相似存儲的方式,第三點作了分佈式內存計算的框架在 Tindex 中,使之可以支持數據的實時的多維分析的能力。
基於加速引擎這塊,在其上層作了一個適配層,有 SQL引擎。SQL 引擎支持 SQL 語句和表達式,還有大數據生態技術,目前已是徹底支持。基於適配層,來作不一樣的行業應用。這是數果整個平臺技術架構的一個圖。
平臺特性
平臺的特性方面,支持海量增量數據實時接入。在數據接入這塊,如今提供可視化埋點,跟文件、MR 的一些數據的採集,就像咱們目前在作的單進程的接入式,基本上在 3 萬以上,從數據的產生,到數據顯示、出現查詢結果,在 5 秒之內便可實現。
第二個特性,基於明細數據的存儲與預聚合的存儲分別去搭建。爲何不只要基於原始數據存儲,還須要預聚合存儲?由於其有兩種不一樣的需求。第一個是面向固化的高頻查詢的數據,咱們能夠基於預聚合存儲的方式,去查詢其週期跨度比較長的需求,一年兩年均可以進行查詢。可是基於近半年或者一年的數據須要進行深度數據探索分析的,即可以基於原始明細數據作實時聚合分析。還有在基於原始明細數據進行分析的時候,他會更佳靈活。
第三,海量數據中怎麼去實現快速檢索,是基於搜索引擎的索引技術進行改造的。可是在篩選方式上,目前只能支持時間篩選、文本篩選和數值篩選,例如文本篩選中支持分詞與模糊匹配,數值篩選中,數值的分組和數值的範圍這些都可支持。
這個展現的是靈活多維的分析,在這個界面中,左邊的這一列中是基於原始明細數據產生的全部的維度,能夠根據權限去進行顯示。而在指標方面經過界面拖拽進行多維實時分析,選擇想要的數據分析結果,進行可視化的展現,能夠自由地數據探索。由於數據是基於原始明細數據的存儲,因此不須要提早預計算。能夠在界面上進行任意數據交叉分析,去了解數據的分佈態是很是便捷的。
經過指標的靈活定義,來實現實時響應的業務需求,這個指標定義這塊有幾個指標,一種叫單指標,即按照某一個維度進行一個聚合計算,經過界面能夠簡單、快速完成。另外一種叫複合指標,須要進行一些四則運算,能夠經過這個界面定義出來。
在指標這方面還有比較複雜的,須要經過多個維度進行定義的,能夠經過一些表達式,進行快速的定義,定義完成後就經過界面,直接看到結果,得到圖形顯示,進行數據分析。
支持實時監控與跟蹤告警,在多維分析界面中把分析結果定義出來後,能夠直接造成一個實時監控大屏,不須要從新開放,多站完成各種需求。
最後一個也是最重要的一個特性,是支持二次的開發。數果的平臺提供普通類查詢,有 Timeseries、TopN、select、groupby、firstN、scanQuery。也提供像用戶分組,用戶漏斗查詢,用戶留存查詢這類高級查詢,還支持多種條件的過濾,像日期範圍、數值範圍、地理座標範圍,還有字符串的精準匹配。還支持多種聚合的方式。如統計,分組,還有聚合再聚合,這類業務場景,也是在業務需求中常常出現的。
基於平臺咱們作了什麼?
基於這個平臺實現了指標任意定製,由於數據是基於原始明細記錄存儲的,因此指標的定製這方面,不須要提早預計算,直接經過界面,經過一些表達式即可以輕鬆實現。
維度的自由的篩選,能夠經過界面,自由地拖拽數據,就能夠完成交叉分析。
基於平臺提供用戶行爲分析模型,例如實時的用戶分羣,能夠經過界面快速的完成。再例如實時的路徑分析,實時的流程分析,實時的漏斗分析。提供了一個智能算法模型,至關於在這個模塊實現了,將機械學習跟深度學習的算法吸取進來,跟咱們的平臺打通,就能夠實現經過界面的簡單拖拽,來完成大部分算法的模型。用戶也有一些固化的模型,像用戶的擴羣,用戶 RFM 細分的模型,用戶流失預測的模型。基於這方面也提供了一個實時大屏的模塊,可以由用戶自由拖拽完成其實時監控的需求。