數據中臺技術匯 | DataSimba系列之流式計算

你是否有過這樣的念頭:如果能立刻馬上看到我想要的數據,我就能更好地決策?

市場變化越來越快,企業對於數據及時性的需求,也越來越大,另一方面,當下數據容量呈幾何倍暴增,數據的價值在其產生之後,也將隨着時間的流逝,逐漸降低。因此,我們最好在事件發生之後,迅速對其進行有效處理,實時,快速地處理新產生的數據,幫助企業快速地進行異常管理和有效決策,而不是待數據存儲在一起之後,再進行批量處理。

一:sparkStreaming+hbase整合應用,助力企業實時運營監控

對於不作更新的數據,可以通過datax將數據從業務系統數據庫同步到hive中,進行離線計算;但對於有大量更新的數據,就不能採用以上的做法了,因爲hive不能很好的支持實時更新操作。我們的做法是使用sparkStreaming+HBase做數據存儲與去重,然後以封裝的HBase工具類爲支撐,進行數據的實時監控。

實現原理:
Apache Spark是專爲大規模數據處理而設計的分佈式內存計算引擎,特點是靈活快速。HBase是一個分佈式的、面向列的開源數據庫,適用於海量數據的存儲與實時寫入。HBase工具類是奇點雲大數據團隊針對Spark與HBase自研的高性能HBase讀寫工具,它是在HBase官方API基礎上依據奇點雲特有的需求場景進行了二次開發,內部提供了諸多與Spark緊密結合的API,它的誕生極大地提高了Spark對Hbase的讀寫速度。經測試,比Spark原生的HBase API性能提高3倍以上,平均開發效率提升10倍以上。正因爲HBase工具類的誕生,才促進了Spark與HBase在奇點雲的大規模應用。

整體架構:
通過mysql的Canal(canal是阿里巴巴旗下的一款開源項目,純Java開發。基於數據庫增量日誌解析,提供增量數據訂閱&消費)將數據實時投遞到kafka中,交由Spark Streaming分批實時消費處理,經過數據清洗、處理與轉換,使用HBase工具類將數據逐批寫入到HBase中,完成數據的實時同步與更新。
數據中臺技術匯  |  DataSimba系列之流式計算

應用場景:
Spark與HBase廣泛應用於實時數據寫入、統計抽取、歷史數據歸檔、海量數據的實時判斷等方面。

·實時數據寫入
Spark作爲分佈式實時計算的佼佼者,擅長海量數據的實時計算。我們通過Spark Streaming將消費到的含有大量更新操作的數據進行清洗、分析與計算,最終以事先設計好的規則實時寫入到HBase中,HBase會自動維護重複的數據(rowKey設計原則)。

·海量數據實時判斷
在某些場景下,我們需要對歷史(一個月以前)的數據進行實時的判斷、對比與更新。由於數據量大,且實時性較高,redis或傳統的關係型數據庫並不能很好的滿足要求。對於這種需求,我們對Spark Streaming程序架構進行了梳理,並對HBase相關的API進行了二次開發,最終滿足了以上的需求。

某大型商業綜合體客戶案例
客戶背景:
客戶爲國內某核心商業綜合體公司,主營城市核心商業購物中心,對於大型商業購物中心而言,如何實時採集當前進出客流人數、行走動線及熱力軌跡、實現數據拉通能力是大型商業購物中心進行業務數字化運營,用戶洞察與體驗優化的基礎。

奇點雲的解決方案幫助客戶實現了:
1: 實時數據從無到有(原來並不具備實時數據採集能力)
2: t+0實時數據採集(原來僅具有少量離線數據的T+1以上的事後追溯分析能力)
3: 實時客流監控 (今日客流人數,當前在場人數,今日到場次數,平均逗留時長,店鋪客流熱度,顧客性別與年齡佔比,商場黑名單實時預警,客流熱力分析,客流動線分析……)
4: 經過實時處理,獲得有價值的信息幫助商場快速的做出決策能力(從滯後的經驗型追溯分析,到基於現場監控數據的實時運營決策)

二:sparkStreaming+kudu+impala整合應用,助力企業實時多維分析

數據中臺技術匯  |  DataSimba系列之流式計算
數據中臺技術匯  |  DataSimba系列之流式計算

在Kudu出現之前,Hadoop生態環境中的儲存主要依賴HDFS和HBase,追求高吞吐批處理的用例中使用HDFS,追求低延時隨機讀取用例下用HBase,而Kudu正好能兼顧這兩者:
數據中臺技術匯  |  DataSimba系列之流式計算
•Kudu的設計使它與衆不同:
•快速處理OLAP(Online Analytical Processing)任務;
•集成MapReduce、Spark和其他Hadoop環境組件;
•與Impala高度集成,使得這成爲一種高效訪問交互HDFS的方法;
•在執行同時連續隨機訪問時表現優異;
•高可用性,tablet server和master利用Raft Consensus算法保證節點的可用。

•常見的應用場景:
•剛剛到達的數據就馬上要被終端用戶使用訪問到;
•同時支持在大量歷史數據中做訪問查詢和某些特定實體中需要非常快響應的顆粒查詢;
•基於歷史數據使用預測模型來做實時的決定和刷新;
•要求幾乎實時的流輸入處理。

整體架構:
將數據實時投遞到kafka中,交由Spark Streaming分批實時消費處理,經過數據清洗、處理與轉換,使用kudu工具類將數據逐批寫入到kudu中,完成數據的實時同步與更新。

數據中臺技術匯  |  DataSimba系列之流式計算

某服飾客戶案例
客戶背景:
客戶爲國內某大型服飾品牌,以直營爲主,數據情況較好,每天的業務訂單量及多張維表數據量不斷攀升, 原來的oracle數據庫已支持不起龐大業務數據的多條件實時查詢,在奇點雲介入服務後,企業迫不及待提出了多維度即席查詢的需求。
奇點雲的解決方案幫助客戶實現了:
1: 實時數據從oracle切換到kudu;
2: t+0實時數據採集(從原來的T+1的離線計算到現在的實時計算);
3: 實時訂單多維分析 (從原來的多張表關聯及30個條件多維度查詢,查詢不出來到現在的1分鐘內出結果);
4: 經過實時分析 (多維度即席查詢),獲得有價值的信息幫助領導層快速的做出決策力。

流計算秉承一個基本理念,當事件出現時就應該立即進行處理,而不是緩存起來進行批量處理。不同於現有的離線計算,流計算全鏈路整體上更加強調數據的實時性,包括數據實時採集、數據實時計算、數據實時集成。

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