概要
本文總結(jié)采用目前最流行的Hadoop生態(tài)圈和Spark生態(tài)圈搭建一套完整的分布式日志采集系統(tǒng),支持離線和實(shí)時(shí)計(jì)算,可以滿足多種需求抱冷,例如PV,UV梢褐,實(shí)時(shí)交易量等各個(gè)業(yè)務(wù)下的場景徘层。
項(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)客戶端的PV和點(diǎn)擊等,需要出接口和對(duì)應(yīng)SDK幫助各個(gè)業(yè)務(wù)線和端集成簡單瘦癌,快速猪贪,正確。(參考示例例如友盟)
- Nginx 作為反向代理服務(wù)器讯私,主要搜集服務(wù)器日志热押,好處無需各個(gè)端主動(dòng)上報(bào),缺點(diǎ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ù)庫(不夠會(huì)擴(kuò)展到磁盤)惹挟,用一定的計(jì)算邏輯,計(jì)算實(shí)時(shí)的PV和UV數(shù)據(jù)
離線路線 - HDFS Hadoop分布式文件系統(tǒng)缝驳,主要用于日志存儲(chǔ)连锯,本文采用Apache開源的归苍,還有一些商用的未采用,下文會(huì)做小知識(shí)分享运怖。
- Hive 數(shù)據(jù)倉庫拼弃,清洗數(shù)據(jù)后,存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)驳规,本身擁有強(qiáng)大的SQL支持肴敛,簡單易學(xué),尤其針對(duì)pv吗购,uv統(tǒng)計(jì)相當(dāng)方便
- Hue 圖形化顯示Hive倉庫的Web工具医男,直接使用圖形化來執(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 用來搭建Web后臺(tái)
結(jié)束
為什么如何搭建都沒有講埠偿?具體如何搭建集群以及各個(gè)環(huán)節(jié)如何融入的技術(shù)透罢,請(qǐng)自行參考其他博文,本文只闡述項(xiàng)目架構(gòu)冠蒋。
搭建以上各個(gè)組件細(xì)節(jié)甚多羽圃,坑甚多,不同組件版本會(huì)遇到不同情況抖剿。我寫出來也不具有統(tǒng)一參考性朽寞,我覺得自行摸索配合該架構(gòu)圖,會(huì)逐步打通整個(gè)業(yè)務(wù)流程斩郎,熟悉掌握大數(shù)據(jù)集群這兩個(gè)關(guān)鍵性技術(shù)存儲(chǔ)和計(jì)算脑融。