hadoop之旅10-centerOS7 : Flume環境搭建

Flume介紹

Apache Flume 是一個分佈式,可靠且可用的系統,用於有效地從許多不一樣的源收集、聚合和移動大量日誌數據到一個集中式的數據存儲區。 Flume 的使用不僅限於日誌數據。由於數據源能夠定製,flume 能夠被用來傳輸大量事件數據,這些數據不單單包括網絡通信數據、社交媒體產生的數據、電子郵件信息等java

最多見的做用是Flume 可用於移動大規模批量流數據到HDFS系統。從Web服務器收集當前日誌文件數據到HDFS彙集用於分析。web

Flume 支持多種來源,如:apache

  1. tail (從本地文件,該文件的管道數據和經過Flume寫入 HDFS,相似於Unix命令「tail」)
  2. 系統日誌
  3. Apache log4j (容許Java應用程序經過Flume事件寫入到HDFS文件)。

Flume代理是JVM進程,裏面有3個組成部分 : Flume Source, Flume ChannelFlume Sink -經過該事件傳播發起在外部源以後緩存

總體流程:

監聽web服務端日誌信息->發送事件到sources端來消費->緩存數據到channel中->sink從channel中取數據進行消費並保存到hdfs中bash

Source

消費由外部源(如Web服務器)傳遞給它的事件。外部源以必定的格式發送數據給 Flume服務器

channel

能夠理解爲緩存區,用來保存從 Source 那拿到的數據,直到 Flume slink 將數據消費網絡

sink

從 channel 消費完數據就會將數據從 channel 中清除,隨後將數據放到外部存儲系統例如 HDFS (使用 Flume HDFS sink)或發送到其餘 Flume agent 的 source 中。無論是 Source 仍是 Slink 都是異步發送和消費數據。app

對Flume作了簡單介紹以後,帶你們一塊兒搭建一下Flume環境,Flume搭建很簡單。異步

解壓軟件

解壓下載好的flume軟件分佈式

[root@master mmcc]# tar -zxvf apache-flume-1.8.0-bin.tar.gz 
複製代碼

配置conf目錄文件

  1. flume-env.sh.template複製一份,並更名爲flume-env.sh
[root@master conf]# cp flume-env.sh.template flume-env.sh
複製代碼
  1. 配置java環境 (可選)
vi flume-env.sh

JAVA_HOME=/app/lib/jdk1.7.0_55  #jdk的目錄
JAVA_OPTS="-Xms100m -Xmx200m -Dcom.sun.management.jmxremote"
複製代碼

此時咱們就已經能夠直接使用了。作一個簡單的例子,監聽\home\mmcc\testlogs目錄下文件的內容變化,並將其存儲到hdfs上的testlogs目錄,關於hdfs相關內容可參考hadoop之旅2-centerOS7: 搭建分佈式hadoop環境

編寫conf文件

[root@master conf]# vi flume-conf

agent.sources = r1  #設置名稱
agent.channels = c1  
agent.sinks = k1    

agent.sources.r1.type = spooldir  #用於抽取目錄下文件
agent.sources.r1.spoolDir = /home/mmcc/testlogs  #監聽的目錄

agent.channels.c1.type=memory    #h緩衝區類型爲內存
agent.channels.c1.capacity=1000
agent.channels.c1.transactionCapacity = 100

agent.sinks.k1.type = hdfs    #處理的類型,存入hdfs
agent.sinks.k1.hdfs.path=hdfs://master:9000/testlogs
agent.sinks.k1.hdfs.filePrefix = testlog_
agent.sinks.k1.hdfs.fileType = DataStream

agent.sources.r1.channels = c1
agent.sinks.k1.channel = c1
複製代碼

執行flume

[root@master flume-1.8.0]# ./bin/flume-ng agent --conf ./conf/ --conf-file ./conf/flume-conf --name agent -Dflume.root.logger=INFO,console
複製代碼
  1. 最前面是經過bin下的flume-ng這個腳本進行啓動;
  2. 下面就是啓動時候須要的一系列參數,-–conf表示是配置 conf文件,conf-file 表示配置文件的位置,能夠是相對位置也能夠是絕對位置,–name 就是以前配置文件內的」agent.channels = c1」,猜想是flume服務器配置的名稱, -Dflume.root.logger 表示輸出形式,console是命令窗口輸出,logging是log/flume.log文件輸出。

執行成功後,flume就會爲咱們一直監聽咱們配置的/home/mmcc/testlogs目錄

測試

/home/mmcc/testlogs目錄下

vi testlog1   #編輯任意內容
hhhh
klsjdlkfjlds
lsdkjflks
kldjfljsljcvxl
lkjvlh
複製代碼

保存退出 :wq

在hdfs上能夠看到,生成了對應的文件

同時testlog1也會被flume標誌爲已經掃描過的狀態 COMPLETED

相關文章
相關標籤/搜索