華志潔
(1.同濟大學 上海 200092;2. 天津普泰國信科技有限公司 天津300384)
應用技術
基于Hadoop云計算平臺仿百度智能輸入提示算法的研究與實現
華志潔1,2
(1.同濟大學 上海 200092;2. 天津普泰國信科技有限公司 天津300384)
云計算是指基于互聯網、通過虛擬化方式共享IT資源的新型計算模式。Hadoop以Hadoop分布式文件系統HDFS(Hadoop Distributed File System)和MapReduce分布式計算框架為核心,為用戶提供了底層細節透明的云分布式基礎設施。系統研究的主要內容在基于Hadoop的云計算平臺上實現通過檢索不同文件系統下的輸入接口,輸入內容的分布式統計結果,智能提示和匹配后續的內容,完成智能輸入提示功能的算法研究與實現工作。
云計算 Hadoop 智能輸入 智能匹配 HDFS MapReduce
近年來,全球云計算市場迅速發展,世界信息產業強國和地區對云計算給予了高度關注,已把云計算作為未來戰略產業的重點,紛紛研究制定并出臺云計算發展戰略規劃,加快部署國家級云計算基礎設施,并加快推動云計算的應用,搶占云計算產業制高點。新興云計算技術和服務企業也憑借先發優勢,發展勢頭強勁。
本文在對Hadoop的核心組件Hadoop分布式文件系統HDFS和分布式計算模型MapReduce進行深入分析和研究的基礎上,搭建基于Hadoop的云計算平臺,在該平臺上實現通過檢索不同文件系統下在搜索引擎的輸入接口,輸入內容的統計次數,智能提示和匹配后續的內容。在云平臺下完成仿百度搜索引擎智能輸入提示功能的算法研究與實現工作。
云計算即一種基于因特網的新型超級計算模式,用戶只需要通過簡單的聯網設備接入云數據中心,就能切身體驗到每秒十萬億次的計算能力。廣義云計算是指服務商提供給用戶交付和使用服務的一種模式,用戶僅需要一臺普通PC就可以通過網絡按需獲得所需服務。狹義云計算就是指用戶能夠像購買水電一樣,根據需求隨時獲取所需資源和IT基礎設施。
Hadoop采用分布式存儲結構,讀寫速度有了極大提高。其基于Java語言開發,HDFS分布式文件系統具有高容錯的特性,并且具有超強的數據管理能力。
HDFS是Hadoop分布式文件系統,是分布式數據計算和文件存儲的基礎。HDFS 的名稱節點即NameNode,在Hadoop中充當一個全局管理者的角色,負責調度數據節點去執行系統最底層的任務,以及負責監控整個系統的運行狀態。
主節點(NameNode)負責管理該文件系統中的元數據,數據節點(DataNode)則負責存儲該文件系統中的實際數據。客戶端通過與主節點和數據節點的交互來訪問文件系統。圖1為HDFS體系結構圖。

圖1 HDFS體系結構圖Fig.1 HDFS architecture
MapReduce是一種編程模型,可用于大規模TB級別以上數據集的并行運算。在Hadoop中,每一個MapReduce的任務都被初始化為一個job,每個job又可分為Map和Reduce階段。他們可用兩個功能函數來表示,即Map函數和Reduce函數。Map函數是負責接收一個<key,value>形式的輸入,然后產生同形式的中間輸出結果,然后Hadoop將中間結果集合到一起傳遞給Reduce函數,Reduce函數再去接收<key,(list of values)>形式的輸入,然后進行并行處理。圖2 描述了MapReduce處理大數據集的具體流程。

圖2 MapReduce處理過程Fig.2 MapReduce processing
Hadoop的第三大核心技術就是HBase,它是一個面向列的、分布式的數據庫,同時也是一種開源數據庫。相對于普通的數據庫,HBase非常適合于非結構化的數據存儲。其次,HBase還是一種基于列的模式存儲。這兩個特點使得HBase成為一種在性能、可靠性、伸縮性等方面都大放異彩的分布式存儲系統。
云計算平臺機群中包括了3個節點:1個Master、2個Slave,節點之間采用局域網連接并且相互之間可連通。節點IP地址分布如表1所示。
這3個節點上均是CentOS6.4系統,Master虛擬機主要扮演NameNode和JobTracker的角色,另外的兩臺Salve虛擬機扮演DataNode和TaskTracker的角色。

表1 節點IP地址Tab.1 Node IP addresses
2.1 Hadoop集群成功截圖
① 在瀏覽器里地址欄輸入“http://hadoop001∶50030/”,顯示結果如圖3所示。

圖3 50030界面Fig.3 50030 interface
② 在瀏覽器里地址欄輸入“http://hadoop001∶50070/”,顯示結果如圖4所示。
這樣就完成了Hadoop集群平臺的搭建。

圖4 50070界面Fig.4 50070 interface
2.2 基于Eclipse的Hadoop應用開發環境配置
操作系統為centos6.4(1個NameNode 2個DataNode);Hadoop版本為hadoop-1.1.2;Eclipse版本為Eclipse IDE for Java EE Developers。
第一步:先啟動hadoop守護進程,執行start-all.sh指令。
第二步:在eclipse上安裝hadoop插件。
①把Hadoop插件放到Eclipse安裝目錄的plugins中,重啟Eclipse生效。
②配置Map/Reduce Locations。新建一個Hadoop Location,配置對應的Location name和Map/Reduce Master、DFS Master,如圖5所示。

圖5 配置Map/Reduce LocationsFig.5 Deployment of Map/Reduce Locations
③ 配置完后退出。點擊DFS Locations->Hadoop,如圖6所示。

圖6 DFS LocationsFig.6 DFS Locations
第三步:新建項目。新建一個Map/Reduce Project,此處項目名取為WordCount。復制 Hadoop源文件中WordCount. java程序到剛剛新建的項目中。
第四步:上傳測試數據,上傳成功后如圖7所示。

圖7 HDFS文件系統Fig.7 HDFS file system
第五步:點擊Run,運行程序,顯示結果如圖8所示。

圖8 運行結果Fig.8 Run results
2.3 PieTTY
PieTTY是一種基于Putty開發的工具,它的用戶界面相對于Putty得到了有效的改進,并且還提供了更多的語種支持功能。Putty作為遠程連接linux的工具,支持SSH和telnet。如圖9所示。

圖9 PieTTY界面Fig.9 PieTTY interface
2.4 WinSCP
WinSCP是一種基于Windows環境的SFTP客戶端,它同時也支持SCP協議。其主要功能特點就是可以在本地計算機與遠程計算機間進行安全的復制文件。
安裝非常簡單,按照提示一步一步操作即可,中間沒有需要選擇、判斷的地方。如圖10所示。
百度搜索提示功能實際上需要處理每天數以萬計的信息,將用戶搜索最多的前10個關鍵詞做以提示推薦。本研究模擬了類似百度搜索提示功能,使用JqueryUI+Ajax+Redis搭建前后臺框架,期間用到了搜索引擎自動推薦算法,并且是使用MapReduce實現數據統計算法,最終定制MapReduce輸出,將數據直接寫入Redis內存數據庫,最終完成初步的仿百度搜索提示功能。
① 搭建了一個struts2的開發環境。
② 使用JqueryUI+Ajax+Redis搭建前后臺框架,采用ajax技術作出用戶在Sug.jsp頁面輸入搜索后的響應動作。具體代碼如圖11所示。

圖11 Sug.jsp部分代碼Fig.11 Sug.jsp code(partial)
在后臺Sug.java部分,通過連接虛擬機主節點IP地址192.168.80.101,將該程序與Redis數據庫進行連接。Sug.java部分代碼如圖12所示。

圖12 Sug.java部分代碼Fig.12 Sug.java code(partial)
③ 在虛擬機主節點hadoop001里安裝配置Redis數據庫和Tomcat,并開啟運行狀態。
④ 使用MapReduce實現數據統計算法,統計出用戶搜索的關鍵詞的次數。Map函數負責將用戶搜索產生的日志文件里的記錄找到相應的重要關鍵詞,然后通過文本處理統計頻率的程序,記錄關鍵詞出現的次數并把他們交給Reduce函數進行合并。圖13為Map函數的代碼。

圖13 Map函數代碼Fig.13 Map function code
⑤ 定制MapReduce輸出,將數據直接寫入Redis內存數據庫。這樣,當把程序通過Eclipse運行起來時,MapReduce將自動記錄下數據日志文件,并做相應的處理,寫入到數據庫中。
⑥測試運行。在瀏覽器中輸入字母“h”就會出現搜索提示,如圖14所示。

圖14 搜索提示運行結果Fig.14 Run results of search tips
本研究對Hadoop的核心組件HDFS和MapReduce進行深入分析,搭建基于Hadoop的云計算平臺,通過實驗有效驗證了該平臺仿百度搜索引擎智能提示算法的研究與實現任務。
[1] 張健. 云計算概念和影響力解析[J]. 電信網技術,2009(1):15-18.
[2] 潘富斌. 基于Hadoop的安全云存儲系統研究與實現[D]. 成都:電子科技大學,2013.
[3] 翀欒亞建,黃民,龔高晟,等. Hadoop平臺的性能優化研究[J]. 計算機工程,2010(14):262-263.
[4] Mackey G,Sehrish S,Wang J. Improving metadata management for small files in HDFS[C]. IEEE International Conference on Cluster Computing and Workshops,2009.
[5] Borthakur D,Gray J,Sarma J S. Apache Hadoop goes realtime at Facebook [C]. Proceedings of the 2011 international conference on Management of data,2011.
A Hadoop Cloud Platform Based and Baidu Modeled Intelligent Input Algorithm:Research and Realization
HUA Zhijie1,2
(1.Tongji University,Shanghai 200092,China;2.Tianjin Ptgosn Science and Technology Ltd.,Tianjin 300384,China)
Cloud computing refers to the new Internet-based computing model which shares IT resources by way of virtualization.HDFS(Hadoop Distributed File System)takes MapReduce distributed computing framework as the core to provide users with low-level details of transparent distributed cloud infrastructure.This study focuses on the design and implementation of the algorithms of providing smart tips and matched contents for users’ inputting through searching input interfaces,distributed statistics of users’ input contents,smart tips and matched follow-up contents.
cloud computing;Hadoop;intelligent input;intelligent match;HDFS;MapReduce
TP311.1
:A
:1006-8945(2015)12-0020-04
2015-11-05