Hadoop之Flume詳解


1、日志采集框架Flume
  1.1 Flume介紹
    Flume是一個分布式、可靠、和高可用的海量日志采集、聚合和傳輸的系統。
    Flume可以采集文件,socket數據包等各種形式源數據,又可以將采集到的數據輸出到HDFS、hbase、hive、
    kafka等眾多外部存儲系統中
    一般的采集需求,通過對flume的簡單配置即可實現
    Flume針對特殊場景也具備良好的自定義擴展能力,因此,flume可以適用於大部分的日常數據采集場景

  1.2 運行機制
    1、 Flume分布式系統中最核心的角色是agent,flume采集系統就是由一個個agent所連接起來形成
    2、 每一個agent相當於一個數據傳遞員(Source 到 Channel 到 Sink之間傳遞數據的形式是Event事件;
      Event事件是一個數據流單元。) ,內部有三個組件:
      a) Source:采集源,用於跟數據源對接,以獲取數據
      b) Sink:下沉地,采集數據的傳送目的,用於往下一級agent傳遞數據或者往最終存儲系統傳遞數據
      c) Channel:angent內部的數據傳輸通道,用於從source將數據傳遞到sink

  1.3 采集案例
    1、采集目錄到HDFS
      采集需求:某服務器的某特定目錄下,會不斷產生新的文件,每當有新文件出現,就需要把文件采集到HDFS中去
      根據需求,首先定義以下3大要素
      1) 采集源,即source——監控文件目錄 : spooldir
      2) 下沉目標,即sink——HDFS文件系統 : hdfs sink
      3) source和sink之間的傳遞通道——channel,可用file channel 也可以用內存channel
    配置文件編寫:
      # 配置source組件
      agent1.sources.source1.type = spooldir
      agent1.sources.source1.spoolDir = /home/hadoop/logs/
      # 配置sink組件
      agent1.sinks.sink1.type = hdfs
      agent1.sinks.sink1.hdfs.path =hdfs://hdp-node-01:9000/weblog/flume-collection/%y-%m-%d/%H-%M
      agent1.sinks.sink1.hdfs.filePrefix = access_log

  Channel參數解釋:
    capacity:默認該通道中最大的可以存儲的event數量
    trasactionCapacity:每次最大可以從source中拿到或者送到sink中的event數量
    keep-alive:event添加到通道中或者移出的允許時間

2、采集文件到HDFS
  采集需求:比如業務系統使用log4j生成的日志,日志內容不斷增加,需要把追加到日志文件中的數據實時采集到hdfs
  根據需求,首先定義以下3大要素
    1) 采集源,即source——監控文件內容更新 : exec ‘tail -F file’
    2) 下沉目標,即sink——HDFS文件系統 : hdfs sink
    3) Source和sink之間的傳遞通道——channel,可用file channel 也可以用 內存channel

    # Describe/configure tail -F source1
    agent1.sources.source1.type = exec
    agent1.sources.source1.command = tail -F /home/hadoop/logs/access_log
    agent1.sources.source1.channels = channel1
    # Describe sink1
    agent1.sinks.sink1.type = hdfs
    #a1.sinks.k1.channel = c1
    agent1.sinks.sink1.hdfs.path =hdfs://hdp-node-01:9000/weblog/flume-collection/%y-%m-%d/%H-%M
    agent1.sinks.sink1.hdfs.filePrefix = access_log

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM