3用戶行爲分析業務數據採集

關於日誌收集

關於服務器日誌

  • 服務器日誌是大數據系統中最主要的數據來源之一
  • 服務器日誌可能包含的信息:
    • 訪問信息
    • 系統信息
    • 其他業務信息
  • 基於服務器日誌的應用:
    • 業務儀表盤:PV,UV等
    • 線上查錯:錯誤日誌查詢
    • 系統監控:調用鏈,接口訪問統計等
    • 其他數據應用
  • 服務器日誌的特點:
    • 不間斷,流式產生
    • 數據量大,信息量大
    • 源頭分散

日誌採集系統的一般架構

在這裏插入圖片描述

日誌採集系統的設計要求

  • 系統可用性:採集系統自身的健壯性
  • 可擴展性:可以隨着應用系統的規模及數據量的增加而線性擴展
  • 可靠性:不會丟失數據
  • 靈活性:支持多種數據源;支持多種處理方式;支持多種採集目
    的地;支持對數據的預處理

Flume

是什麼?

一個高可用的、高可靠的、分佈式的海量日誌採集、聚合和傳輸的系統
#Cloudera公司出品#

角色
在這裏插入圖片描述

版本

  1. Flume OG(original generation, 2009年7月):分佈式日誌收集系統,
    有Master概念,依賴於Zookeeper,分爲agent,collector,
    storage三種角色
  2. Flume NG(next generation, 2011年10月):代碼重構,功能精簡,
    去掉master,collector角色,專注數據的收集與傳遞

Flume 工作原理解析

在這裏插入圖片描述
組成
在這裏插入圖片描述
Flume Flow:

  • Flow:數據採集流程
  • Event:消息處理的最小單位,帶有一個可選的消息頭(head存儲不同web消息的元數據ip:interceptor)
  • Agent:一個獨立的Flume進程,包含組件Source、Channel、Sink
  • Source:以event爲單位接收信息,並確保信息被推送(push)到channel
  • Channel:緩存信息,確保信息在被sink處理前不會丟失
  • Sink:從channel中拉取(pull)並處理信息
  • Interceptor:event攔截器,可以修改或丟棄event

處理流程:
source以event爲單位從數據源接收信息,然後保存到一個或多個channel中
(可以經過一個或多個interceptor的預處理),sink從channel中拉取並處理
信息(保存,丟棄或傳遞到下一個agent),然後通知channel刪除信息

安裝

依賴:

  • jdk1.8

步驟:

  1. 下載安裝包
  2. 解壓
  3. 配置flume-env.sh:設置 JAVA_HOME
  4. 配置 agent:conf/flume-conf.properties
  5. 啓動: $FLUME_HOME/bin/flume-ng agent -n a1 -c conf -f xxx.properties

配置模板

在這裏插入圖片描述

Flow類型-順序流

在這裏插入圖片描述

Flow類型-多對一聚合

在這裏插入圖片描述

Flow類型-一對多路由(分類發送到每個channel)

在這裏插入圖片描述
在這裏插入圖片描述

Flow類型-負載均衡

在這裏插入圖片描述
在這裏插入圖片描述
相關配置練習
https://blog.csdn.net/bingdianone/article/details/84863824#t4

工作流程

在這裏插入圖片描述

Source

在這裏插入圖片描述

Channel

在這裏插入圖片描述

Sink

在這裏插入圖片描述

常見應用場景

場景一:離線日誌收集

場景描述:收集服務器的用戶訪問日誌,保存到Hadoop集羣中,用於離線
的計算與分析

Flume方案:在服務器端配置flume agent,其中:

  • Source採用Spooling Directory Source
  • Channel採用Memory Channel
  • Sink採用HDFS Sink

場景二:實時日誌收集

場景描述:收集服務器的系統日誌,發送給實時計算引擎進行實時
處理

Flume方案:在服務器端配置flume agent,其中:

  • Source採用Spooling Directory Source或 Exec Source(tail –f xxx)
  • Channel採用Memory Channel
  • Sink採用Kafka Sink

場景三:系統日誌收集

場景描述:收集服務器的系統日誌,保存到搜索引擎中,用於線上日
志查詢
Flume方案:在服務器端配置flume agent,其中:

  • Source採用Spooling Directory Source
  • Channel採用File Channel
  • Sink採用ElasticSearch Sink

部署架構圖

在這裏插入圖片描述
中間層可以用sink group來進行多臺部署
在這裏插入圖片描述
git.gupaoedu.com/big-data/gp-bd/issues/10

其他方案

•Logstash(ELK)•Scribe •Chukwa
在這裏插入圖片描述

  • flume是一個即插即用的數據收集組件,只需添加一些配置即可使用;更易使用
  • kafka是一個高性能的分佈式消息隊列,需要自己編寫生產端和消費端代碼,擴展性和穩定性更好

經驗分享

  • 配置相關:
    • Agent的配置中使用統一的命名規則
    • 在啓動命令中添加“no-reload-conf”參數爲true來取消自動加載配置文件功能
    • 基於配置中心讀取統一的配置文件
    • 調大HdfsSink的batchSize,增加吞吐量,減少hdfs的flush次數
    • 適當調大HdfsSink的callTimeout,避免不必要的超時錯誤
  • 架構相關:
    • 將志採集系統系統分成三層:採集、彙總和存儲,採集只管將數據發送
      到彙總層,處理邏輯由彙總層統一處理。好處是簡化採集點的管理
    • 採集點(source)不要直接接入應用系統中,以免由於日誌收集系統問題影響應用系統
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章