一、目的
為了實現用Flume實時采集Hive的操作日志到HDFS中,于是進行了一場實驗
二、前期準備
(一)安裝好Hadoop、Hive、Flume等工具
(二)查看Hive的日志在Linux系統中的文件路徑
[root@hurys23 conf]# find / -name hive.log
/home/log/hive312/hive.log
(三)在HDFS中創建文件夾flume,即Hive日志寫入的HDFS文件
三、創建Flume的任務文件
[root@hurys23 conf]# vi ?flume-file-hdfs.conf
# Name the components on this agent
a2.sources = r2
a2.sinks = k2
a2.channels = c2
# Describe/configure the source
a2.sources.r2.type = exec
a2.sources.r2.command = tail -F /home/log/hive312/hive.log
# Describe the sink
a2.sinks.k2.type = hdfs
a2.sinks.k2.hdfs.path = hdfs://hurys23:8020/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 = 100
#設置文件類型,可支持壓縮
a2.sinks.k2.hdfs.fileType = DataStream
#多久生成一個新的文件
a2.sinks.k2.hdfs.rollInterval = 60
#設置每個文件的滾動大小
a2.sinks.k2.hdfs.rollSize = 134217700
#文件的滾動與 Event 數量無關
a2.sinks.k2.hdfs.rollCount = 0
# Use a channel which buffers events in memory
a2.channels.c2.type = memory
a2.channels.c2.capacity = 1000
a2.channels.c2.transactionCapacity = 100
# Bind the source and sink to the channel
a2.sources.r2.channels = c2
a2.sinks.k2.channel = c2
注意:
1、配置文件中的各項參數需要調式,這里只是為了演示,實現目的、打通路徑即可!實際在項目中操作時需要調試參數。
2、a2.sources.r2.command = tail -F /home/log/hive312/hive.log? ? ? ? ? ?為hive.log在Linux中的路徑
3、a2.sinks.k2.hdfs.path = hdfs://hurys23:8020/flume/%Y%m%d/%H? ? ??為寫入的HDFS文件路徑
四、啟動Flume任務文件
[root@hurys23 flume190]# bin/flume-ng agent -n a2 ?-f /usr/local/hurys/dc_env/flume/flume190/conf/flume-file-hdfs.conf
五、Flume任務運行時寫入的HDFS文件狀況
(一)目前時間
2023/12/5 14時
(二)HDFS的flume文件夾中根據時間戳自動生成20231205文件夾、14文件夾及其logs文件
(三)HDFS的log文件內容,以logs-.1701757858263為例
六、關閉Flume任務
首先jps查看Flume任務,然后直接kill程序
[root@hurys23 conf]# jps
28385 NodeManager
27938 SecondaryNameNode
16642 RunJar
27496 NameNode
27657 DataNode
8717 Jps
28215 ResourceManager
8282 Application
[root@hurys23 conf]# kill -9 8282
Hive日志成功采集到HDFS!演示就先到這里吧,后面如果有需要就再更新。
再提醒一遍,博客中Flume配置文件里面的參數只是為了演示而已,具體實踐時需要根據實際情況進行調整,不要照搬!!!