JavaShuo
欄目
標籤
大數據日誌收集框架之Flume入門
時間 2019-11-09
標籤
數據
日誌
收集
框架
flume
入門
欄目
日誌分析
简体版
原文
原文鏈接
Flume是Cloudrea公司開源的一款優秀的日誌收集框架,主要經歷了兩個大的版本,分別是
Flume-OG
Flume-NG
OG是0.9.x的版本,依賴zookeeper,角色職責不夠單一,
NG是新版本指1.x的版本,官網解釋它更輕量級,更小,角色職責更單一,利用點到點進行容錯,固然這也是之後的趨勢,
要理解Flume,就首先理解它的架構,下面看下,官網的一張拓撲圖:
名詞解釋:
Source:泛指全部的日誌收集源,能夠是web頁面,log文件,數據庫,端口,卡口信息等
Channel:提供中轉的臨時存儲區,能夠是本地文件,redis,kakfa,數據庫,內存等
Sink:指日誌最終落地的存儲區,能夠是數據庫,HDFS,Hbase,Hive,本地文件等
Agent:指上面三者組合後的一個完整的數據收集代理,有了這個代理,咱們把它安裝任何機器上進行收集日誌,固然前提是這個Agent符合這個機器上的業務。
下面看下,安裝實戰例子:
首先下載flume-ng的安裝包:
wget
http://archive.apache.org/dist/flume/1.6.0/apache-flume-1.6.0-bin.tar.gz
解壓
tar -zxvf apache-flume-1.6.0-bin.tar.gz
將根目錄下的conf下的一些模板文件,重命名成正常文件
若是沒有配置JAVA_HOME爲環境變量的話,
則須要在flume-env.sh裏面配置jdk的地址
1,而後新建一個first.properties的文件,加入如下配置:
Java代碼
[webmaster
@Hadoop
-
0
-
187
conf]$ cat first.properties
# example.conf: A single-node Flume configuration
# Name the components on
this
agent
#datasource
a1.sources = r1
#store
a1.sinks = k1
#transfer
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port =
44444
# Describe the sink
a1.sinks.k1.type = logger
# 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
配置例子2:收集本地日誌到hadoop裏面
hdfs的sink目前支持三種文件類型:
(1)SequenceFile 文本不可見
(2)DataStream 設置hdfs.writeFormat=Text,文本可見
(3)CompressedStream 設置hdfs.codeC=gzip, bzip2, lzo, lzop, snappy,其中一種,後面三個須要編譯hadoop時支持才能設置。
默認是SequenceFile,以文本方式寫進入的數據,是不可見的,除非改變類型爲DataStream ,
而後設置hdfs.writeFormat=Text便可,這個選項默認是Writable
Java代碼
a.sources=exec-source
a.sinks=hdfs-sink
a.channels=ch1
#####source conf
a.sources.exec-source.type=exec
a.sources.exec-source.command=tail -F /ROOT/server/flume/v.log
#####sink conf
a.sinks.hdfs-sink.type=hdfs
a.sinks.hdfs-sink.hdfs.path=hdfs:
//h1:9000/flume/events
a.sinks.hdfs-sink.hdfs.filePrefix=search
a.sinks.hdfs-sink.hdfs.rollInterval=
10
a.sinks.hdfs-sink.hdfs.rollSize=
0
#不設置壓縮,指定文本方式加入hdfs
#a.sinks.hdfs-sink.hdfs.fileType=DataStream
#a.sinks.hdfs-sink.hdfs.writeFormat=Text
#設置壓縮lzo或者snappy
a.sinks.hdfs-sink.hdfs.fileType=CompressedStream
#a.sinks.hdfs-sink.hdfs.codeC=snappy
#a.sinks.hdfs-sink.hdfs.codeC=lzo
#a.sinks.hdfs-sink.hdfs.codeC=lzop
#a.sinks.hdfs-sink.hdfs.codeC=gzip
a.sinks.hdfs-sink.hdfs.codeC=bzip2
####channels conf
a.channels.ch1.type=memory
a.channels.ch1.capacity=
1000
a.sources.exec-source.channels=ch1
a.sinks.hdfs-sink.channel=ch1
啓動命令: 最後的a與配置文件裏面的agent的name必須一致
bin/flume-ng agent --conf conf --conf-file conf/to_hdfs.properties --name a
下面是一個按年月日時分,收集的日誌:
Java代碼
a.sources=exec-source
a.sinks=hdfs-sink
a.channels=ch1
#####source conf
a.sources.exec-source.type=exec
a.sources.exec-source.command=tail -F /ROOT/server/flume/v.log
#####sink conf
a.sinks.hdfs-sink.type=hdfs
a.sinks.hdfs-sink.hdfs.path=hdfs:
//h1:9000/flume/events/%Y/%m/%d/%H/%M
a.sinks.hdfs-sink.hdfs.filePrefix=search
a.sinks.hdfs-sink.hdfs.rollInterval=
10
a.sinks.hdfs-sink.hdfs.rollSize=
0
a.sinks.hdfs-sink.hdfs.useLocalTimeStamp=
true
#不設置壓縮
#a.sinks.hdfs-sink.hdfs.fileType=DataStream
#a.sinks.hdfs-sink.hdfs.writeFormat=Text
#設置壓縮lzo或者snappy
a.sinks.hdfs-sink.hdfs.fileType=CompressedStream
#a.sinks.hdfs-sink.hdfs.codeC=snappy
#a.sinks.hdfs-sink.hdfs.codeC=lzo
#a.sinks.hdfs-sink.hdfs.codeC=lzop
#a.sinks.hdfs-sink.hdfs.codeC=gzip
a.sinks.hdfs-sink.hdfs.codeC=bzip2
####channels conf
a.channels.ch1.type=memory
a.channels.ch1.capacity=
1000
a.sources.exec-source.channels=ch1
a.sinks.hdfs-sink.channel=ch1
最後看下,配置flume監聽linux的rsyslog的日誌:
可用nc模擬telent發送數據到5140端口
echo "<1>hello via syslog" | nc -t localhost 5140
配置/etc/rsyslog.conf
在最後一行,加入tcp轉發端口:
Java代碼
*.* @
@localhost
:
5140
若是不生效,可考慮:取消註釋,使下面的生效:
Java代碼
# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun
5140
改完以後,重啓rsyslog
Java代碼
sudo service rsyslog restart
而後配置flume
flume監聽rsyslog,或者syslog
Java代碼
a.sources=exec-source
a.sinks=hdfs-sink
a.channels=ch1
#####source conf rsyslog
a.sources.exec-source.type=syslogtcp
a.sources.exec-source.port=
5140
a.sources.exec-source.host=
0.0
.
0.0
#####sink conf
a.sinks.hdfs-sink.type=hdfs
a.sinks.hdfs-sink.hdfs.path=hdfs:
//h1:9000/flume/events/%Y/%m/%d/%H/%M
a.sinks.hdfs-sink.hdfs.filePrefix=search
a.sinks.hdfs-sink.hdfs.rollInterval=
10
a.sinks.hdfs-sink.hdfs.rollSize=
0
a.sinks.hdfs-sink.hdfs.useLocalTimeStamp=
true
#不設置壓縮
#a.sinks.hdfs-sink.hdfs.fileType=DataStream
#a.sinks.hdfs-sink.hdfs.writeFormat=Text
#設置壓縮lzo或者snappy
a.sinks.hdfs-sink.hdfs.fileType=CompressedStream
#a.sinks.hdfs-sink.hdfs.codeC=snappy
#a.sinks.hdfs-sink.hdfs.codeC=lzo
#a.sinks.hdfs-sink.hdfs.codeC=lzop
#a.sinks.hdfs-sink.hdfs.codeC=gzip
a.sinks.hdfs-sink.hdfs.codeC=bzip2
####channels conf
a.channels.ch1.type=memory
a.channels.ch1.capacity=
1000
a.sources.exec-source.channels=ch1
a.sinks.hdfs-sink.channel=ch1
配置完成啓動:
而後看flume的log再次登錄終端,推出終端,sudo命令執行失敗,flume都會採集轉發到hdfs上存儲起來
總結: Flume不愧是大數據平臺的一個標準組件,與Hadoop能很是完美的結合,固然,除了與hadoop結合外,還支持Hbase,Hive等, 相比Logstash+ElasticSearch+Kibana的ELK裏面的Logstash,flume比較適合結構化的日誌收集,存儲,而Logstasch則還能夠很是方便的解析,清洗數據,雖然flume經過擴展jar也能支持,但logstash使用的是Jruby語法,相比java,則比較簡單。這也是ELK都可以快速部署的緣由,固然flume也支持向elasticsearch推送索引數據,經過擴展的jar,幾乎大部分功能都能輕鬆實現,因此,沒有誰最好用,誰最很差用,只有誰最適合業務,纔是最好的!
相關文章
1.
日誌收集框架Flume
2.
大數據日誌採集框架----Flume
3.
分佈式日誌收集框架Flume
4.
logstash_forward+flume+elasticsearch+kibana日誌收集框架
5.
分佈式日誌收集框架 Flume
6.
日誌採集框架Flume
7.
Flume—日誌採集框架
8.
日誌收集之Flume
9.
Flume日誌收集
10.
FLUME日誌收集
更多相關文章...
•
netwox網絡工具集入門教程
-
TCP/IP教程
•
Memcached入門教程
-
NoSQL教程
•
YAML 入門教程
•
Flink 數據傳輸及反壓詳解
相關標籤/搜索
大數據入門
集合框架
大數據之路
日誌
數據集合
數據採集
數據集
框架
走進大數據之Hive入門
收集
日誌分析
Docker命令大全
NoSQL教程
MySQL教程
數據傳輸
數據庫
數據業務
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
以實例說明微服務拆分(以SpringCloud+Gradle)
2.
idea中通過Maven已經將依賴導入,在本地倉庫和external libraries中均有,運行的時候報沒有包的錯誤。
3.
Maven把jar包打到指定目錄下
4.
【SpringMvc】JSP+MyBatis 用戶登陸後更改導航欄信息
5.
在Maven本地倉庫安裝架包
6.
搭建springBoot+gradle+mysql框架
7.
PHP關於文件$_FILES一些問題、校驗和限制
8.
php 5.6連接mongodb擴展
9.
Vue使用命令行創建項目
10.
eclipse修改啓動圖片
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
日誌收集框架Flume
2.
大數據日誌採集框架----Flume
3.
分佈式日誌收集框架Flume
4.
logstash_forward+flume+elasticsearch+kibana日誌收集框架
5.
分佈式日誌收集框架 Flume
6.
日誌採集框架Flume
7.
Flume—日誌採集框架
8.
日誌收集之Flume
9.
Flume日誌收集
10.
FLUME日誌收集
>>更多相關文章<<