4,flume 例項 檔案 hdfs

2021-09-25 06:22:51 字數 2798 閱讀 8059

hive 的每次操作,都會產生乙個日誌。

我們把這個日誌,上傳到 hdfs 。

為什麼 : flume 要想跟 hdfs 發檔案,需要 hadoop 的 jar 包。

hadoop 的 jar 包在** : /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop

需要哪些 jar 包 :

commons-configuration-1.6.jar

commons-io-2.4.jar

hadoop-auth-2.6.0-cdh5.14.0.jar

hadoop-common-2.6.0-cdh5.14.0.jar

hadoop-hdfs-2.6.0-cdh5.14.0.jar

htrace-core-3.1.0-incubating.jar

找檔案的方式 : find / -name htrace-core*

把他們放到**:

cd /export/servers/apache-flume-1.6.0-cdh5.14.0-bin/lib

cd /export/servers/apache-flume-1.6.0-cdh5.14.0-bin/conf

vim flume-file-hdfs.conf

#	名字

a2.sources = r2

a2.sinks = k2

a2.channels = c2

# 1 ,源:linux 命令,將命令結果輸入到 hdfs

a2.sources.r2.type =

exec

# hive 日誌預設存放在這裡

a2.sources.r2.command =

tail -f /tmp/root/hive.log

a2.sources.r2.shell = /bin/bash -c

a2.sources.r2.channels = c2

# 2 ,管道:記憶體,最多 1000 條快取,每 100 條數資料發出一次 ( 事務操作 )

# 倉庫可以儲存 1000 條資料,每次 100 條資料進出

a2.channels.c2.type = memory

a2.channels.c2.capacity = 1000

a2.channels.c2.transactioncapacity = 100

# 3 ,下沉 :到 hdfs ,指定目錄 ( 1000 個event或者600秒,生成乙個檔案,哪個先到了,就用哪個 )

a2.sinks.k2.channel = c2

a2.sinks.k2.type = hdfs

a2.sinks.k2.hdfs.path = hdfs://node01:8020/flume/%y%m%d/%h/%m

# 字首

a2.sinks.k2.hdfs.fileprefix = logs-

# 是否按照時間滾動資料夾:1 分鐘建立乙個資料夾

a2.sinks.k2.hdfs.round =

true

a2.sinks.k2.hdfs.roundvalue = 1

a2.sinks.k2.hdfs.roundunit = minute

# 是否使用本地時間戳

a2.sinks.k2.hdfs.uselocaltimestamp =

true

# 100 個 event 重新整理一次資料到 hdfs

a2.sinks.k2.hdfs.batchsize = 5

# 設定檔案型別,可支援壓縮

a2.sinks.k2.hdfs.filetype = datastream

# 30 秒,生成乙個新檔案

a2.sinks.k2.hdfs.rollinterval = 30

# 設定每個檔案的滾動大小 ( 最大這麼大,b )

a2.sinks.k2.hdfs.rollsize = 134217700

# 多少個 event 生成後,才建立乙個新檔案。( 檔案的滾動與 event 數量無關 )

a2.sinks.k2.hdfs.rollcount = 10

# 最小備份數 ( 如果不設定,就用 hdfs 的預設設定 )

沒有資料 :就不建立檔案,也不建立資料夾。

有資料 :每隔 30 秒建立乙個檔案

有資料 :每隔 1 分鐘建立乙個資料夾

有資料 :如果到了 10 條資料,就業也建立乙個檔案

每次上傳到 hdfs 的資料量是 5 條資料

乙個 event : 就是一行資料

建立檔案的條件 : 30 秒,或者,10 條。

哪個先到了,都建立檔案。

檔案大小:不可以超過限制,如果檔案大小超過限制,也將會重新生成檔案

預設 1024b ,不可以設定得更小了。

個人親測 : 就算檔案設定的更小也沒有意義,他的最小值就是 1k( 1024b ),如果我們設定成 800 ,那麼,他還是有的檔案儲存成為了 900b 以上,可見,不可以把值設定到 1024b 以下,就算設定了也沒有意義。

Flume採集檔案到HDFS

在flume和hadoop安裝好的情況下 1.遇到的坑 在安裝hadoop時,配置 core site.xml 檔案一定要注意。fs.defaultfs name hdfs master 9000 value property 上述的value值使用的是主機名稱 master 或者ip位址,不能使用...

flume監控目錄檔案到hdfs

agent1 name agent1.sources source1 agent1.sinks sink1 agent1.channels channel1 spooling directory set source1 agent1.sources source1.type spooldir age...

Flume採集檔案到HDFS(跟蹤檔案內容)

1.配置檔案編寫 在flume下新建tail hdfs.conf pooldir flume中自帶的讀取目錄的source,只要出現新檔案就會被讀走 定義三大元件的名稱 ag1.sources source1 ag1.sinks sink1 ag1.channels channel1 配置sourc...