目錄
- 業(yè)務現(xiàn)狀分析
- 實時流處理產(chǎn)生背景
- 實時流處理概述
- 離線計算與實時計算對比
- 實時流處理框架對比
- 實時流處理架構與技術選型
- 實時流處理在企業(yè)中的應用
1. 業(yè)務現(xiàn)狀分析
需求:統(tǒng)計主站每個(指定)課程訪問的客戶端兔仰、地域信息分布旷偿。
- 地域:IP轉換
- 客戶端:useragent獲取
實現(xiàn)步驟:
- 拿到課程編號,IP信息鲸伴,UserAgent
- 進行相應的統(tǒng)計分析操作:MapReduce/Spark
項目架構:基于Hadoop的實現(xiàn)方案
- 日志收集:Flume
- 離線分析:MapReduce/Spark
- 統(tǒng)計結果圖形化展示
問題:
- 小時級別統(tǒng)計沒問題
- 10分鐘忌愚,也可能處理過來
- 如果是5分鐘呢?1分鐘呢?
如何解決呢?使用實時流處理先鱼。
2. 實時流處理產(chǎn)生背景
- 時效性高:業(yè)務對時效性要求比較高
- 數(shù)據(jù)量大:業(yè)務數(shù)據(jù)量比較大,但是數(shù)據(jù)有效密度比較低
3. 實時流處理概述
- 實時計算:響應時間比較短胁出。
- 流式計算:數(shù)據(jù)不斷的進入型型,不停頓段审。
- 實時流式計算:在不斷產(chǎn)生的數(shù)據(jù)流上全蝶,進行實時計算。
4. 離線計算與實時計算對比
- 數(shù)據(jù)來源
- 離線:HDFS歷史數(shù)據(jù)寺枉,數(shù)據(jù)量比較大抑淫。
- 實時:消息隊列(Kafka),實時新增/修改記錄實時過來的某一筆數(shù)據(jù)姥闪。
- 處理過程
- 離線:Map + Reduce
- 實時:Spark(DStream/SS)
- 處理速度
- 離線:速度慢
- 實時:快速拿到結果
- 進程角度
- 離線:啟動 + 銷毀進程
- 實時: 7 * 24小時進行統(tǒng)計始苇,線程不停止
5. 實時流處理框架對比
- Apache Storm:Apache頂級項目,完全的實時流處理框架筐喳。
- Apache Spark Streaming:基于Spark API進行擴展催式,并不是完全實時的,是按照時間間隔拆成小的批處理避归。嚴格并不是實時流處理框架荣月,而是小的批處理框架。
- IBM Stream:用的比較少梳毙。
- Yahoo! S4
- LinkedIn Kafka:不止消息隊列哺窄,也包括了實時流處理。
- Flink:既可以做流式也可以做批處理。
6. 實時流處理架構與技術選型
- Flume實時收集WebServer產(chǎn)生日志
- 添加Kafka消息隊列坷襟,進行流量消峰,防止Spark/Storm崩掉
- 處理完數(shù)據(jù)生年,持久化到RDBMS/NoSQL
- 最后進行可視化展示
7. 實時流處理在企業(yè)中的應用
- 電信行業(yè):推薦流量包一類
- 電商行業(yè):大屏啊婴程,推薦算法