Flume OG:Flume original generation,即Flume0.9x版本linux
Flume NG:Flume next generation,即Flume1.x版本shell
flume的事件(agent)apache
Source: 用來定義採集系統的源頭安全
Channel: 把Source採集到的日誌進行傳輸,處理網絡
Sink:定義數據的目的地分佈式
準備安裝文件日誌
解壓code
重命名事件
添加環境變量事務
#配置Flume的環境變量 export FLUME_HOME=/opt/flume export PATH=$PATH:$FLUME_HOME/bin
配置文件
[root@uplooking01 /opt/flume/conf] mv flume-env.sh.template flume-env.sh
[root@uplooking01 /opt/flume/conf/flume-env.sh] export JAVA_HOME=/opt/jdk
flume-nc.properties
# flume-nc.conf: 用於監聽網絡數據的flume agent實例的配置文件 ############################################ # 對各個組件的描述說明 # 其中a1爲agent的名字 # r1是a1的source的代號名字 # c1是a1的channel的代號名字 # k1是a1的sink的代號名字 ############################################ a1.sources = r1 a1.sinks = k1 a1.channels = c1 # 用於描述source的,類型是netcat網絡 a1.sources.r1.type = netcat # source監聽的網絡ip地址和端口號 a1.sources.r1.bind = uplooking01 a1.sources.r1.port = 44444 # 用於描述sink,類型是日誌格式 a1.sinks.k1.type = logger # 用於描述channel,在內存中作數據的臨時的存儲 a1.channels.c1.type = memory # 該內存中最大的存儲容量,1000個events事件 a1.channels.c1.capacity = 1000 # 可以同時對100個events事件監管事務 a1.channels.c1.transactionCapacity = 100 # 將a1中的各個組件創建關聯關係,將source和sink都指向了同一個channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1
flume-ng agent --name a1 --conf /opt/flume/conf --conf-file /opt/flume/conf/flume-nc.properties -Dflume.root.logger=INFO,console
flume-ng agent --name a1 --conf-file /opt/flume/conf/flume-nc.properties
rpm -ivh nc-1.84-22.el6.x86_64.rpm
監聽端口: nc -lk 4444
鏈接主機的端口: nc host port
cat xxx: 查看文件的所有內容
head -100 xxx:查看文件內容開始的100行(默認不加-100是查看10行)
tail -100 xxx:查看文件內容末尾的100行(默認不加-100是查看10行)
tail -f xxx:查看文件內容末尾10行,而且監聽文件的變化
常見採集的數據類型
channel的類型 :
sink的表現形式不少好比:打印到控制檯、hdfs上、avro服務中、文件中等
常見採集的數據類型
event是Flume NG傳輸的數據的基本單位,也是事務的基本單位
在文本文件,一般是一行記錄就是一個event。
網絡消息傳輸系統中,一條消息就是一個event。
event裏有header、body
Event裏面的header類型:Map<String, String>
咱們能夠在source中自定義header的key:value,在某些channel和sink中使用header
配置agent
############################################ # 對各個組件的描述說明 # 其中a1爲agent的名字 # r1是a1的source的代號名字 # c1是a1的channel的代號名字 # k1是a1的sink的代號名字 ############################################ a1.sources = r1 a1.sinks = k1 a1.channels = c1 # 用於描述source的,類型是linux命令 a1.sources.r1.type = exec a1.sources.r1.command = tail -F /opt/flume/conf/logs/test01.txt # 用於描述sink,類型是日誌格式 a1.sinks.k1.type = logger # 用於描述channel,在內存中作數據的臨時的存儲 a1.channels.c1.type = memory # 該內存中最大的存儲容量,1000個events事件 a1.channels.c1.capacity = 1000 # 可以同時對100個events事件監管事務 a1.channels.c1.transactionCapacity = 100 # 將a1中的各個組件創建關聯關係,將source和sink都指向了同一個channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1
運行agent,開始採集數據
flume-ng agent --name a1 --conf-file flume-exec.properties
配置agent
############################################ # 對各個組件的描述說明 # 其中a1爲agent的名字 # r1是a1的source的代號名字 # c1是a1的channel的代號名字 # k1是a1的sink的代號名字 ############################################ a1.sources = r1 a1.sinks = k1 a1.channels = c1 # 用於描述source的,監聽的是一個目錄 a1.sources.r1.type = spooldir a1.sources.r1.spoolDir = /opt/flume/conf/logs/aa a1.sources.r1.fileSuffix = .OK a1.sources.r1.deletePolicy = never a1.sources.r1.fileHeader = true # 用於描述sink,類型是日誌格式 a1.sinks.k1.type = logger # 用於描述channel,在內存中作數據的臨時的存儲 a1.channels.c1.type = memory # 該內存中最大的存儲容量,1000個events事件 a1.channels.c1.capacity = 1000 # 可以同時對100個events事件監管事務 a1.channels.c1.transactionCapacity = 100 # 將a1中的各個組件創建關聯關係,將source和sink都指向了同一個channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1
運行agent,開始採集數據
flume-ng agent --name a1 --conf-file flume-dir.properties
nohup flume-ng agent --name a1 --conf-file flume-dir.properties >dev/null 2>&1 &