在騰訊遊戲資料中心擔任騰訊遊戲數據後臺架構開發的騰訊互娛高級工程師許振文近日來臺參加Big Data Innovation Summit 2016活動時,也揭露了騰訊打造Spark遊戲分析應用,並分享如何利用Spark,來加快遊戲行銷系統的預測和優化經營。

全中國擁有上億遊戲用戶的騰訊遊戲,同時經營超過百款以上的大、中型網路和休閒遊戲,平均單日最高同時在線遊戲人數更超過上千萬人,每天新增的遊戲資料高達60TB,騰訊遊戲如何因應遊戲爆量數據增長來加快分析速度,甚至做到遊戲資料串流分析,以提高遊戲玩家體驗和營運效益,背後用的一套關鍵技術正是火紅的大數據串流分析技術Spark。

在中國經營和代理多款超人氣網路遊戲,如《QQ遊戲》、《英雄聯盟》、《地下城與勇士》的騰訊遊戲,是騰訊集團旗下5大網路業務之一,也是全球第3、中國最大規模的一家網路遊戲開發和代理商。目前在騰訊遊戲資料中心擔任騰訊遊戲數據後臺架構開發的騰訊互娛高級工程師許振文近日來臺參加Big Data Innovation Summit 2016活動時,也揭露了騰訊打造Spark遊戲分析應用,並分享他們如何利用Spark來加快遊戲行銷系統的預測和優化經營。

許振文表示,他們依照遊戲玩家的完整生命周期,從開始進入遊戲到離開遊戲,來打造出以Spark叢集運算引擎為核心的數據遊戲服務平臺iData,可用來優化遊戲資料分析和行銷與營運。管理者可用iData快速分析遊戲用戶資料,找出潛在問題,不只能依據分析結果即時因應調整遊戲經營策略,也用於增加遊戲用戶的黏著度。

以Spark為核心加上HDFS搭建串流大數據分析平臺

騰訊遊戲資料分析階段,從早期用多臺伺服器搭建運算叢集來分析遊戲資料,到後來也用過大數據分析工具Hadoop,打造遊戲大數據分析引擎。不過許振文說,Hadoop適合處理大量批次資料,但對於即時性資料處理並不在行,為了能夠更快速地分析遊戲資料,後來騰訊也開始採用了Spark來做為遊戲資料串流分析的新工具。

許振文也提到目前騰訊遊戲旗下經營的大、中型網路或休閒遊戲超過200款,全部遊戲數據資料加總將近20PB,資料量非常龐大,同時還以每天新增60TB的遊戲資料量不斷增長中,目前他們主要是鎖定多款較熱門或經過挑選的線上遊戲的核心數據來加以分析,不過這資料量也超過200TB。

Spark的遊戲分析應用上,許振文表示,騰訊目前已將Spark叢集分別運用在離線分析和即時分析處理上。在離線資料分析上,他們至今已使用了3,500臺伺服器搭建Spark運算叢集,並用Spark來承擔ETL(Extract、Transform、 Load)的功能,做為遊戲資料分析前的數據清洗、建立數據報表和統計處理工作。這些經過預先處理完畢後的資料,則會再批量寫入到開源分散式資料庫ElasticsSearch或Tredis中以供後續串流分析使用。許振文表示,Tredis是騰訊遊戲研發部門以開源記憶體式資料庫Redis和RocksDB為基礎開發的一個套件,資料庫讀寫速度更快。

另外將遊戲數據寫入資料庫時,他們還會利用Spark來控制不同叢集寫入速度,避免占滿整個頻寬而影響了讀取效能。

目前9成騰訊遊戲資料分析都採用Spark

許振文表示,透過Spark內建的記憶體內叢集運算技術,可以將蒐集到的資料直接就在記憶體上運算,也使得資料寫入速度變得更快,過去僅採用Redis資料庫或是搭建小叢集的作法,最多只能達到每秒20萬筆的寫入速度,改用Spark後寫入速度則是倍增,寫入速度高達每秒50萬筆的資料量。

許振文表示,現在公司內部改採用Spark做為串流大數據分析的比例已超過9成,「這是以前用Hadoop根本做不到,而是得靠Spark才能達成。」他說。

在即時分析遊戲資料上,騰訊遊戲則搭建了另一個Spark運算叢集,由Spark、HDFS、SparkScheduler,以及Zookeeper架構而成。位於底層的儲存層採用分散式檔案系統HDFS,用來記錄和儲存分析結果,包括分析結果數據、帳號轉換數據、算法模型數據等。中間層則是Spark的核心,負責調度CPU運算資源和任務分配。

許振文說明,目前在Spark叢集運算中他們用最多的Spark套件是SparkSQL、串流分析套件Spark Streaming與分散式機器學習套件MLlib,以提供不同遊戲資料的串流分析應用時使用。另外還使用ZooKeeper做為Spark分散式運作的集中式管理工具。他們還自行開發了一個任務調度工具SparkScheduler,可以根據服務業務、用戶或任務類型來動態調度。

在遊戲資料分析時,系統會先蒐集遊戲用戶的行為數據、屬性數據、輪廓數據,這些數據有來自多個不同來源,包括了從分散式訊息提交系統Kafka和騰訊專為自家大數據處理開發的開源分散式資料倉儲系統TDW(Tencent Distributed Warehouse)取得的日誌和相關數據資料,之後再經過數據清洗、統計、合併後才放進Spark叢集引擎中來分析。

許振文表示,目前騰訊遊戲常用於運算模型的即時分析引擎有幾種,例如,輪廓分析、交叉分析和ES串流分析等。

許振文也以其中一個用戶多維輪廓分析當例子。他表示,多維輪廓是所有遊戲即時分析系統中非常重要的一環,能夠做到很快速地識別目標用戶或是有異常的遊戲用戶來做後續處理。例如,能從提取已流失的遊戲用戶的歷史資料對他們做分析,以快速了解哪個地區的遊戲用戶流失最多或受到影響最大的年齡層分布。

許振文表示,透過Spark搭建的運算叢集能更快速幫助他們將上百萬筆的遊戲用戶資料,來放入分析系統中做即時分析處理,平均約50毫秒就能算出結果,並在Web瀏覽頁面顯示輪廓分析結果,相當快速,還可進一步做到多個資料報表之間的交叉分析比對,比如用戶性別、居住地、付費金額和年齡的統計分布圖,來找出背後的關聯性的意義,以輔助公司高層能在最短時間內就能調整營運策略來因應。

騰訊遊戲還針對了SparkSQL套件開發出圖形操作介面,並在前不久將SparkSQL升級到2.0.1版本,開始運用在前置分析前跨不同帳號的多款遊戲之間的帳號轉換或數據封包轉換的處理。

許振文指出,SparkSQL 2.0以前,SparkSQL還只適合處理簡單的統計或資料查詢工作,SparkSQL 2.0新版釋出後,效能做了很大的提升,也開始能用於提供更複雜的資料查詢和相關統計作業,以加快運算分析的速度。

不只能用於遊戲資料的即時分析,騰訊遊戲也將Spark運用在遊戲行銷和營運優化,來增加新遊戲用戶、提高活躍用戶的黏著度,以及提升遊戲玩家的回流率。許振文表示,他們採用了Spark Streaming搭建一個營銷干預平臺,能即時串流分析遊戲資料,能做到用戶一登入立即判斷有無符合資格來推送獎勵,還搭配Kafka來即時處理龐大的資料傳遞工作,並透過玩家收取獎勵的反應情形,再進一步來分析,以找出提高用戶體驗的更好行銷作法。

許振文解釋說,線上即時行銷的作法上,營運團隊要先選好要插入行銷活動的遊戲用戶群後,當目標對象的遊戲玩家登入遊戲後,就會即時將他們遊戲中的使用記錄下的各種數據資料,經由後端遊戲伺服器傳到Kafka叢集後,再透過Spark Streaming來分析處理,能做到在用戶登入遊戲後的0.2秒內就能得知該目標用戶已登入遊戲中,之後再依據事先設好的過濾規則來觸發相關事件。例如登入的玩家屬於新用戶或是長時間沒登入的舊用戶時,便會根據不同用戶分類給予相對應的獎勵、禮包或道具發送。

騰訊遊戲將Spark運算叢集用於遊戲資料的即時分析,由Spark、HDFS 、SparkScheduler、Zookeeper搭建而成。位於底層的儲存層採用分散式檔案系統HDFS,中間層則是Spark的核心,負責調度CPU運算資源和任務分配,並以SparkSQL、Spark Streaming和分散式機器學習套件MLlib使用最多,還使用ZooKeeper做為Spark分散式協作的集中管理工具,還自行開發了一個Spark Scheduler工具,能依據線上服務業務、用戶或任務類型來動態調度。圖片來源/許振文


熱門新聞

Advertisement