王建輝 李 濤
(南京郵電大學(xué)通信與信息工程學(xué)院 江蘇 南京 210003)
?
基于Hive的支付SDK日志分析系統(tǒng)的設(shè)計(jì)研究
王建輝 李 濤
(南京郵電大學(xué)通信與信息工程學(xué)院 江蘇 南京 210003)
UniPay支付SDK是聯(lián)通沃商店為了給開(kāi)發(fā)者提供手機(jī)話費(fèi)和第三方支付能力而推出的一站式應(yīng)用內(nèi)統(tǒng)一支付插件,支付SDK日志記錄海量的用戶終端信息、用戶使用手機(jī)應(yīng)用的行為記錄等數(shù)據(jù)。針對(duì)傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)難于滿足海量日志數(shù)據(jù)存儲(chǔ)及處理等問(wèn)題,設(shè)計(jì)一種基于Hive的支付SDK日志分析系統(tǒng)。測(cè)試結(jié)果表明,使用Hadoop框架及Hive數(shù)據(jù)倉(cāng)庫(kù)對(duì)海量支付SDK日志進(jìn)行存儲(chǔ)和處理,能很好地滿足業(yè)務(wù)需求,對(duì)手機(jī)應(yīng)用的設(shè)備激活量、日活躍用戶數(shù)(DAU)、分時(shí)日志量以及用戶支付轉(zhuǎn)化率等指標(biāo)的分析結(jié)果,對(duì)應(yīng)用開(kāi)發(fā)者升級(jí)優(yōu)化其應(yīng)用及運(yùn)營(yíng)人員的營(yíng)銷策略調(diào)整具有重要的參考價(jià)值。
Hive SDK日志 應(yīng)用分析 用戶行為
據(jù)工信部最新發(fā)布的數(shù)據(jù)顯示,2016年1月,我國(guó)移動(dòng)互聯(lián)網(wǎng)用戶凈增1 942.1萬(wàn)戶,同比增長(zhǎng)11.8%,總數(shù)達(dá)9.8億戶[1]。截止2016年2月,我國(guó)第三方應(yīng)用商店累計(jì)應(yīng)用分發(fā)量已達(dá)到8 350億次,以分發(fā)規(guī)模計(jì),我國(guó)用戶渠道實(shí)力已領(lǐng)先于覆蓋全球移動(dòng)用戶的谷歌官方商店,僅我國(guó) Android應(yīng)用實(shí)際市場(chǎng)規(guī)模已近谷歌全球市場(chǎng)的近五倍[2]。隨著移動(dòng)互聯(lián)網(wǎng)的迅速發(fā)展和移動(dòng)智能終端的廣泛應(yīng)用,移動(dòng)端應(yīng)用有取代PC成為最大的互聯(lián)網(wǎng)用戶入口的趨勢(shì)。互聯(lián)網(wǎng)企業(yè)、電商平臺(tái)及傳統(tǒng)企業(yè)都積極將自己的服務(wù)部署到移動(dòng)端,在為用戶提供便捷服務(wù)的同時(shí)產(chǎn)生了海量的日志數(shù)據(jù),這些日志客觀反映用戶消費(fèi)行為及影響用戶消費(fèi)行為的內(nèi)外因素,分析這些日志,挖掘數(shù)據(jù)背后的規(guī)律,具有重要的商業(yè)價(jià)值[3]。深入挖掘這些數(shù)據(jù)隱含的信息,可獲取海量有價(jià)值的用戶信息。分析用戶的行為規(guī)律,可以為產(chǎn)品營(yíng)銷人員提供客觀可靠的數(shù)據(jù)支持,實(shí)現(xiàn)精細(xì)化運(yùn)營(yíng),為用戶提供更加個(gè)性化的服務(wù),提升用戶體驗(yàn),最終為企業(yè)帶來(lái)可觀的經(jīng)濟(jì)效益。隨著日志數(shù)據(jù)量的爆炸式增長(zhǎng),處理海量日志數(shù)據(jù)的任務(wù)也日益增多,如何將海量數(shù)據(jù)集中、存儲(chǔ)、分析并產(chǎn)生商業(yè)價(jià)值,成為運(yùn)營(yíng)和研發(fā)人員亟待解決的難題。
面對(duì)海量數(shù)據(jù),傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)使用成本高、效率低、擴(kuò)展性差,難以滿足業(yè)務(wù)發(fā)展需求,嚴(yán)重制約著移動(dòng)應(yīng)用運(yùn)營(yíng)收入的增長(zhǎng)?;诜植际剿枷氲腍adoop框架很好地解決了這個(gè)難題,并迅速成為大數(shù)據(jù)處理領(lǐng)域事實(shí)上的標(biāo)準(zhǔn)。采用Hive/Hadoop方案應(yīng)對(duì)大數(shù)據(jù)處理問(wèn)題,具有成本低、擴(kuò)展性好、可靠性高、效率高等優(yōu)勢(shì),采用HDFS[4]和MapReduce[5-6]編程模型解決了海量數(shù)據(jù)存儲(chǔ)和處理的難題,可實(shí)現(xiàn)對(duì)海量數(shù)據(jù)進(jìn)行挖掘的目標(biāo)。
1.1 Apache Hive數(shù)據(jù)倉(cāng)庫(kù)
Apache Hive是一種基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù)構(gòu)架,提供一種存儲(chǔ)、查詢和分析HDFS中海量數(shù)據(jù)的機(jī)制[7]。Hive提供類SQL語(yǔ)言HQL,簡(jiǎn)化了用戶處理海量數(shù)據(jù)的操作。Hive架構(gòu)分為以下幾部分:
用戶接口:通常指命令行界面CLI,啟動(dòng)時(shí)會(huì)同時(shí)啟動(dòng)一個(gè)Hive副本;
元數(shù)據(jù):通常存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中,包括表名、表的列和分區(qū)及其屬性、表數(shù)據(jù)所在目錄等信息;
解釋器、編譯器、優(yōu)化器、執(zhí)行器:該部分是Hive數(shù)據(jù)處理功能的核心,解釋編譯優(yōu)化HQL語(yǔ)句,將其轉(zhuǎn)換為MapReduce任務(wù),完成對(duì)存儲(chǔ)在HDFS中數(shù)據(jù)的處理。
1.2 Hadoop集群
Hadoop集群是Hive數(shù)據(jù)倉(cāng)庫(kù)功能實(shí)現(xiàn)的基礎(chǔ),Hadoop框架核心是HDFS和MapReduce,功能分別是為海量的數(shù)據(jù)提供存儲(chǔ)和計(jì)算框架。HDFS保證應(yīng)用程序以高吞吐量訪問(wèn)海量數(shù)據(jù)時(shí)的可用性;MapReduce完成海量數(shù)據(jù)的分布式計(jì)算,開(kāi)發(fā)者無(wú)需掌握分布式編程的相關(guān)知識(shí),就能完成海量數(shù)據(jù)分析。Hive數(shù)據(jù)倉(cāng)庫(kù)是支付SDK日志分析系統(tǒng)的功能核心,海量日志的分析處理主要由該部分完成。
基于Hive的支付SDK日志分析系統(tǒng)如圖1所示,系統(tǒng)由日志收集、日志處理、結(jié)果匯總、數(shù)據(jù)展示四個(gè)模塊組成[8]。
日志收集模塊:應(yīng)用客戶端和服務(wù)端之間的交互數(shù)據(jù)以JSON格式進(jìn)行傳輸,通過(guò)HTTP協(xié)議將交互信息以日志形式記錄并上傳至Tomcat服務(wù)器,通過(guò)腳本預(yù)處理(數(shù)據(jù)去重、過(guò)濾異常數(shù)據(jù)、小文件合并等),再由FTP上傳存儲(chǔ)于HDFS。
圖1 基于Hive的支付SDK日志分析系統(tǒng)架構(gòu)圖
日志處理模塊:后臺(tái)服務(wù)器使用crontab命令定時(shí)執(zhí)行腳本,將日志解析并導(dǎo)入到Hive數(shù)據(jù)倉(cāng)庫(kù)中表相應(yīng)分區(qū),按業(yè)務(wù)需求對(duì)數(shù)據(jù)去重、匯總、統(tǒng)計(jì),結(jié)果通過(guò)Sqoop導(dǎo)出到Mysql和Oracle等關(guān)系型數(shù)據(jù)庫(kù)。該模塊是分析系統(tǒng)的核心,數(shù)據(jù)處理腳本的執(zhí)行時(shí)間決定系統(tǒng)效率及穩(wěn)定性,調(diào)優(yōu)也在該模塊完成。
結(jié)果匯總模塊:該模塊通過(guò)傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)對(duì)日志數(shù)據(jù)做進(jìn)一步處理,如編寫(xiě)調(diào)用存儲(chǔ)過(guò)程等,也可通過(guò)JDBC直接訪問(wèn)查詢。
數(shù)據(jù)展示模塊:系統(tǒng)中數(shù)據(jù)展示分為三種形式:對(duì)SDK日志的整體監(jiān)控,定時(shí)給相關(guān)人員發(fā)送監(jiān)控郵件,如對(duì)每日設(shè)備激活量、支付SDK日志總量、分時(shí)日志量及DAU/WAD/MAU(日/周/月活躍用戶數(shù))等指標(biāo)的監(jiān)控報(bào)表;對(duì)用戶在應(yīng)用中的支付轉(zhuǎn)化率、應(yīng)用在不同日期、省份、版本等維度的支付轉(zhuǎn)化率等指標(biāo)則給運(yùn)營(yíng)人員提供Web頁(yè)面查詢功能,供其根據(jù)具體業(yè)務(wù)需求查詢;對(duì)于異常省份、應(yīng)用、用戶的查詢分析則通過(guò)實(shí)時(shí)查詢的方式,以便及時(shí)發(fā)現(xiàn)問(wèn)題、調(diào)整運(yùn)營(yíng)策略。
系統(tǒng)測(cè)試數(shù)據(jù)來(lái)源于聯(lián)通沃商店支付SDK日志文件。測(cè)試環(huán)境:測(cè)試集群含4臺(tái)服務(wù)器,一個(gè)主節(jié)點(diǎn):處理器32核,內(nèi)存192 GB,磁盤容量300 GB;3個(gè)數(shù)據(jù)節(jié)點(diǎn):處理器32核,內(nèi)存128GB,磁盤容量1 TB,集群磁盤總?cè)萘浚?.3 TB;軟件版本:Hadoop-2.6.0;hive-1.2.1;sqoop-1.4.3。
沃商店每天支付SDK日志大小約200 GB,系統(tǒng)可提供T+1的日志分析結(jié)果,每天00∶30開(kāi)始執(zhí)行定時(shí)任務(wù),09∶00之前即可執(zhí)行完畢,完成前一天支付SDK日志的分析及入庫(kù),及時(shí)為運(yùn)營(yíng)、產(chǎn)品及研發(fā)人員提供數(shù)據(jù)支持。
沃商店客戶端和服務(wù)端的業(yè)務(wù)實(shí)現(xiàn)采用標(biāo)準(zhǔn)HTTP/1.1協(xié)議作為承載協(xié)議,采用請(qǐng)求<->應(yīng)答的同步處理方式處理信息,不同類型消息通過(guò)URL區(qū)分。消息記錄即支付SDK日志,每次請(qǐng)求生成一條記錄,支付SDK日志數(shù)據(jù)大致分為7種類型:設(shè)備信息、注冊(cè)、登錄、支付、退出、SDK版本升級(jí)、崩潰日志等。
支付SDK日志由JSON格式的數(shù)據(jù)串、時(shí)間戳、ip地址等組成,以設(shè)備信息為例,日志格式如下:
{″model″:″HUAWEI_A199″,″IMEI″:″A0000043CD6EDC″,″logtype″:″device″,″lcd″:″1280X720″,″mac″:″24:69:a5:a5:97:d2″,″IMSI″:″460030979228177″,″channel″:″00018756″,″osversion″:″4.1.2″}|20160910115959|192.168.31.166
日志含手機(jī)設(shè)備序列號(hào)IMEI、SIM卡唯一編號(hào)IMSI、渠道號(hào)、時(shí)間戳等信息。IMSI唯一確定一個(gè)用戶,通過(guò)IMSI、時(shí)間戳可統(tǒng)計(jì)每日活躍用戶數(shù)(DAU)。DAU常用于評(píng)價(jià)應(yīng)用的運(yùn)營(yíng)情況,結(jié)合月活躍用戶數(shù)量(MAU),可測(cè)量應(yīng)用的衰退周期和用戶粘性。分時(shí)日志統(tǒng)計(jì)用于監(jiān)控每天各時(shí)間段的日志量,分析應(yīng)用在各時(shí)間段的使用狀況。通過(guò)IMSI、終端型號(hào)統(tǒng)計(jì)各運(yùn)營(yíng)商用戶、各終端品牌占比和用戶留存率,可針對(duì)不同運(yùn)營(yíng)商、終端品牌的用戶制定更具針對(duì)性的營(yíng)銷策略;用戶留存率是用來(lái)評(píng)定用戶粘度的關(guān)鍵指標(biāo),通過(guò)日留存率、周留存率、月留存率等指標(biāo)監(jiān)控應(yīng)用的用戶流失情況,可在用戶流失之前及時(shí)采取措施挽留用戶;日志分析結(jié)果以監(jiān)控郵件的方式每天定時(shí)發(fā)送,及時(shí)為運(yùn)營(yíng)和產(chǎn)品等部門提供數(shù)據(jù)支持。
支付日志分析是監(jiān)控沃商店運(yùn)營(yíng)狀況及評(píng)估應(yīng)用優(yōu)化效果的主要手段,也是增加運(yùn)營(yíng)收入的關(guān)鍵。支付日志記錄了用戶在每個(gè)頁(yè)面跳轉(zhuǎn)情況,可分析每個(gè)頁(yè)面的到達(dá)率,跟蹤洞察用戶從進(jìn)入應(yīng)用到離開(kāi)應(yīng)用的全過(guò)程。通過(guò)分析支付日志,跟蹤各計(jì)費(fèi)點(diǎn),分析用戶付費(fèi)行為,識(shí)別用戶付費(fèi)偏好,發(fā)現(xiàn)用戶支付行為的規(guī)律,幫助開(kāi)發(fā)者優(yōu)化計(jì)費(fèi)點(diǎn)及計(jì)費(fèi)模式,為不同類型的應(yīng)用設(shè)置相應(yīng)的計(jì)費(fèi)點(diǎn),積極引導(dǎo)用戶消費(fèi),提高支付轉(zhuǎn)化率。支付轉(zhuǎn)化率是指從當(dāng)前頁(yè)面進(jìn)入下一頁(yè)面的用戶數(shù)比率,由用戶訪問(wèn)路徑可統(tǒng)計(jì)各頁(yè)面到下個(gè)頁(yè)面的轉(zhuǎn)化率及每一步的流失情況。
借助一些圖表工具可更加形象地展示結(jié)果,轉(zhuǎn)化率統(tǒng)計(jì)場(chǎng)景適用漏斗模型。漏斗模型既能顯示用戶在進(jìn)入流程到實(shí)現(xiàn)目標(biāo)的最終轉(zhuǎn)化率,也能展示關(guān)鍵路徑中每一步的轉(zhuǎn)化率。通過(guò)漏斗模型,應(yīng)用開(kāi)發(fā)者及運(yùn)營(yíng)人員可以準(zhǔn)確判斷流程的設(shè)計(jì)是否合理,各個(gè)步驟的優(yōu)劣,是否存在優(yōu)化的空間,從而有針對(duì)性地對(duì)產(chǎn)品進(jìn)行改進(jìn),為用戶提供更合理的訪問(wèn)路徑或操作流程,以提升用戶體驗(yàn)。
系統(tǒng)測(cè)試以沃商店某款應(yīng)用325版本的支付轉(zhuǎn)化數(shù)據(jù)為例,如圖2所示:從進(jìn)入支付頁(yè)面到一次確認(rèn)轉(zhuǎn)化率為22%,一次確認(rèn)到二次確認(rèn)轉(zhuǎn)化率為72%,二次確認(rèn)到成功支付轉(zhuǎn)化率為53%,整體轉(zhuǎn)化率為7.60%。從漏斗模型上看,進(jìn)入支付到一次確認(rèn)這一步用戶流失率最高,達(dá)78%,說(shuō)明對(duì)該環(huán)節(jié)進(jìn)行改進(jìn)或優(yōu)化的空間很大,在該環(huán)節(jié)挽留用戶的效果相對(duì)明顯,開(kāi)發(fā)者可在此環(huán)節(jié)增加挽留用戶的功能。對(duì)應(yīng)用升級(jí)優(yōu)化后,還可從轉(zhuǎn)化率漏斗模型觀察改進(jìn)效果。
圖2 支付轉(zhuǎn)化率漏斗模型
支付日志分析結(jié)果以Web頁(yè)面查詢的方式展現(xiàn),運(yùn)營(yíng)及產(chǎn)品人員通過(guò)后臺(tái)管理系統(tǒng)界面查詢,系統(tǒng)提供日期、版本、應(yīng)用、開(kāi)發(fā)者等維度的查詢。
Hive數(shù)據(jù)倉(cāng)庫(kù)與傳統(tǒng)Oracle數(shù)據(jù)庫(kù)對(duì)同一日志文件的去重操作耗時(shí)對(duì)比如圖3所示:橫坐標(biāo)表示待處理日志文件的大小,單位MB/GB,縱坐標(biāo)表示耗時(shí),單位是毫秒。
圖3 Oracle數(shù)據(jù)庫(kù)與Hive去重操作耗時(shí)對(duì)比
系統(tǒng)測(cè)試以常見(jiàn)的日志去重為例,數(shù)據(jù)量較小時(shí),即日志文件小于2 GB時(shí),Oracle數(shù)據(jù)庫(kù)比Hive數(shù)據(jù)倉(cāng)庫(kù)耗時(shí)少;隨著數(shù)據(jù)量的增加,當(dāng)日志文件大于2 GB并繼續(xù)增加時(shí),Oracle數(shù)據(jù)庫(kù)耗時(shí)急劇增加,Hive數(shù)據(jù)倉(cāng)庫(kù)在處理少量數(shù)據(jù)的耗時(shí)大于傳統(tǒng)數(shù)據(jù)庫(kù),面對(duì)海量數(shù)據(jù)處理任務(wù)時(shí),Hive的優(yōu)勢(shì)會(huì)隨著數(shù)據(jù)量的增加越來(lái)越明顯。
分析用戶行為是評(píng)價(jià)、運(yùn)營(yíng)和優(yōu)化一個(gè)手機(jī)應(yīng)用的重要方式,支付SDK日志記錄的用戶終端信息、應(yīng)用升級(jí)、支付等信息可客觀反映用戶行為。針對(duì)傳統(tǒng)系統(tǒng)難以滿足海量數(shù)據(jù)處理且成本越來(lái)越高的問(wèn)題,設(shè)計(jì)并實(shí)現(xiàn)了一種基于Hive數(shù)據(jù)倉(cāng)庫(kù)的支付SDK日志分析系統(tǒng),借助Hadoop集群強(qiáng)大的數(shù)據(jù)處理能力和hive構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)的集成、分析和快速查找能力,對(duì)支付SDK日志進(jìn)行分析,挖掘用戶的行為規(guī)律。測(cè)試結(jié)果表明:利用Hive數(shù)據(jù)倉(cāng)庫(kù)對(duì)海量支付SDK日志的分析效率明顯優(yōu)于傳統(tǒng)數(shù)據(jù)庫(kù),還有成本優(yōu)勢(shì)。分析結(jié)果對(duì)應(yīng)用的精細(xì)化運(yùn)營(yíng)和優(yōu)化具有一定的指導(dǎo)意義,不但能為用戶提供更個(gè)性化的服務(wù),提升用戶體驗(yàn)、產(chǎn)生商業(yè)價(jià)值,還在一定程度上突破了傳統(tǒng)系統(tǒng)處理海量數(shù)據(jù)的局限性。
[1] 工業(yè)和信息化部. 2016年1月份通信業(yè)經(jīng)濟(jì)運(yùn)行情況[OL]. http://www.miit.gov.cn/n1146312/n1146904/n1648372/c4658448/content.html.
[2] 中國(guó)信息通信研究院.國(guó)內(nèi)移動(dòng)互聯(lián)網(wǎng)應(yīng)用市場(chǎng)運(yùn)行分析報(bào)告[OL]. (2016-2). [2015-9].http://www.catr.cn/kxyj/qwfb/zdyj/201604/P020160414387395395899.pdf.
[3] 王正也,李書(shū)芳. 一種基于Hive日志分析的大數(shù)據(jù)存儲(chǔ)優(yōu)化方法[J]. 軟件,2014,35(11):94-100.
[4] 王來(lái),翟建宏. 基于HDFS的分布式存儲(chǔ)策略分析[J].智能計(jì)算機(jī)與應(yīng)用,2016(1):5-8.
[5] Tom White. Hadoop權(quán)威指南[M].曾大聃,周傲英,譯.北京:清華大學(xué)出版社,2010.
[6] Dean J, Ghemawat S. MapReduce:Simplified Data Processing on Large Clusters[J]. Communications of the ACM,2008, 51(1):107-113.
[7] 江三鋒,王元亮. 基于Hive的海量web日志分析系統(tǒng)設(shè)計(jì)研究[J]. 軟件,2015,36(4):93-96.
[8] 周鶴,朱曉民,趙銳,等. 手機(jī)閱讀平臺(tái)倉(cāng)庫(kù)管理模塊的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電信工程技術(shù)與標(biāo)準(zhǔn)化,2016(2):84-87.
DESIGN AND RESEARCH OF HIVE-BASED PAYMENT SDK LOG ANALYSIS SYSTEM
Wang Jianhui Li Tao
(CollegeofTelecommunicationandInformationEngineering,NanjingUniversityofPostsandTelecommunication,Nanjing210003,Jiangsu,China)
UniPay payment SDK is Unicom Wo store launched a one-stop application within the unified payment plug-in for developers to provide mobile phone calls and third-party payment capabilities. Payment SDK log records a large number of user terminal information, the use of mobile phone application behavior records and other data. Aiming at the problem that the traditional data warehouse can not satisfy the massive log data storage and processing, a Hive-based payment SDK log analysis system was designed. The test results show that using Hadoop framework and Hive data warehouse to store and process the massive payment SDK log, can meet the business demand well. The analysis result of user behavior in device activation, daily active user, quantity of time-log and the user payment conversion rate can provide important references for application developers to optimize and upgrade their mobile applications, and for operational personnel to adjust their marketing strategy.
Hive SDK log Application analysis User behavior
2016-07-25。王建輝,碩士生,主研領(lǐng)域:大數(shù)據(jù)分析。李濤,副教授。
TP3
A
10.3969/j.issn.1000-386x.2017.07.011