Flume(二)

Flume(二)

目錄

Flume(二)

案例一:監控端口數據

案例二:實時讀取本地文件到HDFS

案例三:實時讀取目錄文件到HDFS


案例一:監控端口數據

目標:Flume監控一端Console,另一端Console發送消息,使被監控端實時顯示。

(1)安裝telnet工具

yum -y install telnet

 

(2)創建Flume Agent配置文件,我們可以在/opt/module/apache-flume-1.8.0-bin/路徑下創建myconf文件夾,在該文件夾下新建我們的配置文件flume-telnet.conf(注意後綴名必須是conf)。

#定義agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

#定義netcatsource,netcat端口源
a1.sources.r1.type = netcat
a1.sources.r1.bind = bigdata111
a1.sources.r1.port = 44445

# 定義sink
a1.sinks.k1.type = logger

# 定義channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100                  

# 雙向鏈接
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

(3)判斷44445端口是否被佔用

netstat -nultp | grep 44445

(4)啓動flume配置文件

這裏有兩種命令方式,但效果都是一樣的。

方式1看起來更清楚

--conf:指定默認的配置文件

--name:主機名字

--conf-file:使用的默認文件

--Dflume.root.logger:日誌打印方式

flume-ng agent \
--conf /opt/module/apache-flume-1.8.0-bin/conf/ \
--name a1 \
--conf-file /opt/module/apache-flume-1.8.0-bin/myconf/flume-telnet.conf \
-Dflume.root.logger==INFO,console

方式2會更簡單一些

flume-ng agent --conf conf/ --name a1 --conf-file myconf/flume-telnet.conf -Dflume.root.logger==INFO,console

這裏採取方式一的方式進行啓動。

啓動之後,我們會發現命令行變成了一個懸停狀態,說明flume啓動成功。

(5)通過telnet發送信息進行測試

測試成功

案例二:實時讀取本地文件到HDFS

案例1是監控端口數據,我們也可以監控文件數據,並且將日誌信息寫入HDFS。

(1)創建flume-hdfs.conf文件,並且寫入配置信息。

# 1 agent
a2.sources = r2
a2.sinks = k2
a2.channels = c2

# 2 source
a2.sources.r2.type = exec
a2.sources.r2.command = tail -F /opt/stephenyou
a2.sources.r2.shell = /bin/bash -c

# 3 sink
a2.sinks.k2.type = hdfs
a2.sinks.k2.hdfs.path = hdfs://bigdata111:9000/flume/%Y%m%d/%H
#上傳文件的前綴
a2.sinks.k2.hdfs.filePrefix = logs-
#是否按照時間滾動文件夾
a2.sinks.k2.hdfs.round = true
#多少時間單位創建一個新的文件夾
a2.sinks.k2.hdfs.roundValue = 1
#重新定義時間單位
a2.sinks.k2.hdfs.roundUnit = hour
#是否使用本地時間戳
a2.sinks.k2.hdfs.useLocalTimeStamp = true
#積攢多少個Event才flush到HDFS一次
a2.sinks.k2.hdfs.batchSize = 1000
#設置文件類型,可支持壓縮
a2.sinks.k2.hdfs.fileType = DataStream
#多久生成一個新的文件
a2.sinks.k2.hdfs.rollInterval = 600
#設置每個文件的滾動大小
a2.sinks.k2.hdfs.rollSize = 134217700
#文件的滾動與Event數量無關
a2.sinks.k2.hdfs.rollCount = 0
#最小副本數
a2.sinks.k2.hdfs.minBlockReplicas = 1

# Use a channel which buffers events in memory
a2.channels.c2.type = memory
a2.channels.c2.capacity = 1000
a2.channels.c2.transactionCapacity = 1000

# Bind the source and sink to the channel
a2.sources.r2.channels = c2
a2.sinks.k2.channel = c2

(2)執行監控配置

[root@bigdata111 apache-flume-1.8.0-bin]# flume-ng agent --conf conf/ --name a2 --conf-file myconf/flume-hdfs.conf 

我們可以看見hdfs上生成了一個flume目錄,並且以日期命名的文件夾。

案例三:實時讀取目錄文件到HDFS

實時監控特定目錄,並將數據信息存儲到HDFS。

(1)編寫配置文件flume-dir.conf

#1 Agent
a3.sources = r3
a3.sinks = k3

a3.channels = c3

#2 source
#監控目錄的類型
a3.sources.r3.type = spooldir
#監控目錄的路徑
a3.sources.r3.spoolDir = /opt/stephenyou
#哪個文件上傳hdfs,然後給這個文件添加一個後綴
a3.sources.r3.fileSuffix = .COMPLETED
a3.sources.r3.fileHeader = true
#忽略所有以.tmp結尾的文件,不上傳(可選)
a3.sources.r3.ignorePattern = ([^ ]*\.tmp)

# 3 sink
a3.sinks.k3.type = hdfs
a3.sinks.k3.hdfs.path = hdfs://bigdata111:9000/flume/%H
#上傳文件的前綴
a3.sinks.k3.hdfs.filePrefix = upload-
#是否按照時間滾動文件夾
a3.sinks.k3.hdfs.round = true
#多少時間單位創建一個新的文件夾
a3.sinks.k3.hdfs.roundValue = 1
#重新定義時間單位
a3.sinks.k3.hdfs.roundUnit = hour
#是否使用本地時間戳
a3.sinks.k3.hdfs.useLocalTimeStamp = true
#積攢多少個Event才flush到HDFS一次
a3.sinks.k3.hdfs.batchSize = 100
#設置文件類型,可支持壓縮
a3.sinks.k3.hdfs.fileType = DataStream
#多久生成一個新的文件
a3.sinks.k3.hdfs.rollInterval = 600
#設置每個文件的滾動大小大概是128M
a3.sinks.k3.hdfs.rollSize = 134217700
#文件的滾動與Event數量無關
a3.sinks.k3.hdfs.rollCount = 0
#最小副本數
a3.sinks.k3.hdfs.minBlockReplicas = 1

# Use a channel which buffers events in memory
a3.channels.c3.type = memory
a3.channels.c3.capacity = 1000
a3.channels.c3.transactionCapacity = 100

# Bind the source and sink to the channel
a3.sources.r3.channels = c3
a3.sinks.k3.channel = c3

 

(2)啓動配置文件

[root@bigdata111 apache-flume-1.8.0-bin]# flume-ng agent --conf conf/ --name a3 --conf-file myconf/flume-dir.conf 

展示:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章