面向大數據環境的概要信息動態構建與查詢方法及裝置的制造方法
【技術領域】
[0001] 本發明屬于信息技術領域,具體涉及一種面向大數據環境的概要信息動態構建與 查詢方法及裝置。
【背景技術】
[0002] 流式大數據是指以數據流的方式高速到達并實時寫入到存儲管理系統中的數據 源,也稱為FastData。流式大數據不但具有高吞吐率、體量巨大的特點,而且數據規模與數 據值范圍往往不可預知。例如海量微博數據,實時的交易日志,門戶網站的click stream 等。有效處理并分析上述數據,可以充分挖掘隱藏在海量數據源中的有價值信息,統計數據 的規律,為決策者提供重要的決策支持依據。
[0003] 但是針對流式大數據,傳統的統計方法與系統已經不再適用。與本發明相類似的
技術領域是大數據存儲管理技術與在線流數據處理技術。
[0004] 傳統的數據庫以及基于Hadoop的相關大數據存儲管理系統與方法,是基于批處 理模式實現的,批處理模式是先存儲后處理,無法應對流式大數據高速達到的應用特征。盡 管Storm,Spark Streaming等系統基于內存計算可以提高對于高速到達數據的響應時間, 但是由于二者是精確計算方法,即,需要維護與原始數據等量的內存空間來支持數據的統 計查詢,因此存儲的數據量有限,很難適應流式大數據海量數據的規模特征。
[0005] 在線流數據處理技術可以有效處理按時間次序不斷到達的有序數據序列。流 數據的研宄核心就是設計高效的單遍數據集的方法,在一個遠小于數據規模的內存 空間里不斷更新壓縮后的數據結構,這一結構成為數據的概要信息(Sketching)。目 前針對流數據典型的概要信息構建方法是基于Hash技術,構建以位為單位的概要數 據結構。常用于估計數據集的二階矩大小、估計數據集自連接的大小、獲得數據集中 頻繁項列表等。典型的概要數據技術包括:Count Sketch(M. Charikar, K. Chen, and M.Farach-Colton. Finding frequent items in data streams. In International Colloquium on Automata, Languages and Programming(ICALP),2002. )、Count-Min Sketch (G.Cormodej S.Muthukrishnan. An improved data stream summary : the count-min sketch and its applications. Journal of Algorithms. 2005,vol.55,no .I. pp.58-75. ) λ AMS Sketch(N. Alonj Y. Matiasj andM. Szegedy. Thespace complexity ofapproximating thefrequency moments. In Proceedings of the Twenty-Eighth Annual ACM Symposium on the Theory of Computing, pages 20 - 29, 1996. Journal version in Journal of Computer and System Sciences,58:137 - 147, 1999.)等;用來 查找基數的 Sketch 結構有 Linear Space Solution (G.M.Lee,H. Liu,Y. Yoon,andY. Zhang. Improving sketch reconstruction accuracy using linear least squares method. In Internet Measurement Conference (IMC),2005. )、Flajolet-Martin Sketches (K. Y. Whang,B. T. Vander-Zandenj and Η. M. Taylor. A linear-time probabilistic counting algorithm for database applications. ACM Transactions on Database Systems,15 (2) :208,1990.)、Distinct Sampling(P. Gibbons. Distinct sampling for highly-accurate answers to distinct values queries and event reports. In International Conference on Very Large Data Bases, 2001.P.Gibbons and S.Tirthapura. Estimating simple functions on the union of data streams. In ACM Symposium on Parallel Algorithms and Architectures(SPM),2001.)等,此外還有基于 sketch方法建立采樣、小波、柱狀圖模型等方法。概要數據結構一般通過常駐內存方式,可 以快速的支持針對任意原始數據的查詢與處理,通常的概要數據可以提供限定誤差的統計 與分析計算,廣泛應用于流數據的統計與分析中。但是由于流式大數據數據規模不可預知, 數據的值域空間無法預先獲得,導致傳統的概要數據方法無法有效應對數據規模不斷增長 的流式大數據規模。
[0006] 本發明以Count-Min Sketching為基礎,進一步提出一種適應流式大數據應用特 點動態增長的概要信息構建和對應的統計查詢過程。Count-Min Sketch是流數據統計中 通常采用的技術,基于隨機映射,使用Hash函數并在內存中維護一個二維計數數組來追蹤 數據的統計值,以多個計數器中的最小值作為查詢返回值,從而解決了 Sketch中查詢準確 性的問題,并以卜〇的概率保證空間代價為()(-xl〇g(-)),Count-Min Sketch具有亞線性 ε σ 空間數據結構模型,具有構建方法簡單、時空復雜度低等優點,因而得到了廣泛的關注和使 用。近年已經涌現大量的針對Count-Min查詢精度優化技術與成果。Gene Moo Lee等提 出 Isquare 方法(G. Μ. Lee, Η. Liu, Υ. Yoon, andY. Zhang. Improving sketch reconstruction accuracy using linear least squares method.In Internet Measurement Conference(IMC), 2005.),利用最小二乘法來尋找最優解,提高Count-Min Sketching的估 算精度。Deng 和 Rafiei 在 2007 年提出 CMM Sketch (Count-Mean-Min Sketch) (Fan Deng and Davood Rafiei. 2007. Nnew estimation algorithms for streaming data:count-min can do more. ),CMM利用均值來代替原始Count-Min Sketch統計過程中的最小值,可以在 無偏統計中去掉噪聲,提高在大數據規模下的統計精度。目前Count-Min Sketch技術已經 廣泛應用于DDoS攻擊檢測、海量自然語言處理,多維流數據統計查詢等領域。
[0007] 綜上所述,目前基于Hadoop的數據管理和分析技術,采用離線批處理模式,無法 適應流式大數據高速達到、實時統計的計算需求;Storm Spark Streaming等基于內存計算 的數據分析系統,由于采用精確的計算方法,存儲數據規模有限,無法海量數據的查詢與處 理;以Count-Min Sketch為代表的,基于概要的數據近似查詢方法,都面臨著"過飽和"的 問題。以Count-Min Sketch為例,需要預分配dXw(d為哈希函數的個數,w為二維數組 的寬度)空間單位的計數器,才能保證較高查詢的準確率。如分配過大的空間,在流式大 數據初始應用階段浪費大量的內存空間;如果分配的空間過小,則隨著大數據的不斷寫入, Count-Min Sketch中hash沖突率增高,則計算的準確度會迅速降低。目前流數據中采用的 方法是僅維持一段時間內的數據,當超過時間范圍,則丟棄掉歷史數據,這一方法稱為滑動 窗口技術。這一方法僅能維持針對窗口內的數據的查詢,無法針對超過滑動窗口的數據進 行統計。
【發明內容】
[0008] 針對流式大數據高速達到、規模與數值空間未知以及高實時統計的應用需求, 本發明以Count-Min Sketch為基礎,提出了一種動態擴展概要信息構建方法一Dynamic Count-Min Sketch(DCM)方法,以及對應的統計查詢方法。隨著數據規模不斷膨脹,或數值 空間分布不均勻時,導致統計誤差不滿足計算要求時,本發明能夠根據數據量和數值基數, 自動建立新的Sketch結構,以較高精度統計數據,有效支持流式大數據的高精度的實時統 計和分析。
[0009] 為實現上述目的,本發明采用如下技術方案:
[0010] 一種面向大數據環境的概要信息動態構建方法,其步驟包括:
[0011] 1)以Count-Min Sketch方法為基礎,采用數據流的第一范數描述數據規模,采用 數據的基數值描述數據的分布情況;
[0012] 2)為流式大數據分配一較小空間的Count-min Sketch結構(比如Count-min Sketch的寬度w可取0. 5Xe/ ε,即取原來Count-min Sketch的五分之一),隨著數據不 斷加載,當Count-min Sketch結構記錄的數據項個數達到閾值且數值空間基數達到閾值以 后,建立新的Count-min Sketch結構,用以接收后續到來的新數據。
[0013] 進一步地,為每個Count-Min Sketch結構構建Bloomfilter,用于統計每個 Count-Min Sketch內部數據的存在性,每個Count-Min Sketch接收的數據同時寫入到 Bloomfilter中,并進行d次hash運算,生成一個d維的hash數組。
[0014] 進一步地,進行數據寫入的具體流程為:設到達的數據項為〈key,Value〉,當有新 數據到達時,首先把key寫入全局基數估算器中,并實時計算當前的數據的基數D i,然后統 計當前Count-Min Sketch所統計數據的第一范數的值I I a| |1;
[0015] 如果 I |a| Ι,Ν,則把 key 加入到 bloomfilter 中,并根據 Count-Min Sketch 更新 原理,把CM[j] [hash」(key)]位置的計數器加上value,其中j為二維計數數組的第j行,N 為預先設定的所要存儲數據的第一范數;
[0016] 如果I I a| I P = N,則判斷Di-Dp1是否大于rXw,如果Di-DVrXw則繼續寫入,否 則創建新的bloomfilter和Count-Min Sketch并接收新寫入的數據;其中r是預先設定的 比率值,根據hash函數的碰撞概率計算獲得;w為二維計數數組的寬度;Dg表示到第i-1 個Count-Min Sketch為止的全部數據的基數估算值。
[0017] 進一步地,采用Hyperloglog算法獲得數據的基數值。
[0018] -種面向大數據環境的數據查詢方法,其步