概要
本文總結(jié)采用目前最流行的Hadoop生態(tài)圈和Spark生態(tài)圈搭建一套完整的分布式日志采集系統(tǒng),支持離線和實(shí)時(shí)計(jì)算,可以滿(mǎn)足多種需求,例如PV,UV,實(shí)時(shí)交易量等各個(gè)業(yè)務(wù)下的場(chǎng)景。
項(xiàng)目架構(gòu)
項(xiàng)目架構(gòu)圖
集群一覽
大數(shù)據(jù)兩個(gè)重要角色
- 存儲(chǔ) 采用Hadoop集群
角色 | ip |
---|---|
NameNode | 192.168.6.98 |
DataNode1 | 192.168.6.92 |
DataNode2 | 192.168.6.99 |
- 計(jì)算 采用Spark
角色 | ip |
---|---|
Master | 192.168.6.98 |
Worker1 | 192.168.6.92 |
Worker2 | 192.168.6.99 |
組件清單及功能
- Tomcat 主要搜集業(yè)務(wù)上報(bào)的日志,例如自定義JS的PV和點(diǎn)擊,移動(dòng)客戶(hù)端的PV和點(diǎn)擊等,需要出接口和對(duì)應(yīng)SDK幫助各個(gè)業(yè)務(wù)線和端集成簡(jiǎn)單,快速,正確。(參考示例例如友盟)
- Nginx 作為反向代理服務(wù)器,主要搜集服務(wù)器日志,好處無(wú)需各個(gè)端主動(dòng)上報(bào),缺點(diǎn)不能夠滿(mǎn)足各種復(fù)雜的需求
- Flume 分布式日志采集器,優(yōu)點(diǎn)可以指定日志輸出目錄,代替做FTP日志文件服務(wù)器,不需要再主動(dòng)下載日志文件,而是主動(dòng)下發(fā)到Hadoop和Spark服務(wù)器。
-
Kfaka 高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費(fèi)者規(guī)模的網(wǎng)站中的所有動(dòng)作流數(shù)據(jù)。
實(shí)時(shí)路線 - spark-streaming 拿到kafka的實(shí)時(shí)數(shù)據(jù)流,進(jìn)行實(shí)時(shí)計(jì)算,它以時(shí)間片為消費(fèi)單位,比如可以設(shè)置為1秒
-
Redis NoSQL中的鍵值對(duì)內(nèi)存數(shù)據(jù)庫(kù)(不夠會(huì)擴(kuò)展到磁盤(pán)),用一定的計(jì)算邏輯,計(jì)算實(shí)時(shí)的PV和UV數(shù)據(jù)
離線路線 - HDFS Hadoop分布式文件系統(tǒng),主要用于日志存儲(chǔ),本文采用Apache開(kāi)源的,還有一些商用的未采用,下文會(huì)做小知識(shí)分享。
- Hive 數(shù)據(jù)倉(cāng)庫(kù),清洗數(shù)據(jù)后,存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),本身?yè)碛袕?qiáng)大的SQL支持,簡(jiǎn)單易學(xué),尤其針對(duì)pv,uv統(tǒng)計(jì)相當(dāng)方便
- Hue 圖形化顯示Hive倉(cāng)庫(kù)的Web工具,直接使用圖形化來(lái)執(zhí)行SQL,快速拿到想要的數(shù)據(jù)。
- MySQL 最終想要的業(yè)務(wù)數(shù)據(jù)會(huì)使用PySpark任務(wù)做處理,放置到該Mysql中,同時(shí)可以作為Hive的元數(shù)據(jù)存儲(chǔ)
- AZKABAN 相當(dāng)好用的生成定時(shí)任務(wù),同時(shí)很方便的提供圖像化操作,方便創(chuàng)建以及管理查看任務(wù)運(yùn)行情況
- CentOS本集群構(gòu)建所使用的基礎(chǔ)計(jì)算機(jī)操作系統(tǒng)
- Spark計(jì)算集群
- Python 用于清洗數(shù)據(jù)的腳本,計(jì)算業(yè)務(wù)數(shù)據(jù)的腳本
- SSM 用來(lái)搭建Web后臺(tái)
結(jié)束
為什么如何搭建都沒(méi)有講?具體如何搭建集群以及各個(gè)環(huán)節(jié)如何融入的技術(shù),請(qǐng)自行參考其他博文,本文只闡述項(xiàng)目架構(gòu)。
搭建以上各個(gè)組件細(xì)節(jié)甚多,坑甚多,不同組件版本會(huì)遇到不同情況。我寫(xiě)出來(lái)也不具有統(tǒng)一參考性,我覺(jué)得自行摸索配合該架構(gòu)圖,會(huì)逐步打通整個(gè)業(yè)務(wù)流程,熟悉掌握大數(shù)據(jù)集群這兩個(gè)關(guān)鍵性技術(shù)存儲(chǔ)和計(jì)算。