Flume監聽檔案並上傳到hdfs

2021-09-12 08:47:36 字數 2570 閱讀 1798

監聽hive日誌,並上傳到hdfs中/flume/[yymmddhh]/目錄下,檔案字首為logs-,每乙個小時新建重新建立乙個資料夾,每接收10m資料落地一次,當資料不足10m時15分鐘落地一次

匯入以下jar包到flume路徑下的lib裡,{}裡為相應版本,在hadoop路徑下share/hadoop下都能找到,我就新增了乙個剩下的在flume/lib下都已經有了,以防萬一還是都新增一下試試

commons.configuration-{}.jar

hadoop-auth-{}.jar

hadoop-common-{}.jar

hadoop-hdfs-{}.jar

commons-io-{}.jar

htrace-core-{}-incubating.jar

在flume路徑下的job路徑中新建flume-file-hdfs.conf

此檔案編寫內容如下 

# name the components on this agent

a1.sources = r1

a1.sinks = k1

a1.channels = c1

# describe/configure the sources

# exec即execute執行命令

a1.sources.r1.type = exec

# 要執行的命令

a1.sources.r1.command = tail -f /tmp/root/hive.log

# 執行shell指令碼的絕對路徑

a1.sources.r1.shell = /bin/bash -c

# describe the sink

a1.sinks.k1.type = hdfs

# 上傳到hdfs的路徑

a1.sinks.k1.hdfs.path = hdfs:

# 檔案字首

a1.sinks.k1.hdfs.fileprefix = logs-

# 是否按時間新建資料夾

a1.sinks.k1.hdfs.round = true

# 定義多久新建資料夾

a1.sinks.k1.hdfs.roundvalue = 1

# 重新定義時間單位

a1.sinks.k1.hdfs.roundunit = hour

# 是否使用本地時間戳

a1.sinks.k1.hdfs.uselocaltimestamp = true

# flush到hdfs需要積攢event的數量

a1.sinks.k1.hdfs.batchsize = 1000

# 設定檔案型別

a1.sinks.k1.hdfs.filetype = datastream

# 多久生成乙個新的檔案(單位:秒)

a1.sinks.k1.hdfs.rollinterval = 900

# 接收多少資料生成乙個新檔案(單位:位元組)

a1.sinks.k1.hdfs.rollsize = 10485760

# 檔案的滾動與event數量無關

a1.sinks.k1.hdfs.rollcount = 0

# 最小冗餘數

a1.sinks.k1.hdfs.minblockreplicas = 1

# use a channel which buffers events in memory

a1.channels.c1.type = memory

a1.channels.c1.capacity = 1000

a1.channels.c1.transactioncapacity = 100

# bind the source and sink to the channel

a1.sources.r1.channels = c1

a1.sinks.k1.channel = c1

因為要收集hive的日誌檔案切要落地到hdfs,要先確保hadoop集群已啟動

在flume路徑下

bin/flume-ng agent --conf conf/ --name a1 --conf-file job/flume-file-hdfs.conf
啟動hive

Flume監聽上傳Hive日誌檔案到HDFS 02

把agent起個名叫a2,sources叫r2,sinks叫k2.hdfs,channels叫c2 a2.sources r2 a2.sinks k2 a2.channels c2 監聽資料 為本地的4444埠 describe configure the source a2.sources.r2....

自動打包檔案並上傳到ftp

bin bash ftpserver ftp.aaa rmtdir bbb user user pass password filename project date y m d tar.bz2 subdir date y m d release echo generating tarball.if...

03 flume監聽資料夾並將檔案上傳到HDFS

我們已經了解了使用flume監聽埠以及檔案內容,本節將展示使用flume去監聽乙個資料夾並且上傳其中的檔案到hdfs。a1.sources r1 a1.sinks k1 a1.channels c1 describe configure the source a1.sources.r1.type s...