第四部分-推薦系統(tǒng)-項(xiàng)目介紹
行業(yè)背景:
快速:Apache Spark以內(nèi)存計算為核心
通用 :一站式解決各個問題麻昼,ADHOC SQL查詢,流計算馋辈,數(shù)據(jù)挖掘抚芦,圖計算
完整的生態(tài)圈
只要掌握Spark,就能夠?yàn)榇蠖鄶?shù)的企業(yè)的大數(shù)據(jù)應(yīng)用場景提供明顯的加速
“猜你喜歡”為代表的推薦系統(tǒng),從吃穿住行等
項(xiàng)目背景介紹:
本項(xiàng)目是一個基于Apache Spark 的電影推薦系統(tǒng)首有,
技術(shù)路線:離線推薦+實(shí)時推薦
項(xiàng)目架構(gòu):
存儲層:HDFS作為底層存儲燕垃,Hive作為數(shù)據(jù)倉庫 (Hive Metastore:Hive管理數(shù)據(jù)的schema)
離線數(shù)據(jù)處理:SparkSQL (做數(shù)據(jù)查詢引擎<===> 數(shù)據(jù)ETL)
實(shí)時數(shù)據(jù)處理:Kafka + Spark Streaming
數(shù)據(jù)應(yīng)用層:MLlib 產(chǎn)生一個模型 als算法
-
數(shù)據(jù)展示和對接:Zeppelin
選用考量:
HDFS不管是在存儲的性能,穩(wěn)定性 吞吐量 都是在主流文件系統(tǒng)中很占有優(yōu)勢的
如果感覺HDFS存儲還是比較慢井联,可以采用SSD硬盤等方案數(shù)據(jù)處理層組件: Hive 在數(shù)據(jù)量不是很大或?qū)?shí)時性沒有那么高要求的時候卜壕,可以選用作為計算引擎 消息隊(duì)列一般還是Kafka,消費(fèi)者端也可以使用Flink,Storm等... 同時,SparkStreaming的優(yōu)勢就是: 已經(jīng)有與各個組件比較好的集成 這里寫一個KafkaProducer作業(yè)實(shí)時將數(shù)據(jù) 放到Kafka 中 應(yīng)用層:MLlib :Spark 對數(shù)據(jù)挖掘機(jī)器學(xué)習(xí)庫的封裝 烙常,ALS是其中一個算法 http://spark.apache.org/docs/1.6.3/mllib-guide.html http://spark.apache.org/docs/latest/ml-guide.html TensorFlow 偏向于深度學(xué)習(xí) Zeppelin:包含各個圖標(biāo)表展示轴捎,而且組件集成性更多鹤盒。作業(yè)調(diào)度略差 HUE 數(shù)據(jù)展示+作業(yè)調(diào)度 系統(tǒng)采用standaone模式,更加簡單侦副。 只有SPARK 環(huán)境侦锯,就使用standalone 脫機(jī)運(yùn)行模式 Hadoop +Spark 就推薦:Spark On Yarn Spark On Docker : 任務(wù)封裝為一個個的Docker,不依賴于你的物理機(jī)環(huán)境,每個Docker 的資源可以更好的分配
主要模塊:
存儲模塊:搭建和配置HDFS分布式存儲系統(tǒng)秦驯,并Hbase和MySQL作為備用方案
ETL模塊:加載原始數(shù)據(jù)尺碰,清洗,加工译隘,為模型訓(xùn)練模塊 和 推薦模塊 準(zhǔn)備所需的各種數(shù)據(jù)亲桥。
模型訓(xùn)練模塊:負(fù)責(zé)產(chǎn)生模型,以及尋找最佳的模型
推薦模塊:包含離線推薦和實(shí)時推薦固耘,離線推薦負(fù)責(zé)把推薦結(jié)果存儲到存儲系統(tǒng)中
實(shí)時推薦負(fù)責(zé)產(chǎn)生實(shí)時的消息隊(duì)列题篷,并且消費(fèi)實(shí)時消息產(chǎn)生推薦結(jié)果,最后存儲在存儲模塊中數(shù)據(jù)展示模塊:負(fù)責(zé)展示項(xiàng)目中所用的數(shù)據(jù)
-
數(shù)據(jù)流向:
在這里插入圖片描述
系統(tǒng)開發(fā)的重難點(diǎn):
數(shù)據(jù)倉庫的準(zhǔn)備 :Spark + Hive 數(shù)據(jù)ETL ,Zeppelin +Hive 數(shù)據(jù)展示
數(shù)據(jù)處理:
實(shí)時數(shù)據(jù)處理 : 1.數(shù)據(jù)實(shí)時性厅目,完整性 番枚、一致性 ,
2.保證應(yīng)用不會崩潰掉损敷,or 崩掉之后及時啟動起來 并 數(shù)據(jù)一致性處理
拓展:
1.數(shù)據(jù)倉庫怎么理解葫笼?兩種東西,其一是IBM微軟數(shù)據(jù)產(chǎn)品為代表的拗馒,其二是Hadoop+Hive
Apache Hive?數(shù)據(jù)倉庫軟件有助于使用SQL讀取渔欢,寫入和管理駐留在分布式存儲中的大型數(shù)據(jù)集。
可以將結(jié)構(gòu)投影到已經(jīng)存儲的數(shù)據(jù)上瘟忱。
提供了命令行工具和JDBC驅(qū)動程序以將用戶連接到Hive。
2.數(shù)據(jù)源準(zhǔn)備:
Data Source:Movielens Open Data
http://files.grouplens.org/datasets/movielens
http://files.grouplens.org/datasets/movielens/ml-latest.zip
[root@hadoop001 ml-latest]# pwd
/root/data/ml/ml-latest
[root@hadoop001 ml-latest]# ll -h
總用量 1.9G
-rw-r--r--. 1 root root 1.3M 10月 17 13:41 links.txt
-rw-r--r--. 1 root root 2.8M 10月 17 16:06 movies.txt
-rw-r--r--. 1 root root 725M 10月 17 16:07 ratings.txt
-rw-r--r--. 1 root root 38M 10月 17 16:08 tags.txt
[root@hadoop001 ml-latest]#
接下來就是開始Coding...
有任何問題苫幢,歡迎留言一起交流~~
更多文章:基于Spark的電影推薦系統(tǒng):https://blog.csdn.net/liuge36/column/info/29285