一、主流的批處理和流處理框架
- Hadoop中的MapReduce只能做離線計算,也就是批處理,並且基於磁盤計算,屬於IO密集型,Shuffle階段需要大量算力,並且只有map和reduce。
- Spark作爲一個微批處理的大數據計算框架,主要作用就是類似MapReduce,Spark Streaming可以實現傳統意義上的流式計算,但是正如開頭所說,屬於微批處理,並不是完全的實時,但是Spark基於內存運算,計算能力非常強大。
- Storm是真正的流式處理,來一條數據處理一條,但是對於超大流量Storm的處理並不太好。
- 而最近幾年興起的Flink,作爲和Spark一樣的計算框架,利用Hadoop作爲數據存儲,利用Flink進行計算,Flink是真正的滿足實時性要求的計算框架,可以實現毫秒級的相應,面向真正的流數據,以一行一行爲計算單位,速度非常快。
二、Flink相關介紹
批處理和流處理
- 批處理
批處理主要操作大容量靜態數據集,並在計算過程完成後返回結果。可以認爲處理的是一個固定時間間隔分組的數據點集合。批處理模式中使用的數據集通常符合下列特徵:
1. 有界:批處理數據集代表數據的有限集合
2. 持久:數據通常始終存儲在某種類型的持久存儲位置中
3. 大量:批處理操作通常是處理極爲海量數據集的唯一方法 - 流處理
流處理可以對隨時進入系統的數據進行計算。流處理方式無需針對整個數據集執行操作,而是對通過系統傳輸的每個數據項執行操作。流處理中的數據集是“無邊界”的,這就產生了幾個重要的影響:
1. 可以處理幾乎無限量的數據,但同一時間只能處理一條數據,不同記錄間只維持最少量的狀態
2. 處理工作是基於事件的,除非明確停止否則沒有“盡頭”
3. 處理結果立即可用,並會隨着新數據的抵達繼續更新
三、電商用戶行爲分析指標
- 統計分析
1. 點擊、瀏覽
2. 熱門商品、近期熱門商品、分類熱門商品、流量統計 - 偏好統計
1. 收藏、喜歡、評分、打標籤
2. 用戶畫像,推薦列表(結合特徵工程和集器學習算法) - 風險控制
1. 下訂單、支付、登錄
2. 刷單監控,訂單失效監控,惡意登錄(短時間內頻繁登錄失敗)監控
四、項目環境
Windows10、Centos7(三集羣,三臺分別都是6G,8核)、Idea2019.3、Maven3.3.9、Flink1.7.2、kafka2.11-2.1.0、sacla2.1.18、jdk1.8
五、項目主要模塊
-
熱門統計
利用用戶的點擊瀏覽行爲,進行流量統計、近期熱門商品統計等。 -
偏好統計
利用用戶的偏好行爲,比如收藏、喜歡、評分等,進行用戶畫像分析,給出個性化的商品推薦列表。 -
風險控制
利用用戶的常規業務行爲,比如登錄、下單、支付等,分析數據,對異常情況進行報警提示。 -
說明
本項目限於數據,只實現熱門統計和風險控制中的部分內容,將包括以下四大模塊:實時熱門商品統計、實時流量統計、惡意登錄監控和訂單支付失效監控。
由於對實時性要求較高,用flink作爲數據處理的框架。綜合運用flink的各種API,基於EventTime去處理基本的業務需求,並且使用底層的processFunction,基於狀態編程和CEP去處理更加複雜的情形。
五、數據源解析
一共是五份淘寶用戶行爲數據集,保存爲 csv 文件。此數據集包含了淘寶上某一天隨機一百萬用戶的所有行爲(包括點擊、購買、收藏、喜歡)。數據集的每一行表示一條用戶行爲,由用戶 ID、商品 ID、商品類目 ID、行爲類型和時間戳組成,並以逗號分隔,分別保存在每一個分項目的resource中。
六、項目地址
Flink電商用戶行爲分析系統(用戶畫像)Github地址
可Fork可Clone