国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Hadoop和Spark在Web系統(tǒng)推薦功能中的應用

2020-06-08 01:55童瑩楊貞卓
現(xiàn)代信息科技 2020年19期

童瑩 楊貞卓

摘? 要:隨著Web系統(tǒng)的數(shù)據(jù)量不斷增大,利用傳統(tǒng)數(shù)據(jù)庫等技術難以滿足系統(tǒng)數(shù)據(jù)分析及用戶個性化需求的要求,而大數(shù)據(jù)技術可以有效達成上述目標。文章基于Hadoop和Spark兩個大數(shù)據(jù)框架,介紹了其基本功能,結合兩個框架的工作原理及部署、應用方式,將其應用到一個Web系統(tǒng)的影視推薦功能中,最后提出了系統(tǒng)推薦功能后期的完善思路。

關鍵詞:Hadoop;Spark;Python;推薦功能

Abstract:With the increasing amount of data in the Web system,it is difficult to meet the requirements of system data analysis and user personalized needs by using traditional database technology,while big data technology can effectively achieve the above goals. Based on Hadoop and Spark two big data frameworks,this paper introduces their basic functions. Combined with the working principle,deployment and application mode of the two frameworks,it applies them to the movie recommendation function of a Web system. Finally,it puts forward the improvement ideas of the system recommendation function in the later stage.

Keywords:Hadoop;Spark;Python;recommendation function

0? 引? 言

如今Web系統(tǒng)開發(fā)的一個重要趨勢就是加入大數(shù)據(jù)技術來進行數(shù)據(jù)處理。傳統(tǒng)的無個性化推薦的購物網(wǎng)站、電影網(wǎng)站等Web系統(tǒng),很難對用戶進行精準營銷。隨著大數(shù)據(jù)應用技術的不斷發(fā)展,其已被應用到個性化推薦及數(shù)據(jù)分析功能中。不止購物網(wǎng)站,多個行業(yè)都用到了數(shù)據(jù)處理功能,如:阿里的“猜你喜歡”,又或是外賣平臺的派單功能中,根據(jù)最近的用戶進行派單操作,均是利用大數(shù)據(jù)技術實現(xiàn)了精準的推薦及任務分派。本設計源于武漢商學院信息工程學院軟件工程實訓,通過將傳統(tǒng)的Web系統(tǒng)和大數(shù)據(jù)技術結合的方式,完成了Web系統(tǒng)中推薦功能模塊。

大數(shù)據(jù)的特點就是能夠在短時間內捕捉、管理和處理海量數(shù)據(jù),在Web系統(tǒng)中添加個性化推薦功能,可使其更精準的滿足用戶個性化的信息推薦需求,勢必成為未來Web應用系統(tǒng)不可或缺的功能。實現(xiàn)大數(shù)據(jù)推薦功能的框架有很多,Hadoop和Spark作為大數(shù)據(jù)技術的主流框架,很適合與Web系統(tǒng)結合,用以完成其中數(shù)據(jù)推薦等功能,所以利用Hadoop和Spark實現(xiàn)Web系統(tǒng)推薦功能,具有很強的應用價值。

1? 大數(shù)據(jù)框架的基本介紹

大數(shù)據(jù)框架也稱處理框架,是大數(shù)據(jù)系統(tǒng)中一個最基本的組件。處理框架負責對系統(tǒng)中的數(shù)據(jù)進行計算。Hadoop可以看作是MapReduce處理引擎的處理框架,引擎和框架通??梢韵嗷ヌ鎿Q或同時使用,例如:Spark可以結合Hadoop,并取代MapReduce。組件之間的互操作性體現(xiàn)了大數(shù)據(jù)系統(tǒng)的靈活性,了解和應用大數(shù)據(jù)處理框架,對深入應用大數(shù)據(jù)至關重要。

1.1? Hadoop的基本組件介紹

Hadoop作為一個分布式系統(tǒng),能讓開發(fā)人員在不了解底層架構的情況下,輕松完成應用。它實現(xiàn)的分布式文件系統(tǒng)核心組件是HDFS和MapReduce。HDFS是Hadoop的儲存系統(tǒng),能夠實現(xiàn)創(chuàng)建文件、刪除文件、移動文件等功能,操作的數(shù)據(jù)主要是要處理的原始數(shù)據(jù)以及計算過程中的中間數(shù)據(jù),它能實現(xiàn)高吞吐量的數(shù)據(jù)讀寫。MapReduce系統(tǒng)是一個分布式計算框架,可利用分散的計算機集群對海量的數(shù)據(jù)進行分解處理。當然,除了上面這些優(yōu)勢,Hadoop也存在著一些缺點,例如:Hadoop無法對大量小文件進行高效存儲,MapReduce計算框架缺少迭代支持,另一方面會有較高的延遲,但作為大數(shù)據(jù)開源框架的代表,Hadoop仍是目前業(yè)界廣泛認可,且使用非常廣泛的一個大數(shù)據(jù)開源框架。

1.2? Spark的基本組件介紹

Spark是一個開源集群運算框架,由Scala語言進行實現(xiàn),它是一種面向對象、函數(shù)式編程語言,能夠像操作本地集合對象一樣輕松地操作分布式數(shù)據(jù)集。Spark本身具有幾個特點,首先相對于同為計算模型MapReduce來說,Spark更快,不管數(shù)據(jù)是從磁盤中讀取還是從內存中讀取。其次Spark易用性更好,除了Scala之外,它還支持Java,Python等語言編寫,和Hadoop一樣,Spark的通用性也強,它的生態(tài)圈也十分廣泛,包括了Spark SQL,MLlib等組件。Spark具有很強的適應性,能夠讀取HDFS,HBase等為持久層讀寫原生數(shù)據(jù),作為資源管理器去調度Job來完成Spark應用的計算,但因其缺少文件管理系統(tǒng),所以一般在實際開發(fā)中,常與Hadoop結合起來一起使用。

Spark的MLlib機器學習庫是它非常重要的一個組成部分。MLlib機器學習庫由一些通用學習算法和工具組成,包括分類、回歸、聚類、協(xié)同過濾、降維等。相對于Hadoop中MapReduce實現(xiàn)的機器學習算法,Spark基于內存的計算模型良好的改善了MapReduce計算框架迭代中反復讀取磁盤的問題。在Web系統(tǒng)的推薦功能中,開發(fā)人員可以直接調用Spark MLlib庫中的協(xié)同過濾算法來對數(shù)據(jù)進行處理。

2? Hadoop和Spark的應用方式

Hadoop具有高可靠性,高擴展性,高效性,高容錯性的優(yōu)點,Spark有更高的性能,能夠與Hadoop生態(tài)兼容,并且還有易用的機器學習庫。類似的大數(shù)據(jù)框架還有storm、Flink等,但前者對于真正的大流量應用還不太穩(wěn)定,后者產(chǎn)生時間較晚,應用起來有一定風險。

Hadoop和Spark大數(shù)據(jù)框架搭建在虛擬機環(huán)境上,可以通過Java,Python等完成應用開發(fā),也可使用包括專為Spark服務的Scala來進行開發(fā)。鑒于信息工程學院開設了Phyton課程,在我們此次Web系統(tǒng)的推薦功能中,采用Python來調用Hadoop和Spark服務。

Python是一個輕量化腳本語言,使用方便。Hadoop和Spark都支持Python,所以此系統(tǒng)中通過Python來連接使用Hadoop和Spark。使用Hadoop和Spark服務,首先需要連接上Hadoop和Spark的主機。開發(fā)人員可以通過使用用來操作Hadoop和Spark的PyHDFS和PySpark來完成。具體操作為:

(1)用pyhdfs.HdfsClient鏈接Hadoop主機,設置主機HOST信息及用戶名信息,具體代碼為:fs = pyhdfs.HdfsClient(hosts='Hadoop0,50070', user_name='hdfs')

(2)再通過pySpark連接到Spark主機,利用Spark Context容器,在參數(shù)中設定應用的名字和要連接到的集群的URL:sc = SparkContext(appName="endless similar matrix",master="Spark://Hadoop0:7077")

通過這兩步操作,開發(fā)人員就可以很輕易地連接上主機,當然前提是需要保證上述使用的主機名及端口是正確的。

除了連接服務,開發(fā)時,要使用HDFS存儲系統(tǒng)需要的數(shù)據(jù),在本系統(tǒng)中,可以選擇通過upload來進行上傳操作,實現(xiàn)該操作的代碼為:upload_to_hdfs(file)

在準備好系統(tǒng)所需要的存儲文件以后,就可以調用Spark來對數(shù)據(jù)進行處理,讀取文件的路徑,本系統(tǒng)中代碼如下所示:text = sc.textFile("hdfs://Hadoop0:9000/user/data.csv")

以上就是連接Hadoop和Spark集群所進行的操作,如果需要進一步對文件進行處理優(yōu)化,就需要編寫腳本來設置處理方法,也可以直接調用Spark MLlib庫中的已有算法,通過設置好需要的一些迭代參數(shù),進行模型訓練即可。當然如果需要將服務暴露出去供系統(tǒng)開發(fā)人員后端調用,則可以先將端口號修改為0.0.0.0,然后通過設置的路由,訪問相對應的函數(shù)即可,實現(xiàn)代碼為:app.run(host="0.0.0.0")

3? Hadoop和Spark在推薦系統(tǒng)中的應用

Web系統(tǒng)推薦功能要解決的就是數(shù)據(jù)量大的問題,同時還要快和準,如果用單機處理,即使內存夠跑完整個流程也要耗費大量時間,迭代就更加難以完成,所以實際開發(fā)中,Web系統(tǒng)常常要用到分布式系統(tǒng)。對于分布式計算框架,Hadoop和Spark是目前合適并且優(yōu)秀的分布式模型。目前它們的應用場景有很多,包括提供個性化服務,優(yōu)化業(yè)務流程等,當然最常見的就是個性化推薦的服務。下文具體介紹Hadoop和Spark在Web系統(tǒng)推薦功能中的開發(fā)方法。

首先,Hadoop和Spark都是免費開源框架,開發(fā)人員可在Apache官網(wǎng)下載Hadoop和Spark的安裝包;然后安裝一個虛擬機環(huán)境,安裝配置諸如:ubantu等系統(tǒng);接著通過Xshell等終端模擬軟件連接上虛擬機,此時就可將下載的安裝包上傳到虛擬機當中;上傳完成后,通過zxvf指令將安裝包解壓至指定位置。完成上述部署后,還需要對幾個配置文件進行修改,修改之前,因為Hadoop需要Java環(huán)境,所以開發(fā)人員還需要先行下載Java JDK,并且在etc/profile中配置路徑。這些完成之后,就要對Hadoop和Spark配置文件進行修改,主要開發(fā)步為:

(1)在Hadoop中,首先修改Hadoop-env.sh文件,將jdk路徑導入進去,修改core-site.xml文件,指定namenode的通信地址以及Hadoop運行時產(chǎn)生的文件路徑,接著修改hdfs-site.xml,設置HDFS副本數(shù)量,然后修改mapred-site.xml。應注意的是,由于在配置文件目錄下沒有此文件,需要修改名稱,具體方式為:mvmapred-site.xml.template mapred-site.xml

通知MapReduce使用yarn,修改yarn-site.xml,然后修改reduce獲取數(shù)據(jù)的方式。這些修改完成之后需要將Hadoop添加到環(huán)境變量中去,然后執(zhí)行。

配置文件修改完成后,需要先格式化Hadoop,然后在sbin目錄下執(zhí)行start-all.sh腳本即可啟動Hadoop服務,通過jps可以看到各個節(jié)點的端口,具體如圖1所示。

(2)Hadoop啟動完成后就可以啟動系統(tǒng)的Spark服務,同Hadoop一樣也需要先修改其配置文件,并且需要先將Python配置到默認環(huán)境中,雖然Spark大部分是以Scala作為開發(fā)語言的,但在此處,采用Pyhton來進行操作。將環(huán)境配置完成之后,同樣是在sbin目錄下運行start-all.sh腳本來啟動Spark集群,通過jps查看是否成功,如圖2所示。

(3)集群都啟動成功后,開發(fā)人員就需要準備推薦功能所需要的推薦服務,結合本W(wǎng)eb系統(tǒng)中影視推薦功能,此服務可結合用戶的喜好,有針對性的為其推薦相類似的影視資源。此功能要利用協(xié)同過濾算法,因為Spark自帶的MLlib庫中有ALS(協(xié)同過濾)可以直接調用,所以只需要設置好迭代的參數(shù)即可,當然首先還是要先對數(shù)據(jù)集進行處理,具體代碼為:movieRatings = text.map(lambda x: x.split(",")[:3])model = ALS.train(movieRatings, 10, 10, 0.01)

通過這兩步操作就可以完成一個模型的訓練。

(4)服務腳本編寫好之后,需要上傳到虛擬機環(huán)境當中運行,在運行服務腳本之前,開發(fā)人員需要通過pip指令在虛擬機中安裝好PySpark,PyHDFS等各個插件,然后可以直接通過Python腳本的方式來直接啟動服務,如圖3所示。

至此,一個推薦服務已經(jīng)基本搭建并且運行起來了,如果后端需要訪問這個服務,可以用flask框架設置的路由直接進行訪問。具體效果如圖4所示。

4? 結? 論

此基于Hadoop和Spark的Web系統(tǒng)推薦功能可以依據(jù)用戶喜好,實現(xiàn)個性化推薦,這讓Web系統(tǒng)變得更加個性化,有針對性,使用效果更加出色。本W(wǎng)eb系統(tǒng)的推薦功能后期可以進一步做升級,如果要處理更大的數(shù)據(jù)量的推薦,可以采用諸如:Spring Cloud等框架集合來構架分布式、微服務架構的Web系統(tǒng)。在此基礎上,結合Hadoop和Spark,推薦功能的優(yōu)化性會得到明顯提高。

軟件工程實訓項目通常以某項技術平臺為支撐,但僅使用Web開發(fā)技術完成的Web項目,難以適應實際開發(fā)的需要。Web系統(tǒng)中的推薦功能,個性化服務等一定會應用得越來越廣泛,了解和應用大數(shù)據(jù)技術對Web開發(fā)人員會變得更加重要,特別是在涉及大量數(shù)據(jù)處理的系統(tǒng)開發(fā)工作中,其將成為一個基本應具備的開發(fā)技能,此系統(tǒng)的設計與實現(xiàn),對軟件工程專業(yè)、大數(shù)據(jù)專業(yè)的學生實訓都能起到極大的鍛煉作用。

參考文獻:

[1] 李曉穎,趙安娜,周曉靜,等.基于大數(shù)據(jù)分析與挖掘平臺的個性化商品推薦研究及應用 [J].電子測試,2019(12):65-66+81.

[2] 李榮.大數(shù)據(jù)技術必須了解這些 [J].計算機與網(wǎng)絡,2019,45(13):36-37.

[3] 孫皓.基于Hadoop平臺和Spark框架的推薦系統(tǒng)的設計與實現(xiàn) [D].福建:華僑大學,2018.

[4] 徐林.基于Spark MLlib協(xié)同過濾算法的美食推薦系統(tǒng)研究 [J].吉林大學學報(信息科學版),2019,37(2):181-185.

[5] 吳榮,段宏濤.基于Hadoop平臺的Spark快數(shù)據(jù)推薦算法解析——以其在圖書推薦系統(tǒng)中的應用為例 [J].數(shù)字技術與應用,2020,38(6):115-117.

作者簡介:童瑩(1981—),女,漢族,湖北武漢人,碩士研究生,講師,研究方向:網(wǎng)絡數(shù)據(jù)庫。

莱芜市| 运城市| 民县| 罗田县| 东阿县| 额尔古纳市| 和林格尔县| 玉田县| 兴仁县| 桐城市| 名山县| 抚顺市| 扎囊县| 伊春市| 诸城市| 江门市| 西畴县| 闻喜县| 桐乡市| 巢湖市| 临海市| 柳河县| 陈巴尔虎旗| 晋城| 镇原县| 习水县| 徐汇区| 乳源| 邓州市| 都兰县| 冕宁县| 凉城县| 临潭县| 临沧市| 固原市| 房产| 东莞市| 皮山县| 宁河县| 绥滨县| 德清县|