何慶++龔靜
摘 要:在移動互聯網迅猛發展的時代,電信運營商對用戶上網日志等非結構化數據的處理、分析和挖掘變得尤為重要,傳統的基于小型機和關系型數據庫的數據處理系統已經無法滿足海量非結構化數據的及時處理需求,相對傳統做法,搭建X86集群、利用云計算技術對海量非結構化數據進行處理,具有高效、低成本、易擴展等方面的巨大優勢。另外,用戶上網日志中包含著大量的個性化信息,如何充分挖掘和分析這些信息,對電信運營商在移動互聯時代實現精細化運營至關重要。該論文主要以用戶WAP日志為例,詳細闡述如何利用云計算技術處理海量的非結構化數據,進而去挖掘和分析用戶上網行為。
關鍵詞:非結構化數據 云計算 用戶上網行為
中圖分類號:TP393.08 文獻標識碼:A 文章編號:1672-3791(2014)11(c)-0011-02
隨著3G時代的來臨,電信行業競爭日趨激烈,而移動互聯業務的快速發展,也使各大電信運營商面臨新的機遇和挑戰。如何在信息大爆炸時代,對電子商務、社交網絡、物聯網、新醫療、LBS、視頻、音樂等方面產生的海量非結構化數據進行有效處理并提供高價值的分析,是業內面臨的共同難題。
據不完全統計,電信運營商接近50%的移動互聯網流量來自國內排名前10的WAP網站。從這個角度分析,雖然當前各種移動互聯業務層出不窮,種類繁多,但WAP應用仍然占據主導地位。此外,互聯網上知名門戶和垂直類網站也紛紛建立WAP版,搶占移動互聯網市場。對電信運營商而言,業務多樣化趨勢情況下,更需要很好地理解業務價值、客戶價值,促進精細化營銷;制定相應策略與控制,降低流量成本和提升流量收入,促進流量業務發展。通過云計算解決方案,對海量WAP日志進行數據處理和挖掘,低成本高效率的支撐業務應用。
1 需求分析
1.1 功能需求
(1)數據源。
用戶WAP上網日志記錄,每天處理數據量約1T,45億條記錄。
(2)WAP日志的云ETL。
提供基于HADOOP集群的數據處理平臺,通過統一調度實現并行ETL過程。
(3)網頁分類。
①從WAP日志提取URL,將URL經過網頁分類等處理,轉化為可以理解的指定的網頁標簽,并保留關鍵字;
②網頁標簽分為三級,每個網頁的關鍵詞保留5個,圖書和音樂類網頁保留圖書名和音樂名作為關鍵字;
③按照標簽進行網頁分類應具備一定的靈活性,除了一級標簽保持穩定外,二級和三級標簽均可因不同的業務分析需求而變化和重構。
(4)用戶上網行為分析。
基于客戶的訪問行為,識別其偏好特征,根據內容偏好特征進行客戶細分,并支持目標客戶群提取,以便支撐營銷活動。
1.2 性能需求
基于以上業務需求,系統能力要求至少配備6臺X86服務器,其中1臺為主節點,5臺為數據節點。具體配置如下。
(1)服務器型號是IBM 3650m3;
(2)CPU為雙路六核,Intel X5650處理器,2.66GHz主頻;
(3)內存是48GB;
(4)存儲是6*1TB SATA硬盤,7200轉;
(5)網口是4個千兆電口。
2 關鍵技術
2.1 網頁數據的獲取
爬蟲的工作原理:首先爬蟲根據WebDB生成一個待抓取網頁的URL集合叫做Fetchlist,接著下載線程Fetcher根據 Fetchlist將網頁抓取回來,如果下載線程有很多個,那么就生成很多個Fetchlist,也就是一個Fetcher對應一個Fetchlist。然后爬蟲用抓取回來的網頁更新WebDB,根據更新后的WebDB生成新的Fetchlist,里面是未抓取的或者新發現的URLs,然后下一輪抓取循環重新開始。這個循環過程可以叫做“產生/抓取/更新”循環。
2.2 基于分布式系統的海量數據處理
分布式系統采用基于Hadoop的集群架構,其特征主要有以下幾點。
(1)先進性;
(2)高可靠性;
(3)成熟性;
(4)易維護性。
2.2.1 分布式存儲系統
分布式平臺底層的基本結構是基于一組特定的節點構建而成,這些節點主要分為兩類,一類是元數據節點(NameNode),它在分布式存儲系統內部提供元數據服務;另一類是數據節點(DataNode),為系統提供數據存儲塊。
一個分布式集群由一個元數據節點和大量的數據節點構成,并被許多用戶端訪問。出于可靠性考慮,每一個塊被復制到多個數據節點上。默認情況下,保存三個副本,本地節點一份,與該節點相同的機架上一份,不同機架節點上一份,但這個副本數量可以由用戶指定。
每個分布式集群通常只有一個元數據節點,用來維護文件系統所有的元數據(metadata),包括名字空間、訪問控制信息、從文件到塊的映射以及塊的當前位置。
分布式存儲系統采用可擴展的系統結構,利用多臺服務器并行計算,提供高吞吐量的應用程序數據訪問,它不但提高了系統的可靠性、可用性和存取效率,還易于擴展。
2.2.2 Map/Reduce運行環境
MapReduce是Google發明的一種編程模型。在這種編程模型下,用戶通過定義一個map函數和一個reduce函數來解決問題。map函數對用戶輸入的鍵/值對(key/value pair)進行處理(處理時可能只有值這一項有用),生成一系列新的鍵/值對作為中間結果;系統(MapReduce的實現)對map函數生成的鍵/值對進行處理,將同屬于一個鍵(key)的值(value)組合在一起,生成鍵/值列表((key/list of values) pair)對;reduce函數將鍵/值列表對作為輸入,對同屬于一個鍵的值列表進行處理,生成最終處理結果輸出。endprint