天天看點

基于阿裡雲HBase産品的遊戲大資料實踐

大資料架構

我們團隊大資料方案主要參考阿裡巴巴大資料方案并結合自身特點量身定做,像阿裡巴巴大資料體系架構一樣也分四層,隻是内容有所簡化和差異。其實多數大資料架構方案都略同,隻是在細節上有所差異。

基于阿裡雲HBase産品的遊戲大資料實踐
  1. 資料采集層:資料來源有兩種——用戶端埋點日志和服務端請求處理日志。最終這些日志都是以日志聚合的形式,經過消息隊列中間件緩存,最終彙總到資料湖。
  2. 資料計算層:市面上有多種離線和實時計算引擎,從技術生态成熟度來說Spark相對完善,我們選擇了Spark生态技術棧。資料加工鍊路與阿裡巴巴資料計算層類似分為操作資料層(Operational Data Store, ODS)、明細資料層(Data Warehouse Detail, DWD)、彙總資料層(Data Warehouse Summary, DWS)和應用資料層(Application Data Store, ADS),中繼資料管理和資料品質處理還有待完善。
  3. 資料服務層:資料服務層對底層資料存儲透明,面向資料應用層開放海量資料,并對外提供統一的資料服務平台,通過接口提供資料查詢服務和實時資料推送服務。
  4. 資料應用層:以應用的形式提供資料可視化,支援各種應用場景的資料分析,為營運、發行、策劃提供宏觀決策支撐。

基于HBase大資料解決方案

核心需求

  1. 支援高性能離線計算和實時計算;
  2. 管理資料作業排程;
  3. 支援彈性伸縮計算(節省成本);
  4. 支援冷熱存儲(節省成本);
  5. 滿足資料湖場景,支援高吞吐海量存儲結構化和非結構化資料;
  6. 支援即席查詢。

技術選型

2018年10月阿裡雲正在研發HBase産品,我們團隊當時正在準備做大資料方案,阿裡雲HBase技術團隊找我們探讨解決方案合作,經過讨論和分析我們認為HBase産品基本能滿足遊戲大資料業務。HBase産品具有以下優勢:托管基礎設施運維;将Hadoop核心功能精簡為Spark和HBase;使計算與存儲分離;高吞吐、高性能、高容量。

HBase産品演化

2018年10月,HBase産品剛上線時主要提供HBase、Phoenix和Spark等核心功能,我們團隊向阿裡雲HBase團隊回報了一些業務場景的需求,随後HBase産品不斷新增輔助功能:完善作業送出服務LivyServer,資料工作台支援可視化工作流編排,基于資料湖非結構化資料存儲分析的需求提供通路HDFS,提供Zeppelin互動式查詢便于開發調試。至2019年4月,HBase産品已經趨于完善,隻有彈性伸縮計算這個需求還沒有支援,而此時我們團隊的大資料方案也基本伴随HBase産品的成熟逐漸落地。

日志聚合

日志采集工具

日志聚合其實是在微服務體系下衍生的産物,也是大資料處理的第一個環節。我們選用Flume和Kafka作為日志采集工具建立日志資料流,雖然這是個經典方案但沒看到多少資料解釋為什麼要這樣做,這裡根據我們的業務場景補充說明,日志傳輸需要解決幾個問題:解決生産者和消費者速率不比對的問題,滿足高可用、高吞吐、低延時,在資料倉庫維護不可用時能緩存資料,支援線上水準擴充和維護,滿足多樣化資料過濾轉換需求和資料扇入扇出。在各種日志收集工具中Flume的靈活性較強,可以滿足各種場景的需求,而Kafka具有高可用、高吞吐、低延時的特性,這兩種産品組合基本滿足了大部分日志傳輸需求。

日志資料流

基于阿裡雲HBase産品的遊戲大資料實踐

我們将遊戲日志分為核心日志和非核心日志分開處理,核心日志用于計算核心業務名額,非核心日志用于自定義資料分析,分開處理是為了避免系統互相影響。核心日志是結構化資料,是以我們規範了核心日志生産者資料接口,核心日志投遞主要通過Phoenix寫入HBase,需要實時計算的日志則通過Spark Streaming處理後再寫入HBase。非核心日志提供靈活的自定義日志方式,是以資料處理量要比核心日志大的多,為減輕服務端壓力我們采用推拉結合的方式,先将日志以檔案形式傳到NAS,再由Flume從NAS中拉檔案再投遞到HDFS,如果需要實時計算則傳到Kafka經過Spark Streaming再投遞到HBase,其中還有部分日志用于追蹤系統異常則需要傳到Elasticsearch,通過Kibana查詢日志。

資料湖

資料湖是一種大型集中式存儲庫和處理引擎,允許以任意規模存儲所有結構化和非結構化資料,擁有強大的資訊處理能力和處理幾乎無限的并發任務或工作的能力,運作不同類型的分析——從控制台和可視化到大資料處理、實時分析和機器學習,以指導業務做出更好的決策。與傳統資料倉庫的重要差別是資料湖可以處理非結構化資料,為後期的機器學習和預測分析提供幫助,而且日志可以更靈活的形式存儲,提高資料創新使用效率。基于這種需求,我們需要使用HDFS存儲非結構化資料,HBase正好産品規劃也包含了這塊功能,存儲叢集HDFS和HBase結合計算叢集Spark基本滿足了資料湖的需求。

參考資料

  • 《大資料之路 阿裡巴巴大資料實踐》,阿裡巴巴資料技術及産品部著,電子工業出版社

繼續閱讀