基於MaxCompute搭建社交好友推薦系統

摘要:本次由阿里雲駐雲科技資深架構師翟永東帶來了「基於MaxCompute搭建社交好友推薦系統」爲主題的分享,主要對大數據在好友推薦系統中的應用、好友推薦系統的分析模型、好友推薦系統在阿里雲上的實現方式和MaxCompute技術進行了精彩的介紹。前端

點此查看原文:http://click.aliyun.com/m/42756/算法

本次由阿里雲駐雲科技資深架構師翟永東帶來了「基於MaxCompute搭建社交好友推薦系統」爲主題的分享,主要對大數據在好友推薦系統中的應用、好友推薦系統的分析模型、好友推薦系統在阿里雲上的實現方式和MaxCompute技術進行了精彩的介紹。數據庫

直播視頻:https://yq.aliyun.com/article...編程

如下爲精彩視頻內容整理:安全

大數據在好友推薦系統中的應用服務器

給你們分享一下基於MaxCompute搭建社交好友推薦系統,使用MaxCompute阿里的大數據計算的方法能夠作哪些事情,若是說是以社交好友的推薦,來給你們去演示一下。好友推薦系統它的一個場景介紹,如今你們都在講大數據,若是想去使用這些數據,咱們認爲它須要具有三個要素,第一個要素是海量的數據,數據量越多越好,只有數據量達到了足夠大,咱們纔可以成爲一個數據裏面潛在去挖掘出來。第二個是處理數據的能力,有了這樣很高的快速處理數據的能力,可讓咱們更快的去把數據裏面的信息挖掘出來。第三個是商業變現的一個場景,咱們採集大數據的時候,並非數據越多越好,必定要有一個具體的場景。以推薦系統爲例來看一下大數據的一個應用。架構

圖片描述

左邊是支付寶,在支付寶一打開的時候,下面會有一欄推薦多是你的好友,通常的話下面的那些人都是你認識的,可能還沒加他們爲好友。右側是Linkin,它是一個求職社交網站,Linkin也會給你這樣的一個推薦,會告訴你哪一些用戶是你潛在的好友,並且Linkin會告訴你這個好友跟你是一度的關係的仍是兩度的關係或者是三度的關係。潛在關聯性高的,會在前面直接顯示出來,潛在關聯性沒有那麼高的也會在後面顯示出來,這兩個都是典型的一個好友推薦。機器學習

進行好友推薦的時候,怎麼給用戶進行推薦,首先這兩我的是非好友的關係,接着咱們去看一下他們倆潛在共同好友的處理,經過這種方式去給用戶推送,比方說潛在好友數量多,我就認爲這兩我的是好友關係,就是經過這種方式來實現的。分佈式

圖片描述

上圖的右側是人與人之間的一個社交關係的服務,好比說A跟B是一個好友,咱們能夠經過這五個方式畫出來,讓機器去分析這些數據,須要把右邊這種社交的關係,轉換成機器能夠識別的數據,轉換成左側這樣的二維表的數據,好比說A跟B、C、D他們之間是好友,咱們左側是A跟B、C、D是好友關係,剩下這些也是相似的,這樣就能夠把這個表傳到機器裏面進行分析,比方說經過分析以後,發現A跟E有一個共同好友,B跟D有兩個共同好友,而後C跟E有一個共同好友。這個時候就能夠推薦B跟D他兩個是一個潛在的好友,而排在前面,A跟E或者C跟E排在機率往下,稍微低一些,潛在好友多的排在前面,潛在好友少的排在後面,經過這種方式來進行排列,這個是咱們指望的結果。工具

好友推薦系統的分析模型

咱們怎麼來去計算呢?咱們通常使用方式是什麼呢?使用的是MapReduce這樣的一個計算模型,MapReduce是一種編程模型,用於大規模數據集的並行運算,它由三部分組成分別是Map、Combine、Reduce。

以好友推薦這樣的一個場景爲例。

圖片描述

首先輸入左側機器能夠識別的數據,輸入以後,在Map端先把數據作一個拆分,拆分紅兩份不一樣的數據,在拆分的同時把它轉換成key、value的類型,比方說A、B、D、E這幾行數據轉換成什麼呢?A跟B,而後value是零,零表明他們兩個已是好友。若是兩個不是好友的話,自定義這一行數據,B跟D不是好友,就把他的值視爲1。下面的B、E,還有D跟E也是1。把原來一行數據轉換成Key、Value這個形式的數據,相似於右邊這樣的數據,上面是key、value的一個類型,下面也是相似的。這個是在Map作的事情,把這個數據經過兩個key、value進行一個拆分,轉化成key、value這樣的一個類型。

圖片描述

Combine是對數據先作一個本地的彙總,先看到有一些數據是重複的,好比說A跟B是零,A跟B是零,出現了兩次,這個時候就存一個就能夠。其餘相似的,這樣我把這些數據在本地作完彙總,相似於這張表,這兩個數據。

圖片描述

接着是第三步是Reduce階段,Reduce是對這些數據進行一個彙總,把兩邊數據彙總到一塊兒,而後對每個Key值對應惟一的一個value值作一個彙總,這個就是它最終計算的一個結果。若是兩個用戶已是好友了,Value值是零的話,不須要再給他推薦。因此說A、B若是是零的話就剔掉,只須要知道它的value值是大於零的,有潛在好友,同時這兩我的目前仍是非好友的關係,這個就達到了想要的效果。

好友推薦系統在阿里雲上的實現方式

圖片描述

好友推薦阿里雲實現整個的架構是怎麼樣的呢?比方如今有一個社交軟件是一個業務系統,前端使用阿里雲的雲服務器ECS去部署整個的社交的軟件的應用,入庫的一些數據存到阿里的RDS,這個就是當前的一個社交應用系統。業務系統裏面產生了一個數據,怎麼來對數據進行分析,首先須要在數據庫裏邊把這個數據提取出來,提取到阿里雲的大計算服務MaxCompute裏面,很相似於咱們傳統作數倉的時候ETL的一個過程,會利用阿里雲的大數據開發平臺對數據進行分析和處理。

使用它能夠快速便捷的去開發咱們數據植入或者數據這樣的一個流程,這個就是會使用大數據開發平臺和大數據製造,結果是一個數據分析結果,還須要前端的應用數據對分析出來的結果展現出來。

MaxCompute的技術特色

對於MaxCompute的一些技術特色主要有一下幾點:

(1)分佈式:分佈式集羣、跨集羣技術、可靈活擴展。

(2)安全性:從安全性來說具備自動存儲糾錯、沙箱機制、多分備份。

(3)易用:具備標準API、全面支持SQL、上傳下載工具。

(4)權限控制:多租戶管理、用戶權限策略、數據訪問策略。

MaxCompute的使用場景

對於MaxCompute的使用的場景,可使用MaxCompute搭建本身的一個數據倉庫,同時,MaxCompute還能夠提供一種分佈式的應用系統,比方說能夠經過圖計算,或者經過有效的寬幅的方式,能夠搭建一個工做流;比方說數據分析並非說只分析一天就不分析了,實際上是週期性的。若是數據天天要分析一次,能夠在MaxCompute裏面生成那樣的任務工做流,設置一個週期性的調度,天天要讓它調度一次,MaxCompute能夠按照設計好的工做流,調動週期,而後去運行;MaxCompute在機器學習裏面也是有用的,由於機器學習會用到MaxCompute分析出來的數據,其餘相相似的服務對數據進行分析處理,分析出來的結果數據放到機器學習平臺裏面,讓機器經過一些算法一些模型,去學習這裏邊的數據,生成一個但願達到的一個模型。

大數據開發套件DataIDE

另一個除了MaxCompute以外還有一個會用到一個大數據開發操做DateIDE,大數據開發套件DataIDE(現名:數據工場DataWorks)提供一個高效、安全的離線數據開發環境。爲何介紹它呢?是由於DateIDE只是對數據任務工做流的一個開發,其實底層的數據處理,數據分析,都是在MaxCompute上完成,能夠簡單理解爲DateIDE就是一個圖象化的數據開發的服務,它是爲了幫助咱們更好去使用MaxCompute。也能夠看到,這咱們能夠在DateIDE進行一個開發,不須要直接在MaxCompute裏面進行開發了,在MaxCompute開發的一個效果,跟在DateIDE裏面開發的效果對比。

圖片描述

這個是DateIDE整個應用的一個場景,咱們在進行數據分析的時候,須要對裏面的原數據進行整合統一保存,這個時候能夠在DateIDE上實現,把全部的原數據的信息統一彙總到MaxCompute裏面進行一個保存,同時還能夠DateIDE進行數據的加工,存儲等操做均可以在DateIDE上完成。DateIDE在整個數據分析的過程當中能夠對數據存儲、分析、處理、集羣等處理。

MaxCompute的應用開發流程

MaxCompute的應用開發流程一共須要六步分別是:

(1)安裝配置環境

(2)開發MR程序

(3)本地模式測試腳本

(4)導處jar包

(5)上傳到MaxCompute項目空間

(6)在MaxCompute中使用MR

下面咱們以一個好友推薦的事例來詳細講解一下這個過程。首先須要去安裝MaxCompute客戶端,使用它的好處是能夠在本地經過命令的方式去遠程使用阿里雲的MaxCompute,在本地只須要配置MaxCompute信息就能夠。另外還須要去配置本身的一個開發環境,由於如今阿里雲的MaxCompute主要是兩種語言,一種是Java一種是Eclipse。而後新建項目,在開發新建項目的時候,你們能夠看到這個紅包,這個紅包就是須要配置本地的客戶端的信息。在進入到寫代碼的過程 。

接下來就是簡單的測試,開發以後要測試,這個代碼是否是按照設想的方式去工做的。接着這邊輸入的是一個測試數據,這個輸出的數據類別,就是輸出的這樣的一個表格,表格有三列,第一類是用戶A,第二類是用戶B,第三類是兩個潛在的共同好友的數量,只須要關注這三個數據就能夠,而後就能夠測試。接着第三個本地運行的數據的代碼,運行的結果就是經過本地的開發測試,在本地測試的時候這邊有一個數據,你第一步須要選擇是使用哪個的一個項目處理。第二個要選擇輸入表和輸出表,要告訴他輸出表是哪一個,輸出表的目的是什麼,告訴這個程序,你輸出的結果保存在表裏面,配置好點擊運行這個結果就出來了。

本地開發測試成功以後,接着要把它打成一個Jar包,而後上傳到阿里雲上,就是上傳到MaxCompute的集羣裏邊。第二個打完Jar包之後添加資源,下面就把剛剛輸出的Jar包,經過資源的管理,把剛剛輸入的Jar包上傳上來。本地開發測試好的一個MR的Jar包已經上傳到MaxCompute集羣裏邊。

上傳好了以後就可使用它,去新建一個任務,而後這個任務去起個名字,這個任務跟哪個Jar包相關聯,接着是OPENBMR,咱們選的是MR的程序,因此裏面選的是OPENMR模塊,生成這樣的一個任務,進入到編輯頁面,在編輯頁面裏面首先告訴它,這個OPENMR這樣的一個任務,使用的是上傳的好友推薦的一個Jar包,最下面告訴它Jar包裏面的程序的邏輯是什麼,在這個裏面制定好以後點擊運行結果就會出來。這個就是咱們在本地開發測試,把資源上傳到MaxCompute的集羣裏面,接着在集羣裏面去使用我在本地開發好的Jar包,這個就是整個的一個開發和部署的一個流程。

掃碼獲取更多資訊:

相關文章
相關標籤/搜索