欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

基于Spark的混合推薦系統(tǒng)實(shí)戰(zhàn):從協(xié)同過濾到實(shí)時(shí)推薦

基于Spark的混合推薦系統(tǒng)實(shí)戰(zhàn):從協(xié)同過濾到實(shí)時(shí)推薦 簡(jiǎn)介這是一份基于Spark的電影推薦系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的完整課題資料面向大數(shù)據(jù)、推薦系統(tǒng)方向的畢業(yè)設(shè)計(jì)與課程設(shè)計(jì)人員也可供對(duì)協(xié)同過濾、內(nèi)容推薦算法感興趣的開發(fā)者參考。文檔以論文形式系統(tǒng)梳理了課題背景、國(guó)內(nèi)外研究現(xiàn)狀、Spark與MongoDB等關(guān)鍵技術(shù)并重點(diǎn)介紹了基于人口統(tǒng)計(jì)學(xué)、基于內(nèi)容、基于協(xié)同過濾三類推薦算法的原理與設(shè)計(jì)思路。系統(tǒng)分析部分涵蓋可行性與功能需求設(shè)計(jì)部分細(xì)化各推薦算法流程實(shí)現(xiàn)部分展示用戶登錄注冊(cè)、個(gè)性化推薦、電影搜索、用戶評(píng)分等核心功能測(cè)試部分給出功能與性能驗(yàn)證結(jié)果目錄結(jié)構(gòu)從緒論到致謝完整清晰可直接作為相關(guān)課題的參考藍(lán)本。資源包內(nèi)僅含單個(gè)DOCX文檔大小約7.46MB內(nèi)容以論文正文為主共一個(gè)文件便于查閱和編輯。目前已有207人學(xué)習(xí)下載適合需要快速掌握電影推薦系統(tǒng)整體架構(gòu)與研究思路的學(xué)生或開發(fā)者。1. 這個(gè)項(xiàng)目不只是論文一套能從登錄跑到推薦的完整系統(tǒng)電影推薦系統(tǒng)這類課題網(wǎng)上源碼不少但多數(shù)是單機(jī)跑個(gè) Python 腳本調(diào)一下 surprise 庫就完事談不上“系統(tǒng)”。這份資源不一樣——它是一份帶完整論文的工程實(shí)現(xiàn)后端用 Spark 做分布式計(jì)算MongoDB 存業(yè)務(wù)數(shù)據(jù)Redis 做緩存Elasticsearch 參與搜索前端還有 AngularJS 頁面。換句話說它不是 toy demo而是一條能沿著“用戶登錄 → 評(píng)分 → 離線統(tǒng)計(jì) → 實(shí)時(shí)推薦 → 詳情頁相似推薦”跑通的完整鏈路。我拆這份項(xiàng)目時(shí)最大的感受是它的核心不在協(xié)同過濾那幾行 ALS 代碼而在“三種推薦算法怎么分工”。基于人口統(tǒng)計(jì)學(xué)的離線推薦管冷啟動(dòng)和熱門榜基于內(nèi)容的實(shí)時(shí)推薦管用戶當(dāng)下行為協(xié)同過濾管個(gè)性化。單一算法都有各自的坑混合起來才是個(gè)能用的推薦系統(tǒng)。這套設(shè)計(jì)思路比代碼本身更值得讀。適合讀這份資源的人有三類做大數(shù)據(jù)課程設(shè)計(jì)或畢業(yè)設(shè)計(jì)的學(xué)生想把 Spark 推薦從“會(huì)調(diào) API”推進(jìn)到“能搭完整服務(wù)”的后端開發(fā)以及想找一個(gè)可復(fù)現(xiàn)的推薦系統(tǒng)基線工程、準(zhǔn)備加功能的算法工程師。下文我會(huì)把技術(shù)選型、模塊結(jié)構(gòu)、核心實(shí)現(xiàn)和運(yùn)行步驟一層層拆開最后給出我的改造建議。2. 整體架構(gòu)拆解Spark 計(jì)算、MongoDB 存儲(chǔ)、三套算法分工2.1 技術(shù)棧全景與數(shù)據(jù)流向這套系統(tǒng)的技術(shù)選型圍繞一個(gè)核心約束單機(jī)環(huán)境下模擬大數(shù)據(jù)處理流程同時(shí)保證每一層都有真實(shí)組件在跑。先看全景計(jì)算引擎Spark負(fù)責(zé)離線批量統(tǒng)計(jì)和實(shí)時(shí)流處理存儲(chǔ)層MongoDB 存用戶、評(píng)分、電影和推薦結(jié)果Redis 緩存熱點(diǎn)數(shù)據(jù)Elasticsearch 做電影搜索后端Spring Maven提供登錄、評(píng)分、推薦結(jié)果的 REST 接口前端AngularJS 2負(fù)責(zé)頁面渲染和交互集群形態(tài)偽分布式1 個(gè) Master 3 個(gè) Worker 用虛擬機(jī)模擬數(shù)據(jù)流向是這樣的用戶在前端頁面產(chǎn)生評(píng)分、點(diǎn)擊、搜索行為這些行為寫入 MongoDB 的業(yè)務(wù)表離線推薦任務(wù)用 Spark SQL 周期性從 MongoDB 讀取評(píng)分表跑統(tǒng)計(jì)和模型訓(xùn)練把結(jié)果寫回 MongoDB 的推薦結(jié)果表實(shí)時(shí)推薦則通過 Spark Streaming 消費(fèi)行為流結(jié)合用戶最近的評(píng)分記錄做基于內(nèi)容的相似推薦前端通過 Spring 后端接口讀取 MongoDB 里的推薦結(jié)果展示給用戶。這里有一個(gè)值得注意的設(shè)計(jì)決定MongoDB 同時(shí)承擔(dān)“業(yè)務(wù)數(shù)據(jù)庫”和“推薦結(jié)果數(shù)據(jù)庫”兩個(gè)角色。好的一面是技術(shù)棧干凈不用在 HBase 和 MySQL 之間做數(shù)據(jù)同步壞的一面是推薦結(jié)果表要按用戶維度設(shè)計(jì)好索引否則前端高頻讀取時(shí)會(huì)有性能壓力。實(shí)際工程里我會(huì)把推薦結(jié)果再拷一層到 Redis這個(gè)后面改造章節(jié)細(xì)說。2.2 離線推薦模塊基于人口統(tǒng)計(jì)學(xué)的四類統(tǒng)計(jì)任務(wù)離線推薦是這套系統(tǒng)的“底座”它解決的核心問題是冷啟動(dòng)新用戶沒有任何行為記錄時(shí)推薦什么答案是給所有人推一樣的榜單——?dú)v史熱門、近期熱門、高分電影、各類型 Top10。四個(gè)統(tǒng)計(jì)任務(wù)分別這樣設(shè)計(jì)歷史熱門影片的統(tǒng)計(jì)直接用 Spark SQL 從 MongoDB 的 ratings 表讀取評(píng)分記錄按電影 ID 分組統(tǒng)計(jì)評(píng)分人數(shù)取數(shù)量最多的前 N 部。這個(gè)邏輯簡(jiǎn)單粗暴但“評(píng)分人數(shù)多 熱門”這個(gè)假設(shè)在大多數(shù)場(chǎng)景下成立。近期熱門影片的統(tǒng)計(jì)在歷史熱門的基礎(chǔ)上加了時(shí)間窗口。實(shí)現(xiàn)方式是定義一個(gè) UDF把評(píng)分時(shí)間戳轉(zhuǎn)換成“是否在近一個(gè)月內(nèi)”的布爾標(biāo)記然后只統(tǒng)計(jì)窗口內(nèi)的評(píng)分。這個(gè) UDF 是理解 Spark SQL 自定義函數(shù)的好例子。電影平均評(píng)分的統(tǒng)計(jì)按電影 ID 聚合所有評(píng)分計(jì)算平均值寫入 AverageMovies 數(shù)據(jù)集。這個(gè)結(jié)果會(huì)用在詳情頁展示電影得分也會(huì)作為離線推薦的一個(gè)排序因子。各級(jí)別影片 Top10 的統(tǒng)計(jì)這是最復(fù)雜的一個(gè)。電影的 genres 字段是“動(dòng)作|冒險(xiǎn)|科幻”這種按豎線分隔的字符串需要先用 UDF 按|切分成數(shù)組再用explode展開成多行最后按每個(gè)類別分別計(jì)算評(píng)分 Top10。核心代碼見下一章。2.3 實(shí)時(shí)推薦與詳情頁推薦基于內(nèi)容的相似匹配實(shí)時(shí)推薦模塊用的是 Spark Streaming它接收用戶的行為流比如剛給某部電影打了高分然后做兩件事一是把行為寫入 MongoDB 作為后續(xù)離線訓(xùn)練的輸入二是立刻基于這部電影的內(nèi)容標(biāo)簽找相似電影推給用戶。這里的“相似”不是協(xié)同過濾算出來的用戶相似而是電影本身屬性類型、導(dǎo)演、主演的相似度用的是基于內(nèi)容的推薦算法。詳情頁推薦是實(shí)時(shí)推薦的“懶加載版本”用戶點(diǎn)進(jìn)某部電影詳情頁時(shí)后端才去計(jì)算這部電影的相似電影并返回。好處是不需要預(yù)先為每個(gè)用戶算好結(jié)果存儲(chǔ)開銷小壞處是首次訪問詳情頁會(huì)有計(jì)算延遲。在 Spark 環(huán)境下這個(gè)計(jì)算可以做成一次性的批處理任務(wù)把每部電影的相似 Top10 預(yù)先算好存起來而不是實(shí)時(shí)算。2.4 協(xié)同過濾模塊ALS 模型的定位論文里提到協(xié)同過濾算法也提到 Spark MLlib 里的 ALS。在這套系統(tǒng)里協(xié)同過濾不是唯一的推薦來源而是作為離線個(gè)性化推薦的補(bǔ)充。它的任務(wù)是從歷史的“用戶-電影-評(píng)分”矩陣中學(xué)習(xí)兩個(gè)隱因子矩陣——用戶特征矩陣和電影特征矩陣然后用矩陣乘法預(yù)測(cè)用戶對(duì)未看過電影的評(píng)分。但 ALS 有兩個(gè)天然痛點(diǎn)論文里也明確說了數(shù)據(jù)稀疏和冷啟動(dòng)。冷啟動(dòng)已經(jīng)靠人口統(tǒng)計(jì)學(xué)推薦兜底了數(shù)據(jù)稀疏則依賴我們輸入 ALS 的數(shù)據(jù)質(zhì)量。常見做法是把評(píng)分人數(shù)少于閾值的電影過濾掉再把評(píng)分矩陣做歸一化讓模型更容易收斂。這塊我在改造章節(jié)會(huì)給出具體參數(shù)建議。3. 核心實(shí)現(xiàn)逐段拆解從 MongoDB 讀取到推薦結(jié)果落地3.1 Spark SQL 讀取 MongoDB連接器與 DataFrame離線推薦的第一步是把 MongoDB 中的數(shù)據(jù)加載成 Spark DataFrame。項(xiàng)目里沒有用自定義讀取器而是直接用了官方 MongoDB Spark Connector。加載評(píng)分表和電影表的寫法如下import org.apache.spark.sql.SparkSession val spark SparkSession.builder() .appName(OfflineRecommender) .master(local[*]) // 偽分布式環(huán)境下這里也可以是 spark://hadoop102:7077 .config(spark.mongodb.input.uri, mongodb://hadoop102:27017/movie.ratings) .config(spark.mongodb.output.uri, mongodb://hadoop102:27017/movie.result) .getOrCreate() val ratingsDF spark.read.format(mongo) .option(uri, mongodb://hadoop102:27017/movie.ratings) .load() .select(uid, mid, score, timestamp) ratingsDF.show(5)注意select里只取了四個(gè)字段uid用戶 ID、mid電影 ID、score評(píng)分、timestamp評(píng)分時(shí)間戳。之所以要顯式限定字段是因?yàn)?MongoDB 的文檔結(jié)構(gòu)往往比關(guān)系表松散early 篩選能顯著減少 Spark 在 shuffle 階段的數(shù)據(jù)量。偽分布式環(huán)境下資源本來就緊張這個(gè)習(xí)慣能幫你少踩不少 OOM 的坑。3.2 UDF 實(shí)現(xiàn)電影類別切分與近期熱門統(tǒng)計(jì)基于人口統(tǒng)計(jì)學(xué)的推薦里兩個(gè)核心統(tǒng)計(jì)邏輯都需要自定義 UDF。第一個(gè)是把電影的 genres 字符串切分成數(shù)組第二個(gè)是判斷評(píng)分時(shí)間是否落在近一個(gè)月窗口內(nèi)。這段代碼集中展示 UDF 的注冊(cè)和用法import org.apache.spark.sql.functions._ import org.apache.spark.sql.expressions.UserDefinedFunction // 按 | 切分電影類別如 Action|Adventure|Sci-Fi - [Action, Adventure, Sci-Fi] val splitGenres: UserDefinedFunction udf((genres: String) { if (genres null || genres.trim.isEmpty) Array.empty[String] else genres.split(\\|).map(_.trim) }) // 判斷評(píng)分時(shí)間是否在近30天內(nèi) val isRecent: UserDefinedFunction udf((ts: Long) { val thirtyDaysAgo System.currentTimeMillis() - 30L * 24 * 3600 * 1000 ts thirtyDaysAgo }) // 各類型電影 Top10 統(tǒng)計(jì) val genreTopMovies ratingsDF .join(moviesDF, ratingsDF(mid) moviesDF(mid)) .withColumn(genre, explode(splitGenres(moviesDF(genres)))) .groupBy(genre, mid) .agg(avg(score).as(avg_score), count(mid).as(score_count)) .withColumn(rank, row_number().over(Window.partitionBy(genre).orderBy(desc(avg_score), desc(score_count)))) .filter(col(rank) 10) .drop(rank)genreTopMovies這段邏輯的關(guān)鍵點(diǎn)在explode它把“一部電影屬于三個(gè)類別”這一行數(shù)據(jù)展開成三行每個(gè)類別一行這樣后續(xù) groupBy 才能按類別獨(dú)立排序。窗口函數(shù)row_number() over partitionBy負(fù)責(zé)在每個(gè)類別內(nèi)部取評(píng)分最高的 10 部。如果你的數(shù)據(jù)里有一些只有一兩人評(píng)分的電影建議在agg之后加一個(gè)過濾條件只保留score_count 10的影片否則“平均分第一名”容易被單條高分評(píng)價(jià)刷上去。近期熱門統(tǒng)計(jì)更簡(jiǎn)單對(duì) ratings 表用 UDF 過濾近一個(gè)月的評(píng)分然后按 mid 聚合計(jì)數(shù)取 Top N 寫入 RateMoreRecentlyMovies 集合。3.3 ALS 協(xié)同過濾訓(xùn)練與個(gè)性化推薦ALS 是 Spark MLlib 里最成熟的協(xié)同過濾實(shí)現(xiàn)。代碼不長(zhǎng)但調(diào)參直接影響推薦質(zhì)量import org.apache.spark.ml.recommendation.ALS import org.apache.spark.ml.evaluation.RegressionEvaluator // 劃分訓(xùn)練集和測(cè)試集測(cè)試集用于評(píng)估模型誤差 val Array(training, test) ratingsDF.randomSplit(Array(0.8, 0.2)) val als new ALS() .setRank(20) // 隱因子數(shù)量越大表達(dá)能力越強(qiáng)但過擬合風(fēng)險(xiǎn)也越高 .setMaxIter(10) // 迭代次數(shù)日志里會(huì)顯示每次迭代的 loss .setRegParam(0.1) // 正則化參數(shù)控制過擬合 .setUserCol(uid) .setItemCol(mid) .setRatingCol(score) .setColdStartStrategy(drop) // 預(yù)測(cè)時(shí)遇到未見過的用戶/電影直接丟棄而非報(bào)錯(cuò) val model als.fit(training) // 為每個(gè)用戶生成 Top20 推薦 val userRecs model.recommendForAllUsers(20) userRecs.write.mode(overwrite).format(mongo) .option(uri, mongodb://hadoop102:27017/movie.UserRecs) .save()setColdStartStrategy(drop)是必須強(qiáng)調(diào)的一個(gè)配置。ALS 模型在預(yù)測(cè)時(shí)如果遇到訓(xùn)練集里沒出現(xiàn)過的用戶或電影默認(rèn)會(huì)拋異常。線上系統(tǒng)里每天都有新用戶新電影所以必須設(shè)置成drop或nan丟棄無法預(yù)測(cè)的條目而不是讓整個(gè)批次失敗。rank 參數(shù)常見取值范圍是 10 到 50regParam 是 0.01 到 0.1調(diào)參時(shí)優(yōu)先觀察測(cè)試集上的 RMSE均方根誤差。3.4 基于內(nèi)容的相似度計(jì)算標(biāo)簽向量與余弦相似度基于內(nèi)容的推薦核心是把電影轉(zhuǎn)成向量然后算向量相似度。這里用的是最簡(jiǎn)單的標(biāo)簽映射法把電影的 genres、主演、導(dǎo)演拼接成文本分詞后映射成 TF-IDF 向量再算兩兩之間的余弦相似度。import org.apache.spark.ml.feature.{HashingTF, IDF, Tokenizer} import org.apache.spark.ml.linalg.SparseVector // 構(gòu)造電影內(nèi)容描述列 val movieContent moviesDF .withColumn(content, concat_ws( , col(genres), col(actors), col(directors))) // 分詞 TF-IDF得到每部電影的特征向量 val tokenizer new Tokenizer().setInputCol(content).setOutputCol(words) val hashingTF new HashingTF().setInputCol(words).setOutputCol(rawFeatures).setNumFeatures(1000) val idf new IDF().setInputCol(rawFeatures).setOutputCol(features) val pipeline new Pipeline().setStages(Array(tokenizer, hashingTF, idf)) val featureModel pipeline.fit(movieContent) val movieFeatures featureModel.transform(movieContent) movieFeatures.select(mid, features).show(5)這里使用了HashingTF而不是CountVectorizer主要考慮是 HashingTF 不需要預(yù)先構(gòu)建詞典適合跑批任務(wù)缺點(diǎn)是哈希碰撞會(huì)引入噪聲setNumFeatures設(shè)得越大碰撞概率越低。算相似度時(shí)對(duì)每個(gè)電影向量和其余所有向量做點(diǎn)積并歸一化就能得到余弦相似度。如果電影數(shù)量很大更聰明的做法是先用 ALS 電影因子向量代替 TF-IDF 向量因?yàn)?ALS 訓(xùn)練出的隱因子已經(jīng)隱含了“同類型電影向量接近”的特性。3.5 后端接口與前端調(diào)用的銜接推薦結(jié)果算完后展示層還需要后端接口。Spring 后端提供了四類核心接口登錄注冊(cè)、獲取首頁推薦、詳情頁相似推薦、提交評(píng)分。前端 AngularJS 通過 HTTP 調(diào)用這些接口渲染推薦列表RestController RequestMapping(/api/recommend) public class RecommendController { Autowired private MongoTemplate mongoTemplate; // 首頁推薦讀取離線推薦表按用戶返回混合結(jié)果 GetMapping(/home/{uid}) public ListRecommendation home(PathVariable String uid) { Query query new Query(Criteria.where(uid).is(uid)); ListUserRecs userRecs mongoTemplate.find(query, UserRecs.class, UserRecs); return userRecs.stream() .flatMap(rec - rec.getRecs().stream()) .sorted((a, b) - b.getScore().compareTo(a.getScore())) .limit(20) .collect(Collectors.toList()); } // 提交評(píng)分寫入 MongoDB同時(shí)作為實(shí)時(shí)推薦的觸發(fā)信號(hào) PostMapping(/rate) public Result rate(RequestBody RatingRequest request) { mongoTemplate.save(request, ratings); return Result.success(); } }前端接到recommendations數(shù)組后按分?jǐn)?shù)從高到低渲染成卡片列表。這個(gè)接口的寫法比較直白但它把分層關(guān)系講清楚了前端只認(rèn) userId不關(guān)心推薦結(jié)果的來源是離線統(tǒng)計(jì)還是協(xié)同過濾后端通過對(duì)UserRecs聚合實(shí)現(xiàn)多路推薦融合。如果你想加一路“熱門兜底”在接口里把GenresTopMovies也讀出來混進(jìn)去就行。4. 環(huán)境搭建與程序運(yùn)行偽分布式 Spark 集群怎么跑起來4.1 虛擬機(jī)模擬四節(jié)點(diǎn) Spark 集群論文的實(shí)際運(yùn)行環(huán)境是單機(jī)偽分布式一臺(tái)物理機(jī)上用 VMware 開三臺(tái) CentOS 虛擬機(jī)搭一個(gè)四節(jié)點(diǎn) Spark 集群1 Master 3 Worker三臺(tái)機(jī)器的主機(jī)名分別設(shè)計(jì)為 hadoop102、hadoop103、hadoop104。之所以從 hadoop102 開始編號(hào)是為了給 Namenode 留出 101 的位置如果是生產(chǎn)環(huán)境你還會(huì)加一個(gè) 105 做備用 Master。搭建步驟如下在三臺(tái)虛擬機(jī)上分別安裝 JDK 并配置JAVA_HOME配置 SSH 免密登錄三臺(tái)機(jī)器兩兩互信修改/etc/hosts把三個(gè)主機(jī)名映射到固定 IP在 Spark 的conf/slaves文件里填寫三個(gè) Worker 主機(jī)名修改spark-env.sh指定SPARK_MASTER_HOSThadoop102、SPARK_MASTER_PORT7077完成后在 Master 節(jié)點(diǎn)執(zhí)行start-all.sh瀏覽器訪問hadoop102:8080Worker 列表里能看到三個(gè)節(jié)點(diǎn)說明集群搭好了。4.2 MongoDB 集合設(shè)計(jì)與啟動(dòng)MongoDB 在 Windows 本機(jī)運(yùn)行負(fù)責(zé)存業(yè)務(wù)表和推薦結(jié)果表。數(shù)據(jù)庫里設(shè)計(jì)了兩類集合一類是原始數(shù)據(jù)——User用戶、Ratings評(píng)分、Movies電影另一類是推薦結(jié)果——AverageMovies、GenresTopMovies、RateMoreMovies、RateMoreRecentlyMovies、UserRecs。啟動(dòng)方式最簡(jiǎn)單命令行直接跑mongod --dbpath /data/db --port 27017 --bind_ip 0.0.0.0要注意的是--bind_ip 0.0.0.0否則虛擬機(jī)里的 Spark 應(yīng)用連不上 Windows 宿主機(jī)上的 MongoDB。這是偽分布式環(huán)境里的常見坑后面避坑章節(jié)還會(huì)細(xì)說。業(yè)務(wù)表創(chuàng)建之后用mongoimport把 ratings.dat 和 movies.dat 導(dǎo)入即可。4.3 Redis 與 Elasticsearch 配置Redis 在 Linux 虛擬機(jī)里運(yùn)行主要給實(shí)時(shí)推薦模塊做緩存緩存用戶最近評(píng)分記錄和熱門推薦結(jié)果。配置項(xiàng)只需要改兩處bind 0.0.0.0允許遠(yuǎn)程訪問maxmemory設(shè)一個(gè)合理上限如 2GB避免緩存無限增長(zhǎng)把內(nèi)存吃光。Elasticsearch 的作用是搜索。電影搜索功能沒有走 MongoDB 的模糊查詢而是把電影標(biāo)題、類別、主演信息同步到 ES用 ES 的倒排索引做全文檢索。配置上需要注意 ES 的network.host要改成虛擬機(jī)能訪問的 IPdiscovery.type設(shè)為single-node否則單機(jī)模式會(huì)因組播發(fā)現(xiàn)失敗而啟動(dòng)異常。4.4 系統(tǒng)啟動(dòng)順序與驗(yàn)證整個(gè)系統(tǒng)啟動(dòng)依賴順序很關(guān)鍵錯(cuò)了會(huì)出現(xiàn)“Spark 任務(wù)提交成功但讀寫數(shù)據(jù)失敗”的怪問題# 1. 啟動(dòng) MongoDBWindows 宿主機(jī) mongod --dbpath /data/db --port 27017 --bind_ip 0.0.0.0 # 2. 啟動(dòng) Redishadoop103 redis-server /etc/redis/redis.conf # 3. 啟動(dòng) Elasticsearchhadoop104 elasticsearch -d # 4. 啟動(dòng) Spark 集群hadoop102 Master start-all.sh # 5. 啟動(dòng)后端 Spring 服務(wù)WindowsIDEA 里直接 Run mvn spring-boot:run # 6. 前端 AngularJS 通過 Nginx 或開發(fā)服務(wù)器訪問 localhost:8088啟動(dòng)完成后驗(yàn)證路徑瀏覽器訪問localhost:8088能看到登錄頁登錄后首頁能看到“熱門推薦”“近期熱門”“高分電影”三個(gè)榜單點(diǎn)進(jìn)任何一部電影詳情頁能看到相似電影給任意電影打 5 分后隔幾秒刷新首頁實(shí)時(shí)推薦區(qū)應(yīng)該出現(xiàn)與剛評(píng)分電影類型相近的影片。這四條驗(yàn)證過了系統(tǒng)鏈路就算通了。4.5 推薦任務(wù)的手動(dòng)觸發(fā)離線推薦任務(wù)如果用spark-submit提交可以做成 jar 單獨(dú)跑spark-submit \ --class com.movie.recommender.OfflineRecommender \ --master spark://hadoop102:7077 \ --executor-memory 1G \ movie-recommender-1.0.jar--executor-memory在偽分布式環(huán)境下不要超過 2G。三臺(tái)虛擬機(jī)共享一臺(tái)物理機(jī)的內(nèi)存給多了反而會(huì)因?yàn)槲锢韮?nèi)存不足引起整機(jī) swapSpark 任務(wù)會(huì)越跑越慢最后表現(xiàn)為 Web UI 上任務(wù)卡在 SCHEDULED 狀態(tài)不動(dòng)。5. 常見問題避坑偽分布式環(huán)境下的血淚經(jīng)驗(yàn)5.1 Spark 任務(wù)報(bào)錯(cuò)找不到 MongoDB 驅(qū)動(dòng)類現(xiàn)象提交離線推薦任務(wù)后任務(wù)在讀取 MongoDB 階段拋出ClassNotFoundException: com.mongodb.MongoClient或類似驅(qū)動(dòng)類缺失錯(cuò)誤。原因Spark 集群的 Executor 節(jié)點(diǎn)沒有加載 MongoDB Connector 的依賴 jar。本地 IDEA 運(yùn)行時(shí)依賴在 classpath 里沒問題但spark-submit提交到集群后Executor 的 classpath 是獨(dú)立的。解決打包時(shí)把依賴打進(jìn) fat jar或者提交任務(wù)時(shí)用--packages org.mongodb.spark:mongo-spark-connector_2.11指定依賴。從那以后我每次提交 Spark 任務(wù)都強(qiáng)制檢查一遍--packages列表和代碼里 import 的包一一對(duì)應(yīng)。5.2 Executor 頻繁 OOM任務(wù)卡死在 SCHEDULED 狀態(tài)現(xiàn)象離線統(tǒng)計(jì)任務(wù)在跑大表聚合時(shí)報(bào) Executor OOM日志里有java.lang.OutOfMemoryError, Web UI 里看到多個(gè) Executor 處于 FAILED 狀態(tài)。原因偽分布式集群的內(nèi)存總量有限三臺(tái) Worker 共享物理內(nèi)存。默認(rèn)配置下 Spark 會(huì)為每個(gè) Executor 分配物理內(nèi)存的很大比例多個(gè) Executor 疊加直接吃滿內(nèi)存。另外讀取 MongoDB 時(shí)如果沒有提前 select 字段DataFrame 會(huì)帶著大量冗余字段參加 shuffle內(nèi)存壓力更大。解決第一spark-env.sh里把SPARK_WORKER_MEMORY降到 2G提交任務(wù)時(shí)--executor-memory 1G第二所有 Spark SQL 讀取后的第一步就是select精簡(jiǎn)字段第三對(duì)特別大的 ratings 表先按 uid 做一次repartition再聚合。這條優(yōu)化在真實(shí)集群同樣適用只是真實(shí)集群閾值可以放寬。5.3 UDF 在集群模式下拋序列化異常現(xiàn)象本地跑沒問題spark-submit提交到集群后報(bào)Task not serializable或org.apache.spark.SparkException: Task not serializable錯(cuò)誤棧指向代碼里定義的 UDF。原因如果 UDF 內(nèi)部引用了外部對(duì)象比如配置類實(shí)例、SparkSession 以外的全局變量這個(gè)外部對(duì)象必須可序列化否則閉包無法在 Executor 間傳輸。本地模式下 Driver 和 Executor 在同一 JVM問題不會(huì)暴露。解決UDF 內(nèi)部不要引用外部非序列化對(duì)象把所有依賴封裝成Serializable案例類或者在 UDF 內(nèi)部直接創(chuàng)建所需對(duì)象。我的習(xí)慣是任何 UDF 先問自己“如果它在另一臺(tái)機(jī)器上執(zhí)行需要帶什么東西”只帶字符串和基本類型就是最安全的。5.4 Elasticsearch 啟動(dòng)后外部無法訪問現(xiàn)象ES 在本機(jī)啟動(dòng)正常curl localhost:9200有響應(yīng)但在另一臺(tái)機(jī)器上訪問hadoop104:9200超時(shí)或拒絕連接。原因Elasticsearch 默認(rèn)只綁定127.0.0.1虛擬機(jī)上的 Spark 應(yīng)用當(dāng)然訪問不到。解決修改elasticsearch.yml設(shè)置network.host: 0.0.0.0同時(shí)設(shè)置discovery.type: single-node否則單節(jié)點(diǎn)會(huì)因?yàn)?bootstrap checks 拒絕啟動(dòng)。改完重啟 ES 后用curl http://hadoop104:9200驗(yàn)證。5.5 前端頁面能打開但登錄后一直跳回登錄頁現(xiàn)象localhost:8088 的頁面加載正常輸入用戶名密碼后接口也能返回成功但頁面刷新后又回到登錄頁。原因AngularJS 前端把登錄狀態(tài)存到了瀏覽器 localStorage但后端接口跨域或 Cookie 配置了Secure屬性導(dǎo)致 Cookie 沒寫進(jìn)去。Spring 后端返回登錄態(tài)時(shí)如果沒有正確配置跨域頭瀏覽器會(huì)攔截寫入。解決后端在 WebMvcConfigurer 里配置 CorsRegistry允許前端域名跨域請(qǐng)求帶上 Cookie同時(shí)確認(rèn)登錄接口的響應(yīng)頭包含Access-Control-Allow-Credentials: true。如果用了 Nginx 代理前端還要檢查代理配置是否把 Cookie 頭透?jìng)髁恕?. 二次開發(fā)改造思路把“能跑的推薦”變成“好用的推薦”讀完源碼、跑通鏈路之后真正的價(jià)值在于改造成符合自己場(chǎng)景的系統(tǒng)。我會(huì)從四個(gè)層面動(dòng)刀按投入產(chǎn)出比排序。第一層推薦結(jié)果的加權(quán)融合。當(dāng)前首頁接口直接合并 UserRecs 排序本質(zhì)上還是單一算法輸出輪流展示。更穩(wěn)的做法是給每路推薦打分ALS 結(jié)果乘 0.5基于內(nèi)容的結(jié)果乘 0.3熱門榜乘 0.2做加權(quán)取 TopN。這幾個(gè)權(quán)重可以先用固定值跑一周看各路的點(diǎn)擊轉(zhuǎn)化率再調(diào)。代碼改動(dòng)只在 RecommendController 里加一個(gè)融合函數(shù)不動(dòng)底層。第二層給 ALS 加一個(gè)數(shù)據(jù)預(yù)處理。當(dāng)前 ratings 表是原始評(píng)分直接進(jìn)模型數(shù)據(jù)稀疏時(shí)會(huì)訓(xùn)練出大量零向量。建議訓(xùn)練前過濾掉評(píng)分人數(shù)少于 20 的電影對(duì) score 做標(biāo)準(zhǔn)化到 0-1 區(qū)間。能明顯提升收斂速度和推薦精度。第三層實(shí)時(shí)推薦的觸發(fā)源擴(kuò)展。當(dāng)前實(shí)時(shí)推薦只響應(yīng)“評(píng)分”事件。改造方向是把“點(diǎn)擊詳情頁”“搜索電影”也作為行為流輸入對(duì)點(diǎn)擊行為降權(quán)即可。改動(dòng)工作量集中在行為日志接入和權(quán)重映射。第四層把熱點(diǎn)數(shù)據(jù)推進(jìn) Redis。詳情頁相似推薦和首頁熱門榜都可以做成定時(shí)任務(wù)預(yù)熱進(jìn) Redis前端接口只讀緩存降低 MongoDB 讀壓力。改造點(diǎn)是在離線任務(wù)結(jié)束后加一步寫 Redis 的操作。驗(yàn)證改造效果的方法不需要上線 A/B準(zhǔn)備兩組用戶一組走老邏輯一組走新邏輯各推 50 部電影比較兩組用戶的點(diǎn)擊率和評(píng)分?jǐn)?shù)量。這個(gè)比較可以在 MongoDB 里直接用聚合查詢完成不用額外搭數(shù)據(jù)平臺(tái)。這套工程我前前后后拆過兩次每次都被同一個(gè)問題卡住偽分布式環(huán)境下只要集群一重啟MongoDB 里的推薦結(jié)果表和 Redis 緩存就不同步。從那以后我每次改完離線任務(wù)都強(qiáng)制走一遍“清空結(jié)果表 → 重跑離線批 → 刷新 Redis 預(yù)熱”的流程確認(rèn)三份數(shù)據(jù)一致才交給前端驗(yàn)收。做推薦系統(tǒng)數(shù)據(jù)一致性和算法效果一樣影響體驗(yàn)——希望這篇拆解能幫你少走我來回折騰的那幾步路。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色色丁香| AV中文网| 色五月色综合| 2021日韩无码| 天天色综网| 这里只有精品偷拍| 婷婷综合天堂| 狠狠搞综合色| 婷婷香蕉香| 五月天播播中文字幕| 久99久精品视频| 激情五月天 婷婷| 亚洲色五月天是什么| 99精品视频播放| 天天爱综合网| 成人av播放| 涩综合婷婷| 少妇激情五月婷婷| 一区二区三区XXXXXX| 99自拍视频在线观看| 五月丁香六月婷精品视频| 第四色色六月色综合| 超碰不卡在线| 性爱电影科技贸易有限公司| 99WWW免费视频| 99re8这里只有精品99re8热视频| 五月丁香激情深爱婷婷| 六月婷婷激情图片| 五六月婷婷久久| 97精品欧美91久久久久久久| 婷婷伊人五月| 丁香五月天AV在线| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 乱色色色| 婷婷五月综合婷婷| 久久婷婷激情久久| 橾逼网| 超碰在线中文字幕| 成人草榴视频| 丁香五月激情婷婷| 丁香六月天婷婷开心综合| 91丁香| 久久久18| 日韩色久| 热思思| 在线成人网站| 久久99免费视频| 97色干| 婷婷五月丁香色情| 超碰AV在线| 玖玖婷婷免费| 丁香五月色| 狠狠做婷婷| 久色网址| 亚洲操B视频| 久草热8精品视频在线观看| 丁香五月婷婷网| 丁香六月av| 97碰碰碰| 久久久精品婷婷五月天| 亚洲操操操| 色色色com| 五月天色婷伊人| 五月天伊人久久| 亚洲精品视频在线播放| 日本色色视频| 色五月婷婷自拍| 色五月婷婷五月天| 超碰99在线观看| 狠狠干综合网| 五月丁香色婷| 国产永久一二一起草| 黄色片精品| 5月丁香综合图区| 欧美性爱五月天| 色婷婷亚洲五月天| 久久久久人妻中文| 99色热视频| 6月丁香婷婷| 五月婷免费视频| 精品爱欲五| 天天爱天天做天天操| 五月天婷婷激情小说电影| 丁香五月天殴美激情| 大香蕉人妻| 色婷婷综合丁香五月天| 男人的天堂av俄罗斯热| 夜夜嗨一区二区三区直播内容 | 99热爱爱干干日| 色亭亭九月| 婷婷99狠狠| 夜夜操狠狠操| 五月天婷婷无码| 婷婷区日本| 亚洲永久免费| ′久久99一| 九九精品自拍| 五月丁香婷婷成人网| 婷婷免费成人视频| 狠狠色婷婷7| 国产ava| 免费在线观看av网站| 91啪啪| 久九色| 婷婷爱五月| 热成人网| 99秘 在线| 深爱激情网五月| 婷婷久久五月| 大香蕉av在线| 九九热这里只有精品首页| AV在线免费网站| 日本3级片一区2区| 婷婷丁香花五月天| 欧美大香蕉视频| 亚洲色色五月| 丁香五月综合久久| 久久精品系列| 久久人人九九| 人人操AV| 99色这里| 婷婷 激情 五月| 天天综合亚洲综合网天天αⅴ| 五月丁香激情怕怕| 婷婷射图五月天| 97干在线观看| 天天射美女| 91人人澡人人爽人人看| 免费无码毛片一区二区A片| 亚洲激情婷婷| 婷婷五月天伊人| 欧美熟女99| 美女激情综合| 久久久噜噜噜久久人妻| www.色婷婷| 99热免费| 情欲禁地| 色九月综合| 色色六月| 天天肏高清在线| 日本视频欧美观看免费| 狠狠第四色| 狠狠 久久| 五月婷中文娱乐综合| 久久亭亭电影| 九九色之九九色之88| 人人插9| 日韩日比视频| 九九青青草成人| 久久伊人婷婷| 天天拍夜夜撸| 五月丁香六月情亚洲| 激情五月少妇| AV色婷婷| 色色A| 日本天天操| 夜精品无码A片一区二区蜜桃| 狠狠精品干练久久久无码中文字幕| 国产人妻人伦精品一区二区| 99久久婷婷国产综合亚洲| 97人妻人人| 97碰成超视频免费视频| 亚洲激情视频在线观看| 天天更新天天亚洲| 激情综合网五月激情| 婷婷五月天第三页| 婷婷五月婷婷| 丁香五月综合| 婷久久高清| 精品一区二区三区三区| 碰碰91| 色狠狠五月天| 婷婷综合六| 99这里只有精品|v| 五月天色色色| 婷婷色色综合| 99爽视频| 久久香蕉婷婷五月天| 人妻尝试久久久久久久久久久久| 亚洲综合另类| www激情| 婷婷伊人网| 亚洲精品久久久无码| 丁香五月天久久| 日本三级日本黄色| 激情综合色网| 婷婷五月天另类网站| 五月天婷a| 99免费在线视频| 五月开心久久| 好大好粗嗯啊-一级黄色大片免费观看-成人AV| 色狠狠综合网| 五月丁香久久久| 丁香婷婷五色月| 激情綜合W W W,激情五月天| 五月丁香五月综合欧美| 亚洲成AV人片在线观看| 亚洲第一黄网| 少妇激情五月婷婷| 国产婷婷色综合AV蜜臀AV| 婷婷 丁香 精品| 天天爽夜夜操| 欧美123区免| 99久久婷婷国产综合精品草原| 成人婷婷桔色| 67194中文字幕| 色色综合网站| www91在线| 伊人五月天男人的天堂在线| 欧美色色色色色| 久久这里只有精品8| 国产婷婷色综合AV蜜臀AV| 天天日中文| 97丁香五月| 五月婷婷亚洲天堂激情在线| 女人天堂AV| 色五月婷婷五月天| 久热re在线视频| 婷婷五月天丁香| 五月婷婷乱| 天天干,天天日| 激情五月激情综合网| 激情玖玖综合网| 亚洲中文字幕网| 亚洲欧美综合7777色婷婷| 天天拍久久| www.91操| 大香蕉在线观看9| 久久欧洲久久| 热99免费在线| 丁香五月婷婷影视先锋| www.久久爱| 91碰碰碰| 五月丁香网站| 久久综合婷婷激情| 五月综合视频在线| 国产精品电影网| 黄色中文字目| 五月欧美色播| 五月婷婷激情| 中文字幕性爱视频| 看黄的网站18禁| 色五月天成人| 欧美 色婷婷| 九热久| 五月丁香啪啪啪啪| 激情综合五月| 丁香五月91| 色婷婷五月天不卡| 99热在线精品观看| 欧美色色色色色色| 狠狠色噜噜色狠狠狠综合久久成人波| 亚洲最大成人综合网720P| 日韩 中文 欧美| 99大香蕉| 亚洲va在线| 99人人干| 五月丁香六月婷婷精品| 丁香婷婷基地| 丁香五月天婷婷大香蕉| 丁香婷婷五色月| 日韩aaa| AAA久久久AAA久久久AAA| 日韩色色视频www| av九九| 丁香六月| 天天舔天天爽| 性爱激情小说AV五月丁香花| 玖玖99婷婷| 狠狠色婷| 欧美成人精品一区二区| 少妇AB又爽又紧无码网站| 在线观看中文字幕亚洲| 综合狠狠干| 怡春院天天干| 性天天中文网| 国产操B| 亚洲日韩人妻操逼| 婷婷五月天综合网| 国产精典视频在线观看| 夜夜骑天天操| 人妻中文字幕精品| 99色精品| av免费在线网站| 俺也去在线视频| 色青青电影色五月| 五月婷婷无码专区| 婷婷99视频全集高清| 激情五月综合六月丁香婷婷狠狠干| 99啪啪| 97人人操在线| 日韩性视频| 啪啪五月综合| 五月婷婷丁香婷婷| Caop在线| 思思热久久久在线| 欲求不满的人妻| 色五月亚洲开心网| 久久天堂女人| 玖玖热视频| 五月婷婷 自拍| 华人在线免费| 五月天激情综合网| 超碰99资源站| 午夜亚洲国产精品av一区二区| 99久超碰| 激情五婷网| 大香蕉婷婷色| 婷婷五月激情四月综合| 亚洲中文字幕在线观看| 爱草视频在线| 五月久久丁香| 婷婷五月丁香六月| 久久婷婷色综合| 色色激情网| 97操在线视频| 欧洲色色| 精品成人在线观看| 玖玖精品视频| 天天草天天舔| 任你爽在线视频| 五月色丁香视频精品| 黄色短视频在线观看| 色欲资源网| 天天久久婷婷| 91人操人人人操人| 亚洲五月天色| 国产无遮挡又黄又爽免费网站| 欧美韩日AAA网站| 99热精品在线| 久久婷婷五月综合色天| 天天拍天天操| 亚洲综人色综网| 日本片日本片祼观看网站在线看中文版网页在线看 | 婷婷伊人| 丁香六月亚洲综合| 操操熟女| 人妻久久久久久| 亚洲AV综合在线观看| 激情五月天在线视频| 六月丁香啪| 日日操夜夜擼| 欧美五月婷婷| 国产avapp 网| 激情丁香五月| 色偷偷色婷婷| 97色婷婷| 天天色中文字幕女优AV| 婷婷娌伦网| 一级性感黄色内射视频| 成人做爰高潮A片免费视频| 校园激情 亚洲| 亚洲婷婷综合视频| 色5月婷婷色| 在线观看熟女少妇| 7777久久亚洲中文字幕| 久久久久久久97| 六月丁香视频网站| 无码一区二区三区四区五区91c| 色婷婷六月天| 狠狠色官网| AV变态另类一区二区| 婷婷操久久| 在线成人网址| 免费黄网不卡AV| 激情五月综合网| 99这里只有| 99热青青草原| 日韩成人电影在线播放| 欧美成人猛片AAAAAAA| 五月天国产婷婷精品视频在线| 婷五月天| 丁香婷婷久久| 日本va欧美va国产激情| 久热这里这里有精品| 丁香五月婷婷国产在线| 人人摸人人摸| 综合一本道| 超碰93在线观看| 婷婷综合五月| 常久最新免费的色吊丝| 五月丁香| 做爰丰满少妇1313| 五月婷婷色播| 色之综合网| 亚洲免费电影2| 偷拍五月丁香| 亚洲欧洲中文日韩久久AV乱码| 五月综合色| 久久这里只有精品视频15| 亚洲激情五月天| 六月丁香婷婷拍拍| 五月丁香婷婷啪啪综合| 欧美成人猛片AAAAAAA| 色婷久| 天天干狠狠操| 五月丁香啪啪啪啪| 99久久終合| 色婷婷丁香| 97韩国久久电影院| 99丁香五月婷| 亚洲天堂碰碰婷婷| 中文字幕无码人妻少妇免费视频| 久热黄色| 丁香六月无码播放| 亚洲视频另类| 五月天色综合| 婷婷色情网| 99爱视频免费看| 五月丁香六月婷婷综合在线| 亚洲xx网| 婷婷色资源| 五月婷婷在线免费观看| 日本va欧美va欧美| 九九综合久久丁香婷婷,开心激情综合网| ady狠狠入| 开心五月色婷婷综合开心网| 99热爱爱干干日| 色婷婷五月天小说| Av狠狠色丁香婷| 99视频久久久| 亚洲无码猫咪| 伊人五月婷| 丁香五月在线观看| 久久99激情| 激情六月一二| 森林影视大全,最好看的2019年视频 | 丁香婷婷影院| 麻豆雪千夏| 天天摸夜夜夜| 婷婷五月丁香综合激情小说| 日本久久99| 99热超| 丁香婷婷成年| 伊人激情AV一区二区三区| 激情五月综合网最新| 成人丁香婷婷| 五月婷婷网站| 九九成人精品| 色播五月天天| 丁香五月天偷拍| 久久婷网| 先锋资源婷婷| 午夜色丁香| 2017狠狠干| 五月伊人婷婷| 99热这里只有精品官网| 插插五月天| Av性爱网| wwwss在线观看| 亚洲性爱电影| 日韩性爱AV| 丁香六月啪| 亭亭色色五月天| 日亚二欧美| 五月丁香六月在线| 99热在这里只有精品| 台湾佬天天日丁香婷婷五月天| 婷婷丁香色五月天久久88| XX久久| 久久99看免费| 婷婷五月丁香超碰| 九九大香蕉黄色影院| 一区二区aV电影免费看| 4399无码视频二区| 亚洲av另类在线观看| 久久人人做人人妻人人玩精品va| 老师的粉嫩小又紧水又多A片视频| 丁香婷婷久久| 777精品久无码人妻蜜桃| 九九热99热| 久久久婷婷婷| 久久激情网| 综合色色网| 67194成I人在线观看线路1| 991精品在线视频| 久久精品人妻| 91九色国产熟女| 91精品久久久久久久久| 情色婷婷五月天| 国产精品成人AV在线| 色婷婷偷拍| 九月婷婷色色| 五月丁香婷婷在线| www.99热视频| 久热超碰| 超碰日韩人妻在线| 日日狠狠久久偷偷四色综合免费| 色情五月停停丁香| 五月婷婷激情| 99re热在线视频| 99操| WWW.桔色成人.COM| 99在线视频观看| 久久五月丁香综合| 亚洲人人操| 国产1区2区3区| 日韩一级片| www.婷婷| 五月亚洲激情| 婷婷亚洲激情在线观看视频 | 91久久五月天| 婷婷视频网| Xx色综合| 久久久99精品| 丁香五月婷婷在线| 亚洲九区| 拍真实国产伦偷精品| 色色网站毛片| 婷婷丁香色性爱| 91精品无码久久久久久五月天| 人人干女人| 久久三级视频| 五月婷婷激情色情网| 5月丁香六月婷婷| 丁香五月色情| 99免费在线视频| 丁香六月啪| 狠狠狠狠狠| 在线观看日韩12345区| 日本九九九九九九| 日韩成人精品中文字幕| 亚洲久久婷婷| 九九精品亚洲| 大香蕉AV在线| 天天视频精品9| 91免费看片| 久久99热这里只有| 免费试看小视频 99| 婷婷五月天激情基地| 99色五月| 国产精品美女久久久久AV超清 | 激情五月婷婷| 亚洲av无码精品色午夜| 亚洲国产精品成人免费一区久久久在线观看AAAA | 国内精品玖玖| 在线成人视频免费| 六月丁丁香| 五月丁香久久激情综合| 六月99天天婷婷激情综合| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 在线视频婷婷| 91九色在线视频| 伊人丁香六月婷婷| www.狠狠艹| 五月婷六月| 久爱综合| 99在线热| 婷婷四色成人综合色视| 97操视频| 九热网站| 99热免费精品| 婷婷夜夜夜夜| 久久99网站| 丁香婷婷九月在线| 成人国产综合| 亚洲 无码 中文字幕 中出| 五月激情婷婷国产精品久久久久久| 热99这就是精品视频| 91碰免费视频| 丁香五月激情宗合| 激情色色色| 婷婷五月天激情网| www.综合久久| 五月婷婷六月爱| 精品爆操| 五月丁香亭亭电影久久| 五月天激情四射| 五月天婷婷丁香六月| 久久女婷| 超碰在线观看caop| 99热99网| 99无码| 四川女人毛多水多A片| 国产avapp 网| 99色最新在线视频网站| 天天干天天干天天操| 碰碰碰碰碰99| 国产裸舞福利资源在线视频| 色色无码| 久久久全国免费视频| 99久热在线精品| 婷婷狠狠色| 精品夜夜澡人妻无码AV| 91九色精品女同系列| 久久色五月天综合网| 91日本在线观看| 在线视频激情网站| 婷婷香五月综合激情| 婷婷五月情| 人人综合91网| 日日撸日日操| 99欧美| 另类激情五月| 日婷婷| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 涩 五月 婷婷 狠狠| 五月丁香六月婷婷不卡免费无码| 久久久香| 国产亚洲成AV人片在线| 99爱免费在线观看| 久久婷婷伊人| 婷婷激情人妻| 久久免片| 五月桃花网综合| 欧美黑人大吊| 五月丁香婷婷在线| 五月丁香少妇| 婷婷久久丁香| 97成人丁香| 中文不卡一二三区| 色综合婷婷| 色玖玖综合网| 久久五月天色婷婷| 碰超亚洲| 伊人婷婷色激情丁香| 97五月天| 色婷精品91| 日本天天色| 玖玖婷婷色欲| 精品九九视频在线观看| 日日干日日| 99,色| 91成人视频| 婷婷综合影院| 人妻少妇色综合| 久草婷| 婷婷丁香五月天亚洲| 国产精产国品一二三在观看| 婷婷欧美色| 综合色五月| 9999三级片| 日本天堂免费99| 国产色99| 99热8| 七七久久综合| 五月丁香花婷婷玉莉AV| av不卡网站| 99热最新网址| 婷婷五月花.97| 新激情五月开心五月婷婷五月丁香五月| 91chinese在线| 久青青久| 91啪啪视频| 五月婷婷激情综合在线| 色噜噜狠狠色综无码久久合欧美| 天天操夜夜爽天天操| 久久亚洲天堂| 丁香婷婷五月六月久久| 97色在线视频| 婷婷色在线| 26UUU欧美| 超碰免费成人| 色五月天在线观看| 99er这里只有精品| 激情99| 一区二区中文字幕| 精品一区二区三区免费毛片爱 | 久久婷五月天| 婷婷六月丁香在线| 日日操日日撸| www.99热视频在线观看| 亚洲亚洲人成综合网络| 婷婷五月丁香在线观看| 老美AA片| 凹凸操Av| 亚洲第一影院高清无码网站| 五月天激情网图片| 五月丁香欧美综合| 日日.c| 99色精品视频| 99在线精品免费视频| 99热在线中文字幕| 丁香五月婷婷五月基地| 夜夜骑夜夜撸| 香蕉婷婷色五月| 久久激情视频| 久久小视频免费| www,婷婷,com| 99re8这里只有精品99re8热视频| 青青999| 五月丁香在线| 99色婷婷| http:色情日本com| 狠狠色噜噜| 91日综合欧美| 日本三级中国三级99| 五月开心婷婷网| 色色色综合网| 色婷婷激情五月天在线观看| 亚洲无码 图片区| 亚州色色色| 91精品久久久久久久久久久久| 91日韩在线| 成人五月天在线视频在线观看| 天天干天天日蜜臀av| 婷婷五月丁香综合激情| 久99久视频| 欧美大肥婆大肥BBBBB| 91wwmm导航| 五月天操逼网| 五月天婷婷成人网| 欧美色色色色色色色| 香蕉97碰碰碰超视精品| 婷婷五月在线视频| 日本五月视频| 亚洲综合无码| 激情五月婷婷| 激情久久综合网| 超级碰碰碰碰视频| 欧美精品999| 婷婷丁香五月,狠狠综合| 国产性爱色| 亚洲AV免费在线| 激情综合网,婷婷五月天| 丁香五月激情欧美| 色五月丁香五月| 久久婷婷五月天激情唯美| 免费AV在线| 五月天伊人| 成人丁香五月| 五月花婷婷在线精品视频| 精品AV无码超碰| 久草A片| 婷婷五月免费在线| 成人综合视频在线| 亚洲蜜桃精久久久久久久久久久久| 免费观看的婷婷五月视频在线| 婷婷色在线| 大香蕉视频99| 丁香六月婷婷色XXXXX| 第四色26uuu| 99热99精品| 欧美性生交XXXXX无码小说| 色色无码| 婷婷激情六月中文| 色婷婷91| 欧美色色色| 天天做天天爱天天爽综合网| 五月婷婷五月天激情视频| 亚洲成人无码片| 人妻中文在线| 大香蕉欧美在线| 丁香五月激情六月| 狠狠色狠狠| 操91综合网| 五月激情婷婷在线| 五月婷激情| 五月丁香婷婷AV天堂| 六月婷色| 九九无码AV| 色色色色五月| 婷婷网五月天| 人人射av| 五月婷婷性爱| 婷婷五月六月丁香| 亚洲精品一区中文字幕乱码| 中文字幕AV在线| 色婷婷社区| 久久亚洲色导航| 伊人网碰碰| 免费色婷婷| www.超碰| 影音先锋噜一噜| 亚艹艹| 激情欧美婷五月| 久久综合无| 在线观看免费视频| 在线播放中文字幕| 婷婷激情图片| 欧美性爱5月天天天看| 色五月激情| 综合久久综合五月天婷婷| 嫩草AV久久伊人妇女超级A| 亚洲在线操| 天天做天天爱天天做| 99久热这里有精品| 色婷丁香| www.99热在线| 无语停婷丁香网| 亚洲乱码日产精品BD| 91精品丝袜久久久久久| 六月丁香激情网| 麻豆123区| 五月丁色AV| 无码人妻激情| 秋霞AV美国| 九九99九九精品视频| 专区无日本视频高清8| 美女网黄| 五月婷视频| 日日操天天爽| 色七色九九| 婷婷伊人中文字幕| 婷婷内射视频在线| 97在线日本| 另类在线免费视频| 99久久6| 97碰| 婷婷六月综合基地| 中出内射的人妻视频| 婷婷五月天激情综合| 激情网战码亚洲A| 久久精品五月天| 午夜激情久久| 丁香操逼| 亚洲182在线观看| 三级毛片视频| 五月丁香婷婷啪啪| 美女激情综合| 九热免费视频| www.9797国产| 久久人人九| 99在线免费观看| 天天日夜夜曹| 天天插综合| 天天色综网| 逼里香不卡| 亚洲色A| 综合激情网| 嫩草综合网| 色婷婷4| 丁香五月婷婷啪| 中文字幕不卡+婷婷五月| 五月婷婷天堂| 亚洲婷婷91丁香| 久久99久久99精品免观看粉| 欧美啪啪五月天| 无码动漫AV| 综合玖玖偷拍| 67194中文字幕| 人妻视频在线| 精品在线网站| 丁香六月啪| 久久九色| 婷婷成人网五月天| 日本一级黄色电影| 六月色婷婷色| 五月丁香久久综合| 亚州激情在线视频| 五月激情婷婷六月丁香| 99热精品一区| 色人妻五月| 五月天久久综合婷婷丁香| 欧美成人A片AAA片在线播放| 婷婷六月丁香五月| 五月天婷婷激情| 性欧美日本| 99热九九热| 激情五月丁香五月| 午夜性做爰电影| 色色色色网| 五月丁香六月综合激情| 丁香六月五月天| 欧美丁香五月| 天天肏夜夜肏| 国产亚洲色婷婷久久99精品91| 丁香五月婷婷五月| 99久久久久| 99噜噜噜在线播放| 五月婷婷丁香91| 热99热久| 男女免费视频999| 久久图色4| 色婷婷av在线| 人人玩人人橾| 国产精品在线视频| 天天成人综合视频| 人人操人人爱丁香五月| xx人人xx| 五月婷色色| 可以看的av| 97成人操| 激情五月综合第一页| 丁香五月性| 婷婷久久夜| 狠狠色噜噜| 色五月婷婷九月| 五月天婷婷基地| 久久精品一区二区三区四区| 婷婷五月另类网站| a九九热www| 99热综合| 九九九九九九九热| 丁香婷婷婷五月| 玖玖资源在线视频| 色情五月丁香| 99国产精品久久久久久久久久久| 五月婷狠狠| 国产1区2区3区| 99热这里只有精品国产免费| 五月婷婷九月婷婷九月婷婷| 日韩人妻无码精品| 思思热在线播放| 人人摸人人澡人人| 激情综合网五月婷婷| 99re8热精品免费视频| 天天肏高清在线| 九九热视频网站| 久久丁香久久| 九九久久99| 欧美熟女视频 色婷婷| 色欲影香| 五月天成人在线视频丁香| 大伊久久| 97色热| 嫩草AV久久伊人妇女超级A| 色婷婷香蕉丁丁网| 天天 青草 制服丝袜 在线| 操逼棍操逼| 五月婷婷黄色| 婷婷无五月无码视频| 超碰人人91| 婷婷五月天亚洲天堂| 精久久色| 亚韩在线视频| 丰满少妇乱A片无码| 青青草婷婷久久| 亚洲 综合中文| 2023天天日夜夜爽| 99色在线观看视频| 色优久久| 亚洲一区二区无遮挡A片| 五月婷婷丁香深深爱| 激情五月婷婷开心网| 激情综合婷婷| 蜜乳人妻一区二区三区| 色日本丁香婷婷| 天天日 天天草| 男女啪啪做爰高潮无遮挡| 激情五月天色婷婷综合| WWW色综合| 婷婷狠狠操| 亚洲精品白浆高清久久久久久| 人妻在线观看视频| 天天爽在线视频| 亚洲最大五月天成人网| 天天日,天天干,天天操| 激情婷婷五月综合| 在线五月色播| 91AV婷婷| 欧美三级韩国三级日本三斤| 开心五月天私房婷婷| 狠狠狠狠狠| 91精品久久久久久久久久| 色色激情网| 99re这里| 青草视频在线播放| www.久久久.com| 狠狠五月激情丁香六月| 久青草影院| 中文字幕婷婷在线| 夜夜天天天天天干天天爽| 伊人久久99| 五月色激情综合网| 亚洲五月天综合| 久久曰曰| 99热精品网| 很很干五月天| 深爱五月激情| 婷婷丁香成人五月天| 婷婷丁香五月噜噜噜| 天天插天天爱| 丁香色成人| 婷婷五月天狠狠搞干| 第九色区av天堂| 成片免费观看视频大全| www夜夜操| 激情色五月天| 深爱婷婷色| 激情五月综合网| 色婷六月| 人人摸人人摸| 免费91久久精品| 99久热在线精品| w婷婷五月婷婷w| 五月婷婷之综合激情在线| 五月丁花色综合网| 91婷婷| 婷婷亚洲综合| 丁香五月婷婷五月天| 超碰2021| 亚洲婷婷婷| 欧洲色色| 日本a片网址| 久色激情| 大香久久伊人网| 性生活视频98791| 最近中文字幕在线中文视频| 天堂久久精品| 五月丁香婷婷婷激情爱爱| 一本色道久久综合狠狠躁一二三| 国产Va视频| 九九色逼| 这里只有精品偷拍| 91九色精品熟女内射| 五月婷啪啪| 96丁香六月婷婷蜜桃综合久久| 大战熟女丰满人妻AV| 色激情综合狠狠婷婷| 91啪啪| 美女91一起草| 色五月婷婷色五月婷婷色五月婷婷| 伊人婷婷大香蕉在线| 五月天五月色婷婷综合| 国产激情久久| 99黄色性生活| 成人短视频在线观看| 日本久久人人| 六月丁香激情| www.99热这里精品| 五月婷婷天天| 在线看av| 五月婷婷婷丁香播| chaopengdaxiangjiao| 天天综合干| 99国产精品久久久久久久久久久| 另类小说五月天综合| 国产又黄又爽又色的免费| 26uuu欧美日韩| 丁香五月激情五月| 久久99这里只有精品| 91操碰| 狠狠干婷婷| 99热最新| 五月丁香综合啪啪啪啪啪| 99精品热| 快乐婷婷五月天| 狠狠色综合网| 六月婷婷视频| 9久久精品| 欧美日韩大黄| 亚洲无码99| 日韩av干| 久久AAAA片一区二区| 翔田千里无码| 亚洲精品白浆高清久久久久久| 狠狠色五月激情| 欧美大肥婆大肥BBBBB| 激情五月综亚网| 尤物一区二区| 思思热精品免费视频| 丁香五月婷婷激情97| 翔田千里无码| 在线色婷婷| 99热一区| 亚洲av日韩无码| 日韩无码专区| 六月丁香婷婷视频综合在线观看| 久久性爱视频| WWW、日本色丁香、co m| av网站不卡在线| 色狠狠色综合| 噜噜狠狠色综合久| 91超碰在线观看| 五月激情丁香五月| 被强行糟蹋的女人A片| 婷婷五日b| 婷婷综合玖玖五月| 99色色网| 人人操日| 五月丁香在线| 丁香色五月婷婷91桃色| 丁香五月大香蕉AV| 9色在线视频| 国产精品大香蕉| 五月天婷婷基地| 中文字幕性爱丰满| 超级碰碰碰碰视频| 国产精品电影| 一本道综合网| 色婷婷第四色| 婷婷丁香激情综合色情| 激情小说五月天社区丁香| 免费观看全黄做爰的视频| 久久一热| www.91九色| 超碰免费人人| 五月综合精品| 亚洲超级碰| 人人干av| 噜噜噜噜在线| 热热99爱爱| 99热在线精品观看| 国际国外精品欧洲南美洲专区无码不卡| 爱狠射| 婷婷五月天激情文学| 五月色丁香婷婷中文字幕| 伊人久热91网| 婷婷金品综合视频| 色五月天成人在线| 日本123区日韩欧美不卡在线看| 丁香九九九九| 色小说婷婷五月天天天| 大香蕉久久久久久久久| 97人人操在线| 99re热视频| 99久久久久久www| 成人做爰高潮A片免费视频| 婷婷久久亚洲| 婷婷亚洲影院| 牛牛热这里只有jingpin| 99国产这里只有精品| 色综合com| 色色五月婷婷狠狠| 97色色视频| 久久久久久草黄色片AV在线观看| 日本偷拍九九九| 99色色网| 激情综合色| 色色免费网站| 少妇熟女视频一区二区三区| wwwwww.色| 伊人久久五月天| 丁香五月,开心五月,成人婷婷 | 欧美草久久五月天91| 久综合网| 香蕉影院色| 去色色五月天| 色色色99| 一个色的综合| 99热丁香五月| 97五月天| 激情网婷婷五月天| 欧美va国产va| 男人天堂AV在线一区二区| 五月天啪啪啪| 天天色天天爱天天爱天天爱y| 日韩色色色色色| 丁香五月婷婷综合啪啪| 9l视频自拍九色9l视频自拍九色9l社区| 久婷婷久草| 免费成人中文字幕| 开心五月婷婷激情| 婷婷激情视频欧美视频自拍视频欧美剧| 亚洲午夜精品久久久久久人妖 | 99热91| 九月色婷婷综合| 99久久亚洲精品视频| 国产黄色大片| 最近韩国日本免费高清观看| 婷婷五月天影视网址| 亚州色色色| 五月婷婷激情| 色五月天丁香| 婷婷激情综合| 九九99香蕉在线视频播放| 嫩草AV久久伊人妇女超级A| 婷婷五月丁香超碰| 亚洲婷婷成人五月天| 日韩久久色| 五月天大香蕉婷| 九九综合| 日日夜夜狠狠操| 激情综合网五月天天| 狼人婷婷久久| 涩丁香91| 欧美韩国日本| 极品人妻VideOssS人妻| 色久在| 91热手机在线| 99热这里有精品| 丁香五月婷婷亚洲综合精品| 欧美丁香婷婷五月| 秋霞电影理论| 婷婷欧美激情综合| 肏屄色播伊人97婷婷| 亚洲视频在线网| 成熟妇人A片免费看网站| 精品久久艹| 激情综合五月婷婷| 99热日韩| 天天在线久久综合 | 天天色亚洲| 九六五月天婷婷| 狠狠做六月爱婷婷综合aⅴ| 182TV亚洲| 五月天怕怕| 狠狠色 综合色区| 婷婷D区| 可以免费看AV网站| www.激情五月天.com| 伊人九九热| 中文字幕不卡网站| 青青草国产亚洲精品久久| 欧美激情五月天| 超碰在线视屏| 99热成人精品网站| 五月开行婷婷色五月| 精品九九视频| 综合激情五月丁香9999久久精| 综合久久婷婷| jiujiujiuwuyuetian| 超碰人人操人人9| 久久婷婷一级片| 成人无码精品1区2区3区免费看| 99精品视频网| 97人人操人人爽| 婷婷九月亚洲| 色婷婷亚洲婷婷在线观看| www.26uuu.com亚洲电影| 人妻久久久久久久久妻久久久久| 婷婷五月亚洲激情| Av大香蕉| 五月色丁香| 婷婷久久免费| 丁香五月熟女| 亚洲精级| 久久小说网| 五月天激情国产综合婷婷婷| 亚洲九九夜夜| 综合五月婷婷| 97碰人人操| 色综合五月| 天天插插天天| 五月激情网站| 亚洲综合丁香五月天| 狠色色狠网| 九一99| 欧美成人网99网| 天天日,天天射,天天舔| 激情综合激情五月一起草| 色五月丁香伊人| 五月天激情电影| 婷婷激情社区| 日本五月天激情| 婷婷五月天亚洲丁香| 丁香五月婷婷手机| 天天操天天日天天操| 婷婷丁香五月亚洲综合网在线视频观看| 色五月天视频| 丁香五月成人在线| 激情五月天色婷婷综合| 综合图区激情| 五月天成人手机在线视频| 人人综合五月人人婷婷| www.日日日.com| 天天摸夜夜爽天天做| 婷婷五月激情丁香激情| 婷婷五月天少妇| 综合五月激情| 五月天六月婷| 另类激情综合| 一区二区免费看| 色婷五月| 久久久久9| www.婷婷六月天| 色五月情| 五月久久丁香| 婷婷五月超碰| 中文字幕网站在线观看| 丁香久久五月婷综合| 99九九热在线观看| 婷婷97碰碰| 久久综合婷婷| 色婷婷成人影片| 日本激情五月天‘| 青青草激情网| 大香蕉五月婷婷| a网站免费观看| 91精品91久久久中77777| 亚洲精品白浆高清久久久久久| 操逼视频网址| 国产AV不卡福利| 国产成人网址| 丁香月五月天婷婷久久|