久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

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

基于Spark的混合推薦系統(tǒng)實(shí)戰(zhàn):從協(xié)同過濾到實(shí)時(shí)推薦 簡介這是一份基于Spark的電影推薦系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的完整課題資料面向大數(shù)據(jù)、推薦系統(tǒng)方向的畢業(yè)設(shè)計(jì)與課程設(shè)計(jì)人員也可供對協(xié)同過濾、內(nèi)容推薦算法感興趣的開發(fā)者參考。文檔以論文形式系統(tǒng)梳理了課題背景、國內(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)部分展示用戶登錄注冊、個性化推薦、電影搜索、用戶評分等核心功能測試部分給出功能與性能驗(yàn)證結(jié)果目錄結(jié)構(gòu)從緒論到致謝完整清晰可直接作為相關(guān)課題的參考藍(lán)本。資源包內(nèi)僅含單個DOCX文檔大小約7.46MB內(nèi)容以論文正文為主共一個文件便于查閱和編輯。目前已有207人學(xué)習(xí)下載適合需要快速掌握電影推薦系統(tǒng)整體架構(gòu)與研究思路的學(xué)生或開發(fā)者。1. 這個項(xiàng)目不只是論文一套能從登錄跑到推薦的完整系統(tǒng)電影推薦系統(tǒng)這類課題網(wǎng)上源碼不少但多數(shù)是單機(jī)跑個 Python 腳本調(diào)一下 surprise 庫就完事談不上“系統(tǒng)”。這份資源不一樣——它是一份帶完整論文的工程實(shí)現(xiàn)后端用 Spark 做分布式計(jì)算MongoDB 存業(yè)務(wù)數(shù)據(jù)Redis 做緩存Elasticsearch 參與搜索前端還有 AngularJS 頁面。換句話說它不是 toy demo而是一條能沿著“用戶登錄 → 評分 → 離線統(tǒng)計(jì) → 實(shí)時(shí)推薦 → 詳情頁相似推薦”跑通的完整鏈路。我拆這份項(xiàng)目時(shí)最大的感受是它的核心不在協(xié)同過濾那幾行 ALS 代碼而在“三種推薦算法怎么分工”?;谌丝诮y(tǒng)計(jì)學(xué)的離線推薦管冷啟動和熱門榜基于內(nèi)容的實(shí)時(shí)推薦管用戶當(dāng)下行為協(xié)同過濾管個性化。單一算法都有各自的坑混合起來才是個能用的推薦系統(tǒng)。這套設(shè)計(jì)思路比代碼本身更值得讀。適合讀這份資源的人有三類做大數(shù)據(jù)課程設(shè)計(jì)或畢業(yè)設(shè)計(jì)的學(xué)生想把 Spark 推薦從“會調(diào) API”推進(jìn)到“能搭完整服務(wù)”的后端開發(fā)以及想找一個可復(fù)現(xiàn)的推薦系統(tǒng)基線工程、準(zhǔn)備加功能的算法工程師。下文我會把技術(shù)選型、模塊結(jié)構(gòu)、核心實(shí)現(xiàn)和運(yùn)行步驟一層層拆開最后給出我的改造建議。2. 整體架構(gòu)拆解Spark 計(jì)算、MongoDB 存儲、三套算法分工2.1 技術(shù)棧全景與數(shù)據(jù)流向這套系統(tǒng)的技術(shù)選型圍繞一個核心約束單機(jī)環(huán)境下模擬大數(shù)據(jù)處理流程同時(shí)保證每一層都有真實(shí)組件在跑。先看全景計(jì)算引擎Spark負(fù)責(zé)離線批量統(tǒng)計(jì)和實(shí)時(shí)流處理存儲層MongoDB 存用戶、評分、電影和推薦結(jié)果Redis 緩存熱點(diǎn)數(shù)據(jù)Elasticsearch 做電影搜索后端Spring Maven提供登錄、評分、推薦結(jié)果的 REST 接口前端AngularJS 2負(fù)責(zé)頁面渲染和交互集群形態(tài)偽分布式1 個 Master 3 個 Worker 用虛擬機(jī)模擬數(shù)據(jù)流向是這樣的用戶在前端頁面產(chǎn)生評分、點(diǎn)擊、搜索行為這些行為寫入 MongoDB 的業(yè)務(wù)表離線推薦任務(wù)用 Spark SQL 周期性從 MongoDB 讀取評分表跑統(tǒng)計(jì)和模型訓(xùn)練把結(jié)果寫回 MongoDB 的推薦結(jié)果表實(shí)時(shí)推薦則通過 Spark Streaming 消費(fèi)行為流結(jié)合用戶最近的評分記錄做基于內(nèi)容的相似推薦前端通過 Spring 后端接口讀取 MongoDB 里的推薦結(jié)果展示給用戶。這里有一個值得注意的設(shè)計(jì)決定MongoDB 同時(shí)承擔(dān)“業(yè)務(wù)數(shù)據(jù)庫”和“推薦結(jié)果數(shù)據(jù)庫”兩個角色。好的一面是技術(shù)棧干凈不用在 HBase 和 MySQL 之間做數(shù)據(jù)同步壞的一面是推薦結(jié)果表要按用戶維度設(shè)計(jì)好索引否則前端高頻讀取時(shí)會有性能壓力。實(shí)際工程里我會把推薦結(jié)果再拷一層到 Redis這個后面改造章節(jié)細(xì)說。2.2 離線推薦模塊基于人口統(tǒng)計(jì)學(xué)的四類統(tǒng)計(jì)任務(wù)離線推薦是這套系統(tǒng)的“底座”它解決的核心問題是冷啟動新用戶沒有任何行為記錄時(shí)推薦什么答案是給所有人推一樣的榜單——?dú)v史熱門、近期熱門、高分電影、各類型 Top10。四個統(tǒng)計(jì)任務(wù)分別這樣設(shè)計(jì)歷史熱門影片的統(tǒng)計(jì)直接用 Spark SQL 從 MongoDB 的 ratings 表讀取評分記錄按電影 ID 分組統(tǒng)計(jì)評分人數(shù)取數(shù)量最多的前 N 部。這個邏輯簡單粗暴但“評分人數(shù)多 熱門”這個假設(shè)在大多數(shù)場景下成立。近期熱門影片的統(tǒng)計(jì)在歷史熱門的基礎(chǔ)上加了時(shí)間窗口。實(shí)現(xiàn)方式是定義一個 UDF把評分時(shí)間戳轉(zhuǎn)換成“是否在近一個月內(nèi)”的布爾標(biāo)記然后只統(tǒng)計(jì)窗口內(nèi)的評分。這個 UDF 是理解 Spark SQL 自定義函數(shù)的好例子。電影平均評分的統(tǒng)計(jì)按電影 ID 聚合所有評分計(jì)算平均值寫入 AverageMovies 數(shù)據(jù)集。這個結(jié)果會用在詳情頁展示電影得分也會作為離線推薦的一個排序因子。各級別影片 Top10 的統(tǒng)計(jì)這是最復(fù)雜的一個。電影的 genres 字段是“動作|冒險(xiǎn)|科幻”這種按豎線分隔的字符串需要先用 UDF 按|切分成數(shù)組再用explode展開成多行最后按每個類別分別計(jì)算評分 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ù)先為每個用戶算好結(jié)果存儲開銷小壞處是首次訪問詳情頁會有計(jì)算延遲。在 Spark 環(huán)境下這個計(jì)算可以做成一次性的批處理任務(wù)把每部電影的相似 Top10 預(yù)先算好存起來而不是實(shí)時(shí)算。2.4 協(xié)同過濾模塊ALS 模型的定位論文里提到協(xié)同過濾算法也提到 Spark MLlib 里的 ALS。在這套系統(tǒng)里協(xié)同過濾不是唯一的推薦來源而是作為離線個性化推薦的補(bǔ)充。它的任務(wù)是從歷史的“用戶-電影-評分”矩陣中學(xué)習(xí)兩個隱因子矩陣——用戶特征矩陣和電影特征矩陣然后用矩陣乘法預(yù)測用戶對未看過電影的評分。但 ALS 有兩個天然痛點(diǎn)論文里也明確說了數(shù)據(jù)稀疏和冷啟動。冷啟動已經(jīng)靠人口統(tǒng)計(jì)學(xué)推薦兜底了數(shù)據(jù)稀疏則依賴我們輸入 ALS 的數(shù)據(jù)質(zhì)量。常見做法是把評分人數(shù)少于閾值的電影過濾掉再把評分矩陣做歸一化讓模型更容易收斂。這塊我在改造章節(jié)會給出具體參數(shù)建議。3. 核心實(shí)現(xiàn)逐段拆解從 MongoDB 讀取到推薦結(jié)果落地3.1 Spark SQL 讀取 MongoDB連接器與 DataFrame離線推薦的第一步是把 MongoDB 中的數(shù)據(jù)加載成 Spark DataFrame。項(xiàng)目里沒有用自定義讀取器而是直接用了官方 MongoDB Spark Connector。加載評分表和電影表的寫法如下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里只取了四個字段uid用戶 ID、mid電影 ID、score評分、timestamp評分時(shí)間戳。之所以要顯式限定字段是因?yàn)?MongoDB 的文檔結(jié)構(gòu)往往比關(guān)系表松散early 篩選能顯著減少 Spark 在 shuffle 階段的數(shù)據(jù)量。偽分布式環(huán)境下資源本來就緊張這個習(xí)慣能幫你少踩不少 OOM 的坑。3.2 UDF 實(shí)現(xiàn)電影類別切分與近期熱門統(tǒng)計(jì)基于人口統(tǒng)計(jì)學(xué)的推薦里兩個核心統(tǒng)計(jì)邏輯都需要自定義 UDF。第一個是把電影的 genres 字符串切分成數(shù)組第二個是判斷評分時(shí)間是否落在近一個月窗口內(nèi)。這段代碼集中展示 UDF 的注冊和用法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) }) // 判斷評分時(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它把“一部電影屬于三個類別”這一行數(shù)據(jù)展開成三行每個類別一行這樣后續(xù) groupBy 才能按類別獨(dú)立排序。窗口函數(shù)row_number() over partitionBy負(fù)責(zé)在每個類別內(nèi)部取評分最高的 10 部。如果你的數(shù)據(jù)里有一些只有一兩人評分的電影建議在agg之后加一個過濾條件只保留score_count 10的影片否則“平均分第一名”容易被單條高分評價(jià)刷上去。近期熱門統(tǒng)計(jì)更簡單對 ratings 表用 UDF 過濾近一個月的評分然后按 mid 聚合計(jì)數(shù)取 Top N 寫入 RateMoreRecentlyMovies 集合。3.3 ALS 協(xié)同過濾訓(xùn)練與個性化推薦ALS 是 Spark MLlib 里最成熟的協(xié)同過濾實(shí)現(xiàn)。代碼不長但調(diào)參直接影響推薦質(zhì)量import org.apache.spark.ml.recommendation.ALS import org.apache.spark.ml.evaluation.RegressionEvaluator // 劃分訓(xùn)練集和測試集測試集用于評估模型誤差 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ù)日志里會顯示每次迭代的 loss .setRegParam(0.1) // 正則化參數(shù)控制過擬合 .setUserCol(uid) .setItemCol(mid) .setRatingCol(score) .setColdStartStrategy(drop) // 預(yù)測時(shí)遇到未見過的用戶/電影直接丟棄而非報(bào)錯 val model als.fit(training) // 為每個用戶生成 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)的一個配置。ALS 模型在預(yù)測時(shí)如果遇到訓(xùn)練集里沒出現(xiàn)過的用戶或電影默認(rèn)會拋異常。線上系統(tǒng)里每天都有新用戶新電影所以必須設(shè)置成drop或nan丟棄無法預(yù)測的條目而不是讓整個批次失敗。rank 參數(shù)常見取值范圍是 10 到 50regParam 是 0.01 到 0.1調(diào)參時(shí)優(yōu)先觀察測試集上的 RMSE均方根誤差。3.4 基于內(nèi)容的相似度計(jì)算標(biāo)簽向量與余弦相似度基于內(nèi)容的推薦核心是把電影轉(zhuǎ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)是哈希碰撞會引入噪聲setNumFeatures設(shè)得越大碰撞概率越低。算相似度時(shí)對每個電影向量和其余所有向量做點(diǎn)積并歸一化就能得到余弦相似度。如果電影數(shù)量很大更聰明的做法是先用 ALS 電影因子向量代替 TF-IDF 向量因?yàn)?ALS 訓(xùn)練出的隱因子已經(jīng)隱含了“同類型電影向量接近”的特性。3.5 后端接口與前端調(diào)用的銜接推薦結(jié)果算完后展示層還需要后端接口。Spring 后端提供了四類核心接口登錄注冊、獲取首頁推薦、詳情頁相似推薦、提交評分。前端 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()); } // 提交評分寫入 MongoDB同時(shí)作為實(shí)時(shí)推薦的觸發(fā)信號 PostMapping(/rate) public Result rate(RequestBody RatingRequest request) { mongoTemplate.save(request, ratings); return Result.success(); } }前端接到recommendations數(shù)組后按分?jǐn)?shù)從高到低渲染成卡片列表。這個接口的寫法比較直白但它把分層關(guān)系講清楚了前端只認(rèn) userId不關(guān)心推薦結(jié)果的來源是離線統(tǒng)計(jì)還是協(xié)同過濾后端通過對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ī)偽分布式一臺物理機(jī)上用 VMware 開三臺 CentOS 虛擬機(jī)搭一個四節(jié)點(diǎn) Spark 集群1 Master 3 Worker三臺機(jī)器的主機(jī)名分別設(shè)計(jì)為 hadoop102、hadoop103、hadoop104。之所以從 hadoop102 開始編號是為了給 Namenode 留出 101 的位置如果是生產(chǎn)環(huán)境你還會加一個 105 做備用 Master。搭建步驟如下在三臺虛擬機(jī)上分別安裝 JDK 并配置JAVA_HOME配置 SSH 免密登錄三臺機(jī)器兩兩互信修改/etc/hosts把三個主機(jī)名映射到固定 IP在 Spark 的conf/slaves文件里填寫三個 Worker 主機(jī)名修改spark-env.sh指定SPARK_MASTER_HOSThadoop102、SPARK_MASTER_PORT7077完成后在 Master 節(jié)點(diǎn)執(zhí)行start-all.sh瀏覽器訪問hadoop102:8080Worker 列表里能看到三個節(jié)點(diǎn)說明集群搭好了。4.2 MongoDB 集合設(shè)計(jì)與啟動MongoDB 在 Windows 本機(jī)運(yùn)行負(fù)責(zé)存業(yè)務(wù)表和推薦結(jié)果表。數(shù)據(jù)庫里設(shè)計(jì)了兩類集合一類是原始數(shù)據(jù)——User用戶、Ratings評分、Movies電影另一類是推薦結(jié)果——AverageMovies、GenresTopMovies、RateMoreMovies、RateMoreRecentlyMovies、UserRecs。啟動方式最簡單命令行直接跑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é)還會細(xì)說。業(yè)務(wù)表創(chuàng)建之后用mongoimport把 ratings.dat 和 movies.dat 導(dǎo)入即可。4.3 Redis 與 Elasticsearch 配置Redis 在 Linux 虛擬機(jī)里運(yùn)行主要給實(shí)時(shí)推薦模塊做緩存緩存用戶最近評分記錄和熱門推薦結(jié)果。配置項(xiàng)只需要改兩處bind 0.0.0.0允許遠(yuǎn)程訪問maxmemory設(shè)一個合理上限如 2GB避免緩存無限增長把內(nèi)存吃光。Elasticsearch 的作用是搜索。電影搜索功能沒有走 MongoDB 的模糊查詢而是把電影標(biāo)題、類別、主演信息同步到 ES用 ES 的倒排索引做全文檢索。配置上需要注意 ES 的network.host要改成虛擬機(jī)能訪問的 IPdiscovery.type設(shè)為single-node否則單機(jī)模式會因組播發(fā)現(xiàn)失敗而啟動異常。4.4 系統(tǒng)啟動順序與驗(yàn)證整個系統(tǒng)啟動依賴順序很關(guān)鍵錯了會出現(xiàn)“Spark 任務(wù)提交成功但讀寫數(shù)據(jù)失敗”的怪問題# 1. 啟動 MongoDBWindows 宿主機(jī) mongod --dbpath /data/db --port 27017 --bind_ip 0.0.0.0 # 2. 啟動 Redishadoop103 redis-server /etc/redis/redis.conf # 3. 啟動 Elasticsearchhadoop104 elasticsearch -d # 4. 啟動 Spark 集群hadoop102 Master start-all.sh # 5. 啟動后端 Spring 服務(wù)WindowsIDEA 里直接 Run mvn spring-boot:run # 6. 前端 AngularJS 通過 Nginx 或開發(fā)服務(wù)器訪問 localhost:8088啟動完成后驗(yàn)證路徑瀏覽器訪問localhost:8088能看到登錄頁登錄后首頁能看到“熱門推薦”“近期熱門”“高分電影”三個榜單點(diǎn)進(jìn)任何一部電影詳情頁能看到相似電影給任意電影打 5 分后隔幾秒刷新首頁實(shí)時(shí)推薦區(qū)應(yīng)該出現(xiàn)與剛評分電影類型相近的影片。這四條驗(yàn)證過了系統(tǒng)鏈路就算通了。4.5 推薦任務(wù)的手動觸發(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。三臺虛擬機(jī)共享一臺物理機(jī)的內(nèi)存給多了反而會因?yàn)槲锢韮?nèi)存不足引起整機(jī) swapSpark 任務(wù)會越跑越慢最后表現(xiàn)為 Web UI 上任務(wù)卡在 SCHEDULED 狀態(tài)不動。5. 常見問題避坑偽分布式環(huán)境下的血淚經(jīng)驗(yàn)5.1 Spark 任務(wù)報(bào)錯找不到 MongoDB 驅(qū)動類現(xiàn)象提交離線推薦任務(wù)后任務(wù)在讀取 MongoDB 階段拋出ClassNotFoundException: com.mongodb.MongoClient或類似驅(qū)動類缺失錯誤。原因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 的包一一對應(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 里看到多個 Executor 處于 FAILED 狀態(tài)。原因偽分布式集群的內(nèi)存總量有限三臺 Worker 共享物理內(nèi)存。默認(rèn)配置下 Spark 會為每個 Executor 分配物理內(nèi)存的很大比例多個 Executor 疊加直接吃滿內(nèi)存。另外讀取 MongoDB 時(shí)如果沒有提前 select 字段DataFrame 會帶著大量冗余字段參加 shuffle內(nèi)存壓力更大。解決第一spark-env.sh里把SPARK_WORKER_MEMORY降到 2G提交任務(wù)時(shí)--executor-memory 1G第二所有 Spark SQL 讀取后的第一步就是select精簡字段第三對特別大的 ratings 表先按 uid 做一次repartition再聚合。這條優(yōu)化在真實(shí)集群同樣適用只是真實(shí)集群閾值可以放寬。5.3 UDF 在集群模式下拋序列化異?,F(xiàn)象本地跑沒問題spark-submit提交到集群后報(bào)Task not serializable或org.apache.spark.SparkException: Task not serializable錯誤棧指向代碼里定義的 UDF。原因如果 UDF 內(nèi)部引用了外部對象比如配置類實(shí)例、SparkSession 以外的全局變量這個外部對象必須可序列化否則閉包無法在 Executor 間傳輸。本地模式下 Driver 和 Executor 在同一 JVM問題不會暴露。解決UDF 內(nèi)部不要引用外部非序列化對象把所有依賴封裝成Serializable案例類或者在 UDF 內(nèi)部直接創(chuàng)建所需對象。我的習(xí)慣是任何 UDF 先問自己“如果它在另一臺機(jī)器上執(zhí)行需要帶什么東西”只帶字符串和基本類型就是最安全的。5.4 Elasticsearch 啟動后外部無法訪問現(xiàn)象ES 在本機(jī)啟動正常curl localhost:9200有響應(yīng)但在另一臺機(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)會因?yàn)?bootstrap checks 拒絕啟動。改完重啟 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í)如果沒有正確配置跨域頭瀏覽器會攔截寫入。解決后端在 WebMvcConfigurer 里配置 CorsRegistry允許前端域名跨域請求帶上 Cookie同時(shí)確認(rèn)登錄接口的響應(yīng)頭包含Access-Control-Allow-Credentials: true。如果用了 Nginx 代理前端還要檢查代理配置是否把 Cookie 頭透傳了。6. 二次開發(fā)改造思路把“能跑的推薦”變成“好用的推薦”讀完源碼、跑通鏈路之后真正的價(jià)值在于改造成符合自己場景的系統(tǒ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。這幾個權(quán)重可以先用固定值跑一周看各路的點(diǎn)擊轉(zhuǎn)化率再調(diào)。代碼改動只在 RecommendController 里加一個融合函數(shù)不動底層。第二層給 ALS 加一個數(shù)據(jù)預(yù)處理。當(dāng)前 ratings 表是原始評分直接進(jìn)模型數(shù)據(jù)稀疏時(shí)會訓(xùn)練出大量零向量。建議訓(xùn)練前過濾掉評分人數(shù)少于 20 的電影對 score 做標(biāo)準(zhǔn)化到 0-1 區(qū)間。能明顯提升收斂速度和推薦精度。第三層實(shí)時(shí)推薦的觸發(fā)源擴(kuò)展。當(dāng)前實(shí)時(shí)推薦只響應(yīng)“評分”事件。改造方向是把“點(diǎn)擊詳情頁”“搜索電影”也作為行為流輸入對點(diǎn)擊行為降權(quán)即可。改動工作量集中在行為日志接入和權(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)擊率和評分?jǐn)?shù)量。這個比較可以在 MongoDB 里直接用聚合查詢完成不用額外搭數(shù)據(jù)平臺。這套工程我前前后后拆過兩次每次都被同一個問題卡住偽分布式環(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
返回資訊列表
99在线观看| 久久99草| 日韩欧美麻豆 | 成人无码在线超碰网| 不卡免费av在线播放| 色婷婷综合久久久久中文一区二区| 欧美国产操逼| 亚洲精品国产熟女| 亚洲色图伊人网| 青娱乐淫乱1314| 天天插天天操| 欧美亚洲中文字幕| 午夜免费福利视频一区| 九九九不卡| 午夜黄色免费在线观看| 91美女国产在线| 久久黄色性爱视频| 99re在线视频国产| 天天干天天狼在线视频| 97国产精品久久久久| 黄在线| 东北女人| 无色无码| 97se亚洲综合自| 婷婷五月综合在线| 综合第一页| 99视频精品| 亚洲中文字幕av | 图片区小说区| 亚洲图片欧美偷拍| 国产成人资源| 我要去看2个日本美女.com曹逼| 天天欧美欧美亚洲网| 亚洲成成熟女人综合一区二区| 婷婷伊人| AVE乱伦| 国产天天骚| 日韩极品无码B| 亚洲区限制级| 美女自卫慰黄网站免费| 老熟妇91| 综合97亚洲| 先锋色眉乱伦资源| 东北老熟女| 97色色网| 国产精品成人蜜臀AV在线| 天天操天天日青青草超碰av| 九九99久久| 久久AV无码AV| 中文字幕久久精品一区| 狠狠干狠狠色| 久久精品福利影院| 夜夜嗨TV| 屌妞视频久久久久久久久久久久| 91成人精品在线播放| 91bbbbbb| 欧美韩国你懂得在线| 色官网在线| 97亚洲中文| 天天天乱色综合全| 久久97| 尤物视频一区| 亚洲乱妇p22| 亚洲天天影视综合网| 熟女人妻一区二区三区| 欧美黄片免费在线观看视频| 成人免费毛片| 热99这里有精品综合久久 | 五月天成人综合| 高潮的A片激情扒开一区| 亚洲AV色图一区| 97蜜桃综合| 欧美十八禁视频| 中文字幕精品亚洲熟女| caorenqi shipin| 日韩亚洲精品一区二区| 超碰色图| 九九国产热| 成人在线视频二区| 无套内射性感少妇视频| 国产精品久久久久久久黄无码| 老熟女阿 国产91| 麻豆九九九| 狠狠综合| 天天躁日日躁AAAXX| 国产强奸91| 日韩无码极品| 校园春色五月天| 91爱啪| 国产精品禁久久久精品| 国产精品com| 91痴汉| 国产在线综合福利网站| 黑丝内射一区二区三区| 91热色| 手机在线大香蕉| 国产无码精品高清| 五月婷婷AV| 精品人妻一区二区乱码一区二区| 日本成人在线不卡一区二区三区| 亚洲啪啪性视频| 99热精品青草在线| 中文字幕午夜精品久久久| 欧美一级AAAAAAA| www.狠狠操| 人人操人人精品影片| 精品无码一区二区三区| 亚洲.欧美.丝袜.中文.综合| 青青草好吊色| 久久性视频| 一级性爱视频免费观看| 亚洲国产精品久久久久久久久久| 国产精品午夜精品| 婷婷中文网| 天美传媒AV国产在线| 亚洲欧美另类小说| 久久人妻丝袜一区二区三| www.av不卡中文字幕| 亚洲精品一区二区精品| 午夜欧美神马久久久久| 国产激情在线观看| 日本亚洲嫩草影院啪啪| 日韩一级片在线看| 男人的天堂三级| 中国一区二区亚洲人妻| 大色网久久| 玖玖色综合| 精品人妻一区二区三区四区| 色婷婷狠狠| 揉揉揉夜夜| 成人午夜无码视频| 啊啊啊啊啊啊在线| 女同在线视频一区| 欧美成人性爱视频在线播放 | 91中出视频| 蜜桃臀av在线观看| 国产欧美在线观看免费观看| 男人的亚洲天堂| 国产精品激情久久久久久久| 97精品视频在线播放| 美女国产一区二区久久| 大地资源在线观看中文第二页| 99精品丰满人妻无码| 人人看人人摸人人色| 日夜尻逼网| 超碰九色| 精品人妻一二三| 亚洲成人色情五月天丁香花| 国产一级αv免费看片| 97久久国产精品女不卡| 日韩精品9区| 日本一级一级一级一级| 日本淫乱女一区二区三区视频| 裸模AV女优| 操逼啊啊啊91| 美女天天干| 色欧洲97| 九一综合精品视品av| 国产成年精品高清在线观看91| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 97 国产一区| 自拍视频一区在线观看| 自拍偷拍第26| 2003天天干夜夜操| 久久本道| 人妻天天夜夜爽一区二区| 自拍偷拍 日韩欧美| 欧美色图自拍| 综合激情97| 人澡逼| 大香蕉亚洲中文| 国产多人在线观看视频| 玖玖资源视频一区二区三区| 欧美色图私拍91| jizzjizz欧美| 国产一区二区在线播放量| 激情四射婷婷六月天| 婷婷五月花| 尤物网址| 国产精品不卡高清在线观看| 97操| 天天干人人乐| 亚洲图片欧美另类综合免费视频大大香| 色性综合| 婷婷五月天激情四射| 黄视频免费| 中文久久| 青青草福利视频| 欧美性视频二区三区| 青青草黑寡妇男人天堂| 婷婷在线视频| 人人天天欧洲| 91人妻PORNY九色大屁股| 亚洲精品一区二区精品| yiqicaoav| 精品一区二区三区蜜桃| 超碰一区二区| 少妇丝袜在线观看AV| 夜夜操夜夜爽夜夜高潮| 吉田爱美AV在线| 天天综合网一91网| 男女性无套 免费九一| 后入福利| 亚洲影视高清第一页| 2017大香蕉国产精品久久| 超碰超碰95| 99精品热| 欧美日不卡| 99久久九九| www.狠狠操| 九九亚洲视频| 大香蕉综合| 亚洲丝袜色图| 日韩情色AV| 少妇500双飞99| 中文字幕免费观看| 天堂精品小草| 亚码人妻| 99热线麻豆 | 一类无码操逼视频| 无码国产精品久久久久| 亚洲性爱无码乱伦av| ?亚洲伊人伊成久久人综合网| 国产午夜无码片在线观看影视| 中文字幕亚韩| 成人精品在线观看| 超碰性爱97| 成人久久精品| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 狠色婷婷久久一区二区三区_| 国产高清午夜成人在线观看| 国产91啪| 97人人干| 日韩中文字幕2020| 久草看看看| yaouchengrenav| 国产精品黄色三级av| 一级特级aaaa毛片免费观看| 女优免费一区二区永久| 激情欧美日韩女同久久| 怡红院成人视频| 极品销魂美女一区二区| 天堂俺去俺来也www久久婷婷| 国产人妖视频一区在线观看| 少妇一线天久久久久久| 精品人妻视频一区二区三区蜜桃视频| 97人人夜| 可以在线观看的黄色网址| 伊人女女资源在线观看| 操人妻丝袜高跟| 久草草一二三四区久久| 91天天综合日韩欧美| 特级特黄一级毛片免费| 五月婷视频| 宗合情欲网| 国产美女高潮视频| 日韩卡一卡二卡三在线| 高潮内射在线| 97日韩欧美亚洲| 亚洲欧美国产va在线播放频| 大香蕉久| 超碰午夜| 中文字幕天堂在线| 日韩无限资源| 日韩黄色一区二区三区| 人妻一区久久二区三区色播| 日韩电影中文字幕| 亚州操逼网| 夜夜操一区二区| 国产熟女精品一区二区| 丁香九月激情| 少妇三p| 国产综合网站在线播放| 91国产大片| 综合色好色| 国产在线视视频有精品| 麻豆国产成人精品| 国产精品嫩草久久久久| 鸥美极品| 免费A V在线播放| 99啪啪| 91精品人妻一区二区三区蜜桃| 日本视频在线观看污污污| 热久久99999| 国产精品一区二区a| 欧美少妇熟女| 日日骚中文字幕| 日本在线激情一区二区三区| 久久久久久久久成人av解说| 欧美后入式| 欧美黄片视频在线观看免费 | 日韩综合色图| 九九黄色网| 亚洲欧美激情小说| 果冻国产精品麻豆成人av| yy少妇精品久久| 欧美日韩色综合网| 久久99草| 天天干天天操天天干天天操| 操逼啊啊啊91| 欧美一区二区三区成人性生活| 黄色激情电影在线观看| 蜜臀久久久国产| 99国产精品视频尤物| 亚洲成人色情五月天丁香花| 午夜福利免费福利视频| 超碰 欧美| www.激情| 特级特黄一级毛片免费| 热久久无毒不卡| 免费中文在线| 60秒不遮不挡| 久久伊人网视频一区二区三区 | 97久久精品亚洲| 欧美91精品国产自产| 色欧美天天| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 深夜激情无码| 色臀av| 久久九九一区二区三区成人| 中日亚韩免费视频| 97色综合中文网| 九九热免费国产视频婷婷伊人| 无码人妻一区二区三区色欲aⅴ| 熟女自慰久久久| 国产一区二区精品久久99| 高精欧美色| 久久久久久久九九九九九九| 久久精品久久九九精品| 久久久久99999| 美女淫穴| 欧美色图20P| 超碰亚洲欧美日韩无| WWW操逼| 亚洲区限制级 99| 婷婷色综合| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 亚洲天堂电影网| 婷婷99狠狠| 成人av在线播放| 人妻喷水| 国产亚洲欧洲在线观看| 五月婷婷六月激情| 黄色AAAAAAAAAAA大片| 中文字幕丝袜| 青青草玖玖爱| 欧美久久毛片基地| 天美精品av| 成人免费福利网站国产| 欧美性爽xyxOOOO| 久久后入制服| 亚洲第一色页夜| 天天插天天插| 久久欧美性爱视频| av网站在线观看了| 色视频蜜乳| 日韩精品午夜操呦呦不卡影院| 久久水蜜臀亚洲AV无码精品| 亚洲天堂女优在线| 亚洲欧洲偷拍一区| 成人欧美一区二区三区黑人一| 国产成人一级av88| 黄片免费视频2019| 91久久久久久久久久久| 久久精彩视频| 色一色综合网| 99这里有精品| 99熟女| 国语精品内射在线观看| 99久久久久久亚洲精品不卡| 亚洲色欧美| 欧美性夜| 色欲av国内精品久久久久久| 老熟女综合网| 中文字幕成人乱码熟女精品国50 | 艹比视频国产精品| 国产精品无码在线| 手机在线人成免费视频| 十八禁的黄污污免费网站| se吧提供91精品国产91久久久久久 | 人妻另类 专区 欧美 制服| 亚洲色人阁| 台湾佬大香蕉| 国产日韩久久| 97久久久| 国模无码人体一区二区三| 另类图片天天影视| 99久久久无码国产精品性啊聊| 亚洲av资源| 春色综合网| 91青青草| 中文字幕人妻资源在线| 东北丰满熟女国产一区| 久久九九国产精品| 色综合婷婷| 五月天激情网图片| 亚洲熟女国产综合另类| 九九成人精品| 91丨精品丨国产丨丝袜| 941超碰| 国产成人精品网站| 日韩性爱一级片| 玖玖爱在线视频免费观看| 性生活久久久久久久久久| 91色综合激情| 97在线欧| 91精品91久久久久77777俄罗斯老妇姓x| 国产精品乱码久久久久| 亚洲精品性爱片| 另类 日韩 熟女| 99精品在线观看| 一区,二区,三区网站| 青青草视频导航官网| 亚洲素人网| 18精品一二区| 懂色av色欲av蜜臀av| 美女国产一区二区久久| 精品少妇后入一区二区三区四区人妻巨乳| 日韩AV一区二区三区三州三州| 亚熟hd视频在线| 人妻丰满熟妇av无码区蜜桃| 69视频入口| 操逼逼福利视频| 狂操嫩妻视频一区二区三区| 麻豆成人av| 熟妇人妻精品一区二区| 啪啪啪东京| 狠狠久久亚洲欧美专区| 亚洲综合夜色| 中文字幕精品一区二| 97精品综合久久| 久草资源在线视频官方总站日韩丝袜美腿 | 色九九九九九九| 97超碰人人模人人拍人人| 欧亚性爱啪啪| 91日日| 人人妻人人爽| 日本在线不卡v二区| 北京专精特新企业招聘信息| 久草毛片| 国产精品免费美女视频| 啊啊好多水| 国产精品乱码久久| 亚洲成人网站在线观看| 色97综合中文字幕| 伊人久久大香线综合无码| 欧色网址| 婷婷六月色| 久草成人影片| 最好看的中文字幕在线2018| 午夜啊啊啊| 亚洲国产精品无码AV久久| 久久婷婷影院| 小电影欧美91| 国模精品娜娜一二三区| 天堂精品| 午夜欧美女人操逼| 骚日日av| 国产精品久久伊人| 夜夜嗨一区二区三区三州加勒比| 国产女人和拘做爰视频 | 欧美日韩人妻婷婷一区| 国产黄片精品在线| 天天综合网1| 日本性爱欧美性爱| 久久啊啊啊视频| 日韩免费看在线黄色片| 夜夜综合| 福利在线观看一区二区| 丝袜狠狠草尤物 91| 变态乱伦伪娘灌肠一区二区| silk lablo在线观看一区二区| 精品欧美不卡在线播放| 熟女天天干| 国产啊v在线免费播放| 日夜干射色啊| 在线看片国产精品每日更新| 激情四射婷婷六月天| 亚洲第一狼人丝袜美女另类| 曰韩香蕉97| 国产精品蜜乳AV| 夜夜操夜夜高潮夜夜爽国产精品区| 亚洲精品第一| 人妻丝袜一区二区三区在线| 久久精品亚洲婷婷| 国产高清精品一区二区三区毛片| 亚洲熟久久| 亚洲一卡2卡3卡4卡乱码网站| 色阁阁AV综合网| 一区二区三区精品久久| 色香综合| 国产精品视频播放| 亚洲av淫乱| 99999久久精| 色一射色一射| 国产69精品久久久久99尤物| 蜜臀网 一区| 久久一区,青青青青草视频在线播放| 国产精品4p在线观看| 亚洲综合骚逼| 丝袜熟女2P| 久久久久久亚洲中文| 少妇人妻在线| 中文字幕视频2区| 青娱乐国产盛宴视频| 日韩十八禁| 操操操操操操| 亚洲,欧美,春色,另类| 天天狠操| 欧美综合网在线| 性色国产东北露脸精品视频| 久久婷婷精品| 国产高清无码一区三区二区| 超碰97伊人| 久久色一区二区| 长长久久免费视频| 自拍视频一区在线观看| 99国产精品| 九九九只有精品| 亚洲情色1区| 一块操欧美性爱| wwwxxx日本爽| 男人天堂网址| 撸无码不卡免费视频| 在线黄色污污网站| 澳门成人网站久国产日韩| 国产18精品亚洲精品| 青青青国产手线观看视频2| 久久久久女教师免费一区| 女人的天堂大香蕉网| 成人在线视频二区| 中文字幕在线日亚州9| 人人潮人人摸| 91一区二区三区蜜桃| 久久精品无码专区| 精品国产乱码久久久影院| 91日产欧美| 好好的日:com久久九九| 国产原创精品| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 在线国产福利网址导航| a亚洲欧美色欲| 亚洲图片欧美色| av影院十区| 干美女人妻| 天天干夜夜肏| 国产天天噜一噜久久久| 蜜桃狠狠色伊人亚洲综合| 欧美日本天堂| 91黑丝美女| 亚洲色图国产另类| 97精品视频免费| 欧美香蕉视xxx| 超碰色中文| 亚洲中文字幕妇伦久久| 91丝袜美腿网站| 青娱乐亚洲热| 欧洲中文字幕| 亚洲欧洲色情高清| 日日嗨AV一区二区夜夜| 91精品久久久久久77777| 性爱AV天堂| 欧美在线色| 97久久国产亚洲精品超碰热| 久久是精品| 青青草AV色| 传媒在线观看一区二区三区| 女人综合网| dy888午夜老子影视达达兔| 人妻三级在线中文字幕| 亚洲成人在线高清| 亚洲人妻在线一区| 日本在线不卡v二区| 国产乱伦性爱AV| 丁香五月综合| 69视频福利导航| 久草草一二三四区久久| 欧成人在线| 91亚洲色图| 黄片国产精品一区二区| 亚洲色图欧美视频| 国产久久一区二区午夜| 天天日天天射天天干| 91高潮喷水美女| 男人的天堂Va| a片久久久久久久久久久久 | 熟女自慰久久久| 亚洲性综合| 亚洲狠狠入| 久久综合九色综合欧洲98| 国产精品一区二区校花| 中文激情网| 欧美综合色站| 亚洲精品97久久中文字幕| 在线视频97| 亚洲αv一区二区三区| a在线视频免费观看| 蜜臀精品1区2区| 亚洲影视第一页| 亚洲 暴爽 AV人人爽日日碰| 思思性爱| 欧美中文字幕一区 | 襙一襙| 免费人成?大片在线播放| 亚洲国男人的天堂| 大屁股国产在线视频| 啊啊啊久久| av在线一区二区三区| 久久久久成人蜜桃精品| 亚洲清纯唯美| 激情小说图片亚洲首页| 99色色网| 大屁股熟女一区二区三区| 欧美成人免费在线观看| 无码日韩网站| 性交一区二区在线播放| 国产精品人妻无码久久久老鸭窝| 高清在线偷拍自拍视频| 1204金沙人妻懂旧版免费| 91五十路| 人妻AV在线| 韩国嫰模上门援交视频| 国产在线强奸视频| 欧美熟妇人体| 女人天堂av在线播放| 国产亚洲综合欧美一区| 激情啪啪视频| 无码日韩人妻av一| 色婷婷久久综合超碰| 久久的免费性爱视频| 久久综合五月天| 少妇精品久久久八区九区| 天天弄天天操| www.99热在线只有精品| 亚洲 欧美 日韩 国产一区二区 | 大香蕉78| 欧美精品另类人妖xxxx| 啊啊啊啊好疼| 25国产精品免费观看| 国产乱码久久久| 亚洲操逼视频网站| 蜜桃香蕉久草精品在线| 国产吞精a级片激情电影| 91视频综合在线| 欧美亚洲尤物久久| 老司机午夜精品福利视频一区二区 | 激情自拍 校园春色| 四虎影视精品| 极品五月天噜噜| 91另类| 亚洲综合另类欧美久久久| 亚洲国产丝袜熟女av| 91女在线观看| 人人人摸人人| 狠色婷婷久久一区二区三区_| 中文字幕一区二区免费在线| 亚洲综合射| 手机在线看片免费人成视频| 青女偷拍网| 丁香激情五月| 亚洲无码视频免费在线观看网址!| 97干在线看| 韩三级a视频在线观看| 我中文字幕6区| A片 AV一级在线播放观看免费 | 六十路日本| 超碰九7| 天天综和| 日逼国产| 久久久久久久97| 中文字幕亚洲欧美在线不卡| 亚洲导航深夜福利| 欧美日韩制服| 亚洲中文字幕乱码无码一区二区| 眼镜人妻101.com| 中字一区| 久久欧美1卡2卡3| 日韩操逼HD| 久久亚洲日韩熟女精品| 国产日韩精品一区二区三区| 日韩人妻一二三区视频| 久久久啊啊啊| 96免费视频在线| 日本精品成人无码| 婷婷伊人五月| 久草老司机| 中文字幕精品人妻丝袜| 一区二区三区四区免费视频| 超碰色97| 嗯,啊。舔我逼| 嗯嗯嗯好爽| 乱伦图一区| 亚洲乱妇p22| 好爽免费视频,| 97AV爱| 国产无马视频| 新亚洲无码| 亚洲综合草草| 久久AV无码1区2区3区| 色播综合| 一区二区三区黄片免费观看| 国产精品久久久久久久久久久久久久吹 | 欧美一区二区三区日韩| 我要去看2个日本美女.com曹逼| 中文一区二区| 另类av天堂| 丝袜熟女2P| 日韩中文字幕二区| 在线免费观看日韩一区| 99re在线| 精品久久久久综合无码| 精品妇操一区二区三区| 黄色十八禁网站| 九九视品黄色| 亚洲无码99| 全球成人中文在线| 国产精品久久久久久无码红治院| 黄片www视频免费| 精品久久97| 日韩欧美~中文字| 天堂资源站| 97国产天堂岛| 91久久18禁| 亚洲中文人妻色| 熟妇熟女亚洲天堂网| 香蕉久久国产AV一区二区| 日韩欧美中文| 性色av蜜臀av色欲aV| 国产强奸乱伦xd| 91人精品妻入口| 九九九精品成人免费视频小说| 亚洲加勒比| 偷拍视频青青草在线视频| 久久r精品| 啊啊啊啊,啊啊好多水| 欧美第二页午夜| 亚洲91综合| 中文无线日韩一区| 超碰在线在公开超碰在线在公开| 美国三级日本三级久久99| 久久精品人妻一区二区| 午夜综合在线| 超碰在线综合97| 91中文字幕在线观看| 性生活性生大爱77AV国产| 性欧美| 美女性91| 欧美第一页| 日本一区二区三区免费观看| 小日子操bb在线看| 思思热国产在线视频| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 免费操逼视频下载| 97人人射| 亚洲综合在线高清| 91国产美女丝袜足交精品视频| 精品美女少妇一区二区三区| 亚洲伊人久久精品影院| 天操天操夜操夜月操月年年操操| 人妖欧美一区二区| 亚洲国产97| 国产91av在线播放| 亚洲乱码国产乱码精网站| 色99视频| 欧洲Au麻豆| 干我久操| 日本不卡高清视频| 色婷久久| 天天亚洲综合| 污电影在线观看| 欧美精品在线观看| 日本狂喷奶水在线播放212| 99热66| 中文操逼字幕| 欧美传媒| 麻豆国产96在线| 区日韩亚洲乱码av电影| 色 亚洲 91| 国产一区二区三区白丝| 立川理惠加勒比无码| 中文字幕aⅴ在线视频| 丰满搜索结果 -第18页- 久久高清无码| 高清国产精品无码| 天堂蜜桃无码视频一区二区| 四虎视频在线观看| 精品一区二区三区蜜桃| 91看黄片| 蜜臀少妇一区二区| 97情超碰色| 收看日本人日bb| 91大神电影天堂| 中国少妇啪啪视频| 丁香婷婷九月| 青青色在线观看| 国产情侣自拍在线播放| 另类av综合久久| 一级性爱啪啪视频| 日日橹狠狠爱欧美超碰| 久久久久久9| 黄色AV影视| 老司机香蕉久久久久| 欧美精品自慰系列寂寞少妇| 宗合情欲网| 神马久久久久久| 狠狠狠一区二区三区| 久久精品店| 亚洲AV免费在线观看| 家庭乱伦麻豆| 亚洲少妇激情视频| 欧美丰满少妇xx高潮| 夜夜骑天天燥| 天天草天天干天天日| 人人九九精| 女优视频第10页| 天天综合网91| 大乔未久88一区| 热久久99999| 福利五区| 欧美亚洲综合色| 综合影院永久入口国产| 精产国品一区二三产品| 亚洲免费在线探花| 99AV| 欧美日韩亚洲天堂网| 欧 美 自 拍 偷 拍| 97草草| 校园春色综合色| h无码动漫在线观看| 欧美美女视频| 丰满精品人妻少妇久久字幕| 韩国一级做A片免费的| 久久精品熟女亚洲AV麻豆软件| 欧美青青视频| 夜夜高潮夜夜爽高清视频一| 国产强上视频在线观看| 思思热一热婷婷热一热| 欧美熟女逼久久久久久| 99热这里都是精品| 国产综合网站在线播放 | 九区国产| 日本免费一区二| 色色五月婷| 嫩草一区二区在线观看| 欧美日韩午夜精品一区二区三区| 好湿好紧视频| 亚洲图片在线| 夜色97| 嫩草影院永久在线制服丝袜| 亚洲天堂中文字幕无码男同| 国产精品午夜高潮呻吟久久av| 在线综合 亚洲 欧美中文字幕| 男人天堂资源| 亚洲欧美999| 人人妻人人玩人人澡人人爽| 97中文字幕九区| 亚洲色图欧美色图综合| 久欲AV| 97色操| av天堂电影网| 99久久精品国产系列| 麻豆综合一区av| 一级性爱啪啪视频| 啊啊啊不要好疼视频| 中美日韩毛片| 五月婷婷六月天| 屁股久久久久久| 日本506070| 欧美性爱综合,免费| 18禁看网站一区| 国产绿奴视频在线观看| 中国国产精品一区视频| 亚洲中文日韩精品| 97资源制服丝袜| 亚洲欧洲久久天堂| 久久久偷拍| 五月天久久综合网| 五月丁香激情啪啪| 精爱久久| 婷婷10月天青娱乐| 欧美色www亚洲国产阿娇要播| 影音先锋乱伦资源| 99热日本| 欧美在线视频观看一二三四区高清 | 欧美999999| 亚洲性天堂| 免费中文在线| 天美av在线观看| 福利大香蕉| 美国日韩黄片| 亚洲色图久久成人| 精品9999| 中国zzijzzijzzwww精品| 91九色网| 欧美性五月| 国产偷拍自拍在线视频| 97色在线观看| 亚洲丝袜诱惑| 激情六月天| 精品在线78| www.人人cao| 97射欧美| 熟女六十路| 人澡逼| 激情网色| 免费草草草草草视频| 性久久| AV丝袜东京热| 两性综合网| 91国产丝袜白虎| 欧美成人精品A片免费一区99| 久久久久久久久久久精| 亚洲激情av| 爱逼综合| 1204金沙人妻懂旧版免费| 日本熟妇一区二区三区| 久久精品噜噜噜成人看免欧美大片| 成人性爱电影一区二区| 97伊人| 嗯……啊…嗯嗯…啊…好舒服| 永久免费观看的毛片的网站| 蜜臀精品1区2区| 强奸乱伦资源| 色色99| 欧美夜夜草视频| 欧亚日韩综合精品国产| 国产激情片在线观看| 色悠久| 五月开心久久AV官网| 欧美成人午夜免费福利785| 亚洲情色视频| 国产第二页| 五月婷婷基地| 思思热免费在线视频| 外国免费性情大片| 激情欧美日韩女同久久| 五月天成人综合| 八人操人人摸人人看| 国产精品电影大全| 超碰色美女| 亚洲国成人情色好看电影| 日本日皮视频逼| 成人26uuu| 97在线视频免费观看| 国偷自 一区| 久久一二三四不卡| 青青草自拍视频在线播放| 97超碰色屌| 色色五月天激情| 91 亚洲 欧美 日韩 国产 综合| www.久久制服糖| 青娱乐国产剧情av一区| 射综合网| 美女久久久久久久久久久| 91日产桃蜜| 伊人网在线点播| 亚洲色图欧美色图在线播放| 夜夜爽夜夜摸夜夜操免费视频| 美女十八禁| www.狠狠| 五月婷色| 无码又爽又硬又激情免费视频| 亚洲码专区| 少妇滛荡视频| 黑丝少妇| 不卡九肏| 欧美A√综合网| 少妇无码999| 99999这里都精品| 丁香五月社区| 伊人玖玖网| 亚洲色图加勒比| 97亚洲一区| 色眯眯av| 天天摸天天操视频| 成人精品在线免费视频| 亚洲无码视频免费在线观看网址!| 爱妃国产亚洲视频中文字幕| 国产超碰AV在线精品| 天天干天天操天天干天天操| 激情网五月天| 久久久久9999妇女| 伊香蕉综合久久久久久久噜噜噜| 无码人妻1727| 日韩激情中文字幕有码| 精品国产嫩穴视频| 亚洲熟妇综合久久久久久| 亚州欧美色图| 国产福利精品最新在线| 日本一区二区三区精品| 男人天堂毛片| 国产精品毛片?v一区二区三区 | 超碰97玖玖爱| 97视频播放| 久久久国产亚洲精品系列| 97免费在线视频在线观看| 亚洲久久天堂| WWW黄片COM| 黑人与人妻| 日韩中文字幕国产| 九色 人妻 大香蕉| 校园春色亚洲色图| 亚洲一区日韩| 欲综合网| 蜜乳AV一区二区三区四| 中文字幕人妻色偷偷久久皮 | 猛交交| 人妻一区二区三区熟女| 国产亚洲国产超碰| 偷拍亚洲情色| 中文在线久久字幕| 91综合网站| 夜夜爽77777| 91精品人妻偷情| 国产精品久久久久绯色| 亚欧毛片基地国产毛片基地| 青青操97| 国产传媒操逼视频| 中文久久96| 欧美久久伊人| 麻豆精品.欧美精品.日韩精品.| 亚洲AV免费在线| 亲子敌伦对白在线播放| 91电影色诱| 乱欲一区二区| 成人怡红院| 97超碰巨乳| 99久热| 国产人妖的免费的视频| 国产精品69久久久久久久 | 天天干一区二区| 飘花国产午夜精品不卡| 亚洲双插| 91欧美美女日韩国产婷婷| 操婷婷逼| 一区操逼| 欧美一级二级三级| 97色涩| 欧洲中文字幕| 看一级黄色视频| 丰满人妻一区二区三区性色| 午夜操操操| 亚洲视频二区 | 国产精品久久久久999| 97精品一二区| 大香蕉丝袜一级片| 日韩乱伦AⅤ| 日韩欧无码一区二区三区免费不卡| 五十路二区在线| 啊好大好舒服| 婷婷五月花| 啊视频在线| 人妻人人做人人澡人人爽欧美一区| 国产97视频| 亚洲女优有码无码高清| 欧美日韩亚洲电影| 75大香蕉| 色九月综合| 日产中文字幕2020| 亭亭丁香激情| 亚洲宗合电影| 日本A级视频| 精品久久久久9999| 伊人97色天使| 超碰午夜在线| 成人黄页| 人妻丰满熟妇av无码区蜜桃| 91伊人久久在线| 91青青在线| 玖玖综合网| 亚洲本色精品一区二区久久| 日本成人在线不卡一区二区三区| 少妇高潮对白在线观看| 国产精品视频精品一二| 99热最新| 97久精品| 欲女人妻性色av| 78精品| 三级特黄60分钟播放| 欧美系列在线一区二区| 牛牛aV| 日本一区二区三区欧美日韩中文字幕 | 天天做天天爱天天爽AV| 免费成人在线熟妇网| 超碰97极品9| 亚洲国产一区二区日韩专区| 久久国内| 夜夜操老骚逼视频网站| 亚洲少妇激情视频| 久久久人妻| 日韩久久.一级黄色片| 久久中文字幕人妻熟av女蜜柚| 欧美亚洲丝袜人妻制服99| 亚洲最大AV网| 国产成人+综合亚洲+天堂| 亚洲色图欧美色图制服丝袜| 色九色久| 欧美aaaaaaa| 搡老女人老妇女老妇老熟女怎么读| 四虎免费看黄| 淫荡网址| 婷婷尹人大香蕉免费| 我爱搞逼综合网| 伊人久久综合影院精品久久久| 天天躁日日躁XXXXYY| 国产美女激情| 久久透逼视频| 国产有码一区| 日韩在线观看三级电影| www99热| 大逼色网站| 99操逼| 久草加勒比一区在线| 日本 欧美 亚中文字幕| 欧色网址| 欧日韩不卡视.频| 色婷婷国产精品一区在线观看| 亚洲 日本 一 二 三| 人妻熟女一区二区三区视频| 亚洲欧洲国产综合av| 国产一线二线三线av| 婷婷五月天激情小说| 亚洲色图欧美色图另类图片| 国产农村妇女一区二区| 国产在线能看的你懂的| 中文字幕人妻色偷偷久久皮 | 91狠| 伦激情人妻另类人妻| 亚洲一二三| 婷婷五月天伊人| 黑人猛交| 国产av色网| 91 亚洲 欧洲| www..com操老师| 欧美激情 亚洲色图| 老熟女熟妇| 日本女人操逼| 囯戸精品高潮呻吟旡码| 草B在线| 久久亚洲人妻| 校园春色制服丝袜中文字亚洲| 久久国产熟女影院| 久久丝袜| 日本高清熟女久久一区| 亚洲精品97在线| 欧美人人AAA| 国语国产操逼伊人AV网| 日本久久超碰| 久久久熟女一区| 亚洲自拍另类丝袜综合| 色拍偷亚洲| 精品久久久无码| 色色五月天婷婷| 玖玖爱免费观看视频| 秋霞一级A片黄色视频| 9丨久久九九九 | 内射夫妻三片| 国产亚洲色婷婷久久99精品91 - 百度| 加勒比av网| 精品人妻一区二区三区蜜桃视频| 欧美色66|