你是否有過這樣的念頭:如果能立刻馬上看到我想要的資料,我就能更好地決策?
市場變化越來越快,企業對于資料及時性的需求,也越來越大,另一方面,當下資料容量呈幾何倍暴增,資料的價值在其産生之後,也将随着時間的流逝,逐漸降低。 是以,我們最好在事件發生之後,迅速對其進行有效處理,實時,快速地處理新産生的資料,幫助企業快速地進行異常管理和有效決策,而不是待資料存儲在一起之後,再進行批量處理。
一: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中,完成資料的實時同步與更新。
應用場景:
Spark與HBase廣泛應用于實時資料寫入、統計抽取、曆史資料歸檔、海量資料的實時判斷等方面。
·實時資料寫入
Spark作為分布式實時計算的佼佼者,擅長海量資料的實時計算。我們通過Spark Streaming将消費到的含有大量更新操作的資料進行清洗、分析與計算,最終以事先設計好的規則實時寫入到HBase中,HBase會自動維護重複的資料(rowKey設計原則)。
·海量資料實時判斷
在某些場景下,我們需要對曆史(一個月以前)的資料進行實時的判斷、對比與更新。由于資料量大,且實時性較高,redis或傳統的關系型資料庫并不能很好的滿足要求。對于這種需求,我們對Spark Streaming程式架構進行了梳理,并對HBase相關的API進行了二次開發,最終滿足了以上的需求。
某大型商業綜合體客戶案例
客戶背景:
客戶為國内某核心商業綜合體公司,主營城市核心商業購物中心,對于大型商業購物中心而言,如何實時采集目前進出客流人數、行走動線及熱力軌迹、實作資料拉通能力是大型商業購物中心進行業務數字化營運,使用者洞察與體驗優化的基礎。
奇點雲的解決方案幫助客戶實作了:
1: 實時資料從無到有 (原來并不具備實時資料采集能力)
2: t+0實時資料采集 (原來僅具有少量離線資料的T+1以上的事後追溯分析能力)
3: 實時客流監控 (今日客流人數,目前在場人數,今日到場次數,平均逗留時長,店鋪客流熱度,顧客性别與年齡占比,商場黑名單實時預警,客流熱力分析,客流動線分析……)
4: 經過實時處理,獲得有價值的資訊幫助商場快速的做出決策能力 (從滞後的經驗型追溯分析,到基于現場監控資料的實時營運決策)
二:sparkStreaming+kudu+impala整合應用,助力企業實時多元分析
在Kudu出現之前,Hadoop生态環境中的儲存主要依賴HDFS和HBase, 追求高吞吐批處理的用例中使用HDFS,追求低延時随機讀取用例下用HBase,而Kudu正好能兼顧這兩者:
•Kudu的設計使它與衆不同:
• 快速處理OLAP(Online Analytical Processing)任務;
• 內建MapReduce、Spark和其他Hadoop環境元件;
• 與Impala高度內建,使得這成為一種高效通路互動HDFS的方法;
• 在執行同時連續随機通路時表現優異;
• 高可用性,tablet server和master利用Raft Consensus算法保證節點的可用。
•常見的應用場景:
• 剛剛到達的資料就馬上要被終端使用者使用通路到;
• 同時支援在大量曆史資料中做通路查詢和某些特定實體中需要非常快響應的顆粒查詢;
• 基于曆史資料使用預測模型來做實時的決定和重新整理;
• 要求幾乎實時的流輸入處理。
将資料實時投遞到kafka中,交由Spark Streaming分批實時消費處理,經過資料清洗、處理與轉換,使用kudu工具類将資料逐批寫入到kudu中,完成資料的實時同步與更新。
某服飾客戶案例
客戶為國内某大型服飾品牌,以直營為主,資料情況較好,每天的業務訂單量及多張維表資料量不斷攀升, 原來的oracle資料庫已支援不起龐大業務資料的多條件實時查詢,在奇點雲介入服務後,企業迫不及待提出了多元度即席查詢的需求。
1: 實時資料從oracle切換到kudu ;
2: t+0實時資料采集 (從原來的T+1的離線計算到現在的實時計算);
3: 實時訂單多元分析 (從原來的多張表關聯及30個條件多元度查詢,查詢不出來到現在的1分鐘内出結果);
4: 經過實時分析 (多元度即席查詢),獲得有價值的資訊幫助上司層快速的做出決策力。
流計算秉承一個基本理念,當事件出現時就應該立即進行處理,而不是緩存起來進行批量處理。不同于現有的離線計算, 流計算全鍊路整體上更加強調資料的實時性 ,包括資料實時采集、資料實時計算、資料實時內建。