【Flume】Flume基礎之安裝與使用
1、Flume簡介
(1) Flume提供一個分散式的,可靠的,對大資料量的日誌進行高效收集、聚集、移動的服務,Flume只能在Unix環境下執行。
(2) Flume基於流式架構,容錯性強,也很靈活簡單。
(3) Flume、Kafka用來實時進行資料收集,Spark、Flink用來實時處理資料,impala用來實時查詢。
2、Flume角色
2.1 Source
用於採集資料,Source是產生資料流的地方,同時Source會將產生的資料流傳輸到Channel,這個有點類似於Java IO部分的Channel。
2.2 Channel
用於橋接Sources和Sinks,類似於一個佇列。
2.3 Sink
從Channel收集資料,將資料寫到目標源(可以是下一個Source,也可以是HDFS或者HBase)。
2.4 Event
傳輸單元,Flume資料傳輸的基本單元,以事件的形式將資料從源頭送至目的地。
3、Flume傳輸過程
source監控某個檔案或資料流,資料來源產生新的資料,拿到該資料後,將資料封裝在一個Event中,並put到channel後commit提交,channel佇列先進先出,sink去channel佇列中拉取資料,然後寫入到HDFS或其他目標源中。
4、Flume安裝與部署
4.1 上傳包
將flume的gz包上傳到/opt/soft/目錄下;
[root@bigdata111 conf]# rz
若不支援rz命令,則用yum安裝lrzsz命令:
查詢含有rz的yum源,由結果可見,yum源中含有lrzsz.x86_64包;
[root@bigdata111 soft]# yum search rzsz 已載入外掛:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.tuna.tsinghua.edu.cn * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com ============================================================================================================================= N/S matched: rzsz ============================================================================================================================== lrzsz.x86_64 : The lrz and lsz modem communications programs 名稱和簡介匹配 only,使用“search all”試試。
安裝rz命令
[root@bigdata111 soft]# yum -y install lrzsz
4.2 解壓包
將flume解壓到/opt/module/目錄下,並改短名字flume-1.8.0:
[root@bigdata111 soft]# tar -zvxf apache-flume-1.8.0-bin.tar.gz -C /opt/module
[root@bigdata111 module]# mv apache-flume-1.8.0-bin flume-1.8.0
4.3 配置引數
切換到/opt/module/flume-1.8.0/conf目錄,將flume-env.sh.template檔名改為:flume-env.sh
[root@bigdata111 module]# mv flume-env.sh.template flume-env.sh
查詢JAVA_HOME的值;
[root@bigdata111 conf]# echo $JAVA_HOME
/opt/module/jdk1.8.0_144
編輯flume-env.sh,將檔案內容中的JAVA_HOME的值修改為上面查到的;
export JAVA_HOME=/opt/module/jdk1.8.0_144
4.4 配置環境變數
在/etc/profile末尾新增flume的家路徑
export FLUME_HOME=/opt/module/flume-1.8.0
export PATH=$PATH:$FLUME_HOME/bin
4.5 驗證flume成功與否
在xshell客戶端下,輸入flu,按tab鍵,看是否能夠自動補全:flume-ng
如果可以自動補全,則代表安裝flume成功,否則失敗。
[root@bigdata112 opt]# flume-ng
Error: Unknown or unspecified command ''
Usage: /opt/module/flume-1.8.0/bin/flume-ng <command> [options]...
commands:
help display this help text
agent run a Flume agent
avro-client run an avro Flume client
version show Flume version info
............
4.6 配置其他兩臺機器
利用scp命令,配置其他兩臺機器;
首先,將flume目錄分發到bigdata112,bigdata113
[root@bigdata111 ~]# scp -r /opt/module/flume-1.8.0/ root@bigdata112:/opt/module/
[root@bigdata111 ~]# scp -r /opt/module/flume-1.8.0/ root@bigdata113:/opt/module/
其次,將/etc/profile環境變數檔案分發到bigdata112,bigdata113
[root@bigdata111 ~]# scp -r /etc/profile root@bigdata112:/etc/
[root@bigdata111 ~]# scp -r /etc/profile root@bigdata113:/etc/
最後,在bigdata112,bigdata113上分別重新整理環境變數
[root@bigdata112 opt]# source /etc/profile
[root@bigdata113 opt]# source /etc/profile
5、Flume案例
5.1 監控埠資料
目標:Flume監控一端Console,另一端Console傳送訊息,使被監控端實時顯示。
5.1.1 安裝telnet命令
[root@bigdata111 conf]# yum -y install telnet
5.1.2 建立Agent配置檔案
在flume根目錄下,新建一個myconf目錄,用於存放自定義conf配置檔案;
新建flume-telnet.conf檔案,檔案內容如下:
# 定義agent
# <自定義agent名>.sources=<自定義source名稱>
a1.sources = r1
# <自定義agent名>.sinks=<自定義sink名稱>
a1.sinks = k1
# <自定義agent名>.channels=<自定義channel名稱>
a1.channels = c1
# 定義source
# <agent名>.sources.<source名稱>.type = 源型別
a1.sources.r1.type = netcat
# <agent名>.sources.<source名稱>.bind = 資料來源伺服器
a1.sources.r1.bind = bigdata111
# <agent名>.sources.<source名稱>.port = 自定義未被佔用的埠
a1.sources.r1.port = 44445
# 定義sink
# <agent名>.sinks.<sink名稱>.type = 下沉到目標源的型別
a1.sinks.k1.type = logger
# 定義channel
# <agent名>.channels.<channel名稱>.type = channel的型別
a1.channels.c1.type = memory
# <agent名>.channels.<channel名稱>.capacity = 最大容量
a1.channels.c1.capacity = 1000
# transactionCapacity<=capacity
a1.channels.c1.transactionCapacity = 1000
# 雙向連結
# <agent名>.sources.<source名稱>.channels = channel名稱
a1.sources.r1.channels = c1
# <agent名>.sinks.<sink名稱>.channel = channel名稱
a1.sinks.k1.channel = c1
5.1.3 啟動flume配置檔案
[root@bigdata111 conf]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a1 --conf-file /opt/module/flume-1.8.0/conf/flume-telnet.conf -Dflume.root.logger==INFO,console
可以簡寫為:
[root@bigdata111 conf]# flume-ng agent --c /opt/module/flume-1.8.0/conf/ --n a1 --f /opt/module/flume-1.8.0/conf/flume-telnet.conf -Dflume.root.logger==INFO,console
5.1.4 傳送測試資料
通過其他機器向bigdata111的44445埠傳送資料
[root@bigdata112 ~]# telnet bigdata111 44445
Trying 192.168.1.111...
Connected to bigdata111.
Escape character is '^]'.
echo aaaa
OK
echo aaaa
OK
echo bbbbbbbbb
OK
執行結果如圖:
5.2 實時讀取本地檔案到HDFS
5.2.1 建立Agent配置檔案
建立flume-hdfs配置檔案
# 1 agent 若同時執行兩個agent,則agent名字需要改變,比如下面a2
a2.sources = r2
a2.sinks = k2
a2.channels = c2
# 2 source
# 因監控linux本地檔案,執行shell命令,所以type為exec;
a2.sources.r2.type = exec
# 監控的檔案路徑
a2.sources.r2.command = tail -F /opt/test.log
a2.sources.r2.shell = /bin/bash -c
# 3 sink
# 資料下沉到目標源hdfs
a2.sinks.k2.type = hdfs
# 如果叢集為HA模式,則路徑為active的namenode地址,普通分散式叢集,直接寫namenode所在地址即可。
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
# 定義channel
a2.channels.c2.type = memory
a2.channels.c2.capacity = 1000
a2.channels.c2.transactionCapacity = 1000
# 雙向連結繫結
a2.sources.r2.channels = c2
a2.sinks.k2.channel = c2
5.2.2 啟動flume配置檔案
[root@bigdata111 flume-1.8.0]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a2 --conf-file /opt/module/flume-1.8.0/myconf/flume-hdfs.conf
5.2.3 傳送檔案內容
[root@bigdata111 opt]# echo kjalksdjglkajsdg2333333333333333asdgasdgasdg >> test.log
[root@bigdata111 opt]# echo kjalksdjglkajsdg2333333333333333asdgasdgasdg >> test.log
[root@bigdata111 opt]# echo kjalksdjglkajsdg2333333333333333asdgasdgasdg >> test.log
[root@bigdata111 opt]# echo kjalksdjglkajsdg2333333333333333asdgasdgasdg >> test.log
執行結果:
5.3 實時讀取目錄檔案到HDFS
目標:使用flume監聽整個目錄的檔案
5.3.1 建立Agent配置檔案
建立agent配置檔案,命名為: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/module/flume1.8.0/upload
#哪個檔案上傳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
溫馨提示:
1) 不要在監控目錄中建立並持續修改檔案
2) 上傳完成的檔案會以.COMPLETED結尾
3) 被監控資料夾每500毫秒掃描一次檔案變動
5.3.2 啟動flume配置檔案
[root@bigdata111 myconf]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a3 --conf-file /opt/module/flume-1.8.0/myconf/flume-dir.conf
5.3.3 上傳檔案到upload目錄
[root@bigdata111 opt]# mkdir upload
[root@bigdata111 opt]# ls
module soft test.log upload
[root@bigdata111 opt]# mv test.log upload/
[root@bigdata111 opt]# ls
module soft upload
[root@bigdata111 opt]# vi test1.log
[root@bigdata111 opt]# mv test1.log upload/
執行如圖:
5.4 扇出例子01
扇出:資料用於多個地方。(簡單理解:一個數據源對應多個channel,sink,並且輸出到多個目標源)
例子01示意圖:
目標:在flume1裡面接收資料,然後資料下沉到兩個不同目標源(控制檯和HDFS)
5.4.1 建立Agent配置檔案
在myconf目錄下,新建一個flume-fanout1.conf檔案,內容配置如下:
# 定義agent
a1.sources=c1
a1.channels=k1 k2
a1.sinks=s1 s2
# 定義source
a1.sources.c1.type=exec
a1.sources.c1.command=tail -F /opt/test.log
a1.sources.c1.shell=/bin/bash -c
# 將資料流複製給多個channel
a1.sources.r1.selector.type=replicating
# 定義channel1
a1.channels.k1.type=memory
a1.channels.k1.capacity = 1000
a1.channels.k1.transactionCapacity=1000
# 定義channel2
a1.channels.k2.type=memory
a1.channels.k2.capacity = 1000
a1.channels.k2.transactionCapacity=1000
# 定義sink1
a1.sinks.s1.type=logger
# 定義sink2
a1.sinks.s2.type=hdfs
a1.sinks.s2.hdfs.path = hdfs://bigdata111:9000/flume/%Y%m%d/%H
# 上傳檔案的字首
a1.sinks.s2.hdfs.filePrefix = logs-
# 是否按照時間滾動資料夾
a1.sinks.s2.hdfs.round = true
# 多少時間單位建立一個新的資料夾
a1.sinks.s2.hdfs.roundValue = 1
# 重新定義時間單位
a1.sinks.s2.hdfs.roundUnit = hour
# 是否使用本地時間戳
a1.sinks.s2.hdfs.useLocalTimeStamp = true
# 積攢多少個Event才flush到HDFS一次
a1.sinks.s2.hdfs.batchSize = 1000
# 設定檔案型別,可支援壓縮
a1.sinks.s2.hdfs.fileType = DataStream
# 多久生成一個新的檔案
a1.sinks.s2.hdfs.rollInterval = 600
# 設定每個檔案的滾動大小
a1.sinks.s2.hdfs.rollSize = 134217700
# 檔案的滾動與Event數量無關
a1.sinks.s2.hdfs.rollCount = 0
# 最小副本數
a1.sinks.s2.hdfs.minBlockReplicas = 1
# 雙向連結
a1.sources.c1.channels = k1 k2
a1.sinks.s1.channel=k1
a1.sinks.s2.channel=k2
5.4.2 啟動flume配置檔案
[root@bigdata111 myconf]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a1 --conf-file /opt/module/flume-1.8.0/myconf/flume-fanout1.conf -Dflume.root.logger==INFO,console
5.4.3 向檔案新增內容
切換到/opt/目錄下,新建test.log檔案,然後動態新增內容,觀察控制檯輸出以及web的hdfs檔案
[root@bigdata111 opt]# touch test.log
[root@bigdata111 opt]# touch test.log
[root@bigdata111 opt]# echo 'china' >>test.log
[root@bigdata111 opt]# echo 'hello world' >>test.log
[root@bigdata111 opt]# echo 'nihao' >> test.log
控制檯輸出如下:
web頁面結果:
5.5 扇出例子02
目標:flume1監控檔案,然後將變動資料分別傳給flume2和flume3,flume2的資料下沉到HDFS;flume3的資料下沉到本地檔案;
5.5.1 建立flume1配置檔案
在bigdata111上的myconf目錄下,新建agent配置檔案:flume-fanout1.conf;
flume1用於監控某檔案的變動,同時產生兩個channel和兩個sink,分別輸送給flume2,flume3;
檔案內容如下:
# 配置agent
a1.sources = c1
a1.channels = k1 k2
a1.sinks = s1 s2
# 定義source
a1.sources.c1.type=exec
a1.sources.c1.command=tail -F /opt/test.log
a1.sources.c1.shell=/bin/bash -c
# 將資料流複製給多個channel
a1.sources.c1.selector.type=replicating
# 定義channel1
a1.channels.k1.type=memory
a1.channels.k1.capacity = 1000
a1.channels.k1.transactionCapacity=1000
# 定義channel2
a1.channels.k2.type=memory
a1.channels.k2.capacity = 1000
a1.channels.k2.transactionCapacity=1000
# 定義sink1
a1.sinks.s1.type = avro
a1.sinks.s1.hostname = bigdata112
a1.sinks.s1.port = 4402
# 定義sink2
a1.sinks.s2.type = avro
a1.sinks.s2.hostname = bigdata113
a1.sinks.s2.port = 4402
# 雙向連結
a1.sources.c1.channels = k1 k2
a1.sinks.s1.channel=k1
a1.sinks.s2.channel=k2
5.5.2 建立flume2配置檔案
在bigdata112的myconf目錄下,新建agent配置檔案:flume-fanout2.conf
接收flume1的event資料,然後產生一個channel和一個sink,最後將資料下沉到hdfs
檔案內容如下:
# 配置agent 不同agent之間,agent名不相同,但是source,channel,sink名可以相同
a2.sources = c2
a2.channels = k2
a2.sinks = s2
# 定義source
a2.sources.c2.type=avro
a2.sources.c2.bind = bigdata112
a2.sources.c2.port = 4402
# 定義channel
a2.channels.k2.type=memory
a2.channels.k2.capacity = 1000
a2.channels.k2.transactionCapacity=1000
# 定義sink
a2.sinks.s2.type = hdfs
a2.sinks.s2.hdfs.path=hdfs://bigdata111:9000/flume2/%H
#上傳檔案的字首
a2.sinks.s2.hdfs.filePrefix = flume2-
#是否按照時間滾動資料夾
a2.sinks.s2.hdfs.round = true
#多少時間單位建立一個新的資料夾
a2.sinks.s2.hdfs.roundValue = 1
#重新定義時間單位
a2.sinks.s2.hdfs.roundUnit = hour
#是否使用本地時間戳
a2.sinks.s2.hdfs.useLocalTimeStamp = true
#積攢多少個Event才flush到HDFS一次
a2.sinks.s2.hdfs.batchSize = 100
#設定檔案型別,可支援壓縮
a2.sinks.s2.hdfs.fileType = DataStream
#多久生成一個新的檔案
a2.sinks.s2.hdfs.rollInterval = 600
#設定每個檔案的滾動大小大概是128M
a2.sinks.s2.hdfs.rollSize = 134217700
#檔案的滾動與Event數量無關
a2.sinks.s2.hdfs.rollCount = 0
#最小副本數
a2.sinks.s2.hdfs.minBlockReplicas = 1
# 雙向連結
a2.sources.c2.channels = k2
a2.sinks.s2.channel=k2
5.5.3 建立flume3配置檔案
在bigdata113的myconf目錄下,新建agent配置檔案:flume-fanout3.conf
接收flume1的event資料,然後產生一個channel和一個sink,最後將資料下沉到本地/opt/flume3
檔案內容如下:
# 配置agent
a3.sources = c3
a3.channels = k3
a3.sinks = s3
# 定義source
a3.sources.c3.type=avro
a3.sources.c3.bind = bigdata113
a3.sources.c3.port = 4402
# 定義channel
a3.channels.k3.type=memory
a3.channels.k3.capacity = 1000
a3.channels.k3.transactionCapacity=1000
# 定義sink
a3.sinks.s3.type = file_roll
# 提示:本地此目錄必須先建好,程式不會自動建立該目錄
a3.sinks.s3.sink.directory=/opt/flume3
# 雙向連結
a3.sources.c3.channels = k3
a3.sinks.s3.channel=k3
5.5.4 啟動三臺機器配置檔案
bigdata111:
[root@bigdata111 myconf]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a1 --conf-file /opt/module/flume-1.8.0/myconf/flume-fanout1.conf -Dflume.root.logger==INFO,console
bigdata112:
[root@bigdata112 myconf]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a2 --conf-file /opt/module/flume-1.8.0/myconf/flume-fanout2.conf
bigdata113:
[root@bigdata113 myconf]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a3 --conf-file /opt/module/flume-1.8.0/myconf/flume-fanout3.conf
執行結果如圖:
bigdata112:
bigdata113:
5.6 扇入例子
5.6.1 建立flume1配置檔案
flume1(agent1)監控埠資料變化,將資料sink到flume3(agent3);
在myconf目錄下新建agent檔案:flume-fanin-1.conf
配置內容如下:
# 配置agent
a1.sources = c1
a1.channels = k1
a1.sinks = s1
# 配置source
a1.sources.c1.type = netcat
a1.sources.c1.bind = bigdata111
a1.sources.c1.port = 6666
# 配置sink
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=bigdata113
a1.sinks.s1.port=5008
# 配置channel
a1.channels.k1.type=memory
a1.channels.k1.capacity=1000
a1.channels.k1.transactionCapacity=1000
# 雙向繫結
a1.sources.c1.channels = k1
a1.sinks.s1.channel = k1
5.6.2 建立flume2配置檔案
flume2(agent2)監控本地檔案變化,將資料sink到flume3(agent3);
在myconf目錄下新建agent檔案:flume-fanin-2.conf
配置內容如下:
# 配置agent
a2.sources = c1
a2.channels = k1
a2.sinks = s1
# 配置source
a2.sources.c1.type = exec
a2.sources.c1.command = tail -F /opt/ceshi.log
a2.sources.c1.shell=/bin/bash -c
# 配置sink
a2.sinks.s1.type=avro
a2.sinks.s1.hostname=bigdata113
a2.sinks.s1.port=5008
# 配置channel
a2.channels.k1.type=memory
a2.channels.k1.capacity=1000
a2.channels.k1.transactionCapacity=1000
# 雙向繫結
a2.sources.c1.channels = k1
a2.sinks.s1.channel = k1
5.6.3 建立flume3配置檔案
flume3(agent3)接收flume1和flume2的資料,將資料sink到HDFS ;
在myconf目錄下新建agent檔案:flume-fanin-3.conf
配置內容如下:
# 配置agent
a3.sources = c1
a3.channels = k1
a3.sinks = s1
# 配置source
a3.sources.c1.type = avro
a3.sources.c1.bind = bigdata113
a3.sources.c1.port = 5008
# 配置sink
a3.sinks.s1.type=hdfs
a3.sinks.s1.hdfs.path=hdfs://bigdata111:9000/flume3/%H
# 上傳檔案的字首
a3.sinks.s1.hdfs.filePrefix = flume3-
# 是否按照時間滾動資料夾
a3.sinks.s1.hdfs.round = true
# 多少時間單位建立一個新的資料夾
a3.sinks.s1.hdfs.roundValue = 1
# 重新定義時間單位
a3.sinks.s1.hdfs.roundUnit = hour
# 是否使用本地時間戳
a3.sinks.s1.hdfs.useLocalTimeStamp = true
# 積攢多少個Event才flush到HDFS一次
a3.sinks.s1.hdfs.batchSize = 1000
# 設定檔案型別,可支援壓縮
a3.sinks.s1.hdfs.fileType = DataStream
# 多久生成一個新的檔案
a3.sinks.s1.hdfs.rollInterval = 600
# 設定每個檔案的滾動大小大概是128M
a3.sinks.s1.hdfs.rollSize = 134217700
# 檔案的滾動與Event數量無關
a3.sinks.s1.hdfs.rollCount = 0
# 最小冗餘數
a3.sinks.s1.hdfs.minBlockReplicas = 1
# 配置channel
a3.channels.k1.type=memory
a3.channels.k1.capacity=1000
a3.channels.k1.transactionCapacity=1000
# 雙向繫結
a3.sources.c1.channels = k1
a3.sinks.s1.channel = k1
5.6.4 啟動三個flume配置檔案
flume1:
[root@bigdata111 myconf]# flume-ng agent -c ../conf/ -n a1 -f flume-fanout1.conf -Dflume.root.logger==INFO,console
flume2:
[root@bigdata112 myconf]# flume-ng agent -c ../conf/ -n a2 -f flume-fanout2.conf
flume3:
[root@bigdata113 myconf]# flume-ng agent -c ../conf/ -n a3 -f flume-fanout3.conf
5.6.5 操作埠與檔案
新開xshell選項卡,連結bigdata111伺服器,然後執行telnet命令:
[root@bigdata111 ~]# telnet bigdata111 6666
Trying 192.168.1.111...
Connected to bigdata111.
Escape character is '^]'.
english
OK
chinese
OK
hello
OK
.net
OK
php
OK
java
OK
新開xshell選項卡,連結bigdata112伺服器,然後向/opt/ceshi.log新增新內容:
[root@bigdata112 ~]# cd /opt/
[root@bigdata112 opt]# ls
ceshi.log ha module soft zookeeper.out
[root@bigdata112 opt]# cat ceshi.log
start-log-in
end-log
[root@bigdata112 opt]# echo `date` >> ceshi.log
[root@bigdata112 opt]# echo "end-log" >> ceshi.log
[root@bigdata112 opt]# cat ceshi.log
start-log-in
end-log
2019年 09月 07日 星期六 23:36:03 CST
end-log
5.6.6 顯示執行結果
web頁面結果:
hdfs的檔案內容:
相關推薦
【Flume】Flume基礎之安裝與使用
1、Flume簡介 (1) Flume提供一個分散式的,可靠的,對大資料量的日誌進行高效收集、聚集、移動的服務,Flume只能在Unix環境下執行。 (2) Flume基於流式架構,容錯性強,也很靈活簡單。 (3) Flume、Kafka用來實時進行資料收集,Spark、Flink用來實時處理資料
【原創】Java基礎之Session機制
mem wrap 增加 sha1 info 下載 head 返回 att Session機制 JSESSIONID是Session的標識,當客戶端請求服務器端的時候,服務器端會檢查是否已經給這個客戶端創建過Session,也就是看客戶端的請求中的header是否有Cooki
【一】Python基礎之運算子
python運算子 算術運算子、比較運算子、賦值運算子、邏輯運算子、位運算子、成員運算子、身份運算子、運算子優先順序 Python算術運算子 運算子 描述 例項 + 加 - 兩個物件相加 a + b 輸出結果 31 - 減 - 得到
【elsticsearch】 1.基礎環境安裝
安裝java-1.8環境 1.安裝java 1.8 # yum install java-1.8.0-openjdk 2.配置環境 JAVA_HOME=/usr/lib/jvm/jre-1.8.0 CLASSPATH=.:$JAVA_HOME/lib/rt.j
【Oracle】第0天 安裝與配置
篇章概覽 前言 0、安裝與配置 第一天:Oracle使用者管理 1.1、使用者的建立與刪除 1.2、使用者許可權的授予與撤銷 1.3、使用者的口令管理 1.4、常用命令總結 第二天:Oracle基本用法 2.1、Oracle資料型別 2.2、Oracle基
【 專欄 】- Linux常用軟體安裝與配置
Linux常用軟體安裝與配置 Linux常用軟體,如Nginx,Memcached,PHP,Python,Mysql,Samba,Apache,TTserver,Redis,Gearman,svn等一些常用的軟體的安裝,配置以及使
【Docker】在Linux下安裝與配置Docker環境
0x00 前言 沒有太多說的,這個可能也到處都有…… 每個人的方法大概也大同小異? 主要是自己第一次接觸docker,就當作簡單的做一個記錄與總結吧。 (注意:本篇和以前的環境配置不同,遇到的問題過多,而且最終不是自己獨立完成 (故主要著眼於出現問題的記錄與過程
【redis】linux上的安裝與配置(詳細圖解)
1、下載 http://redis.io/download 2、解壓至任一目錄 tar xzf redis-2.8.17.tar.gz 3、編譯並安裝 cd redis-2.8.1
【RabbitMQ】ubuntu下RabbitMQ安裝與簡單使用
參考連結:1、安裝:https://blog.csdn.net/a295277302/article/details/71246941 https://blog.csdn.net/junzhen_chen/article/details/784593832、使用:https:
【原創】Linux基礎之後臺執行
linux伺服器通常都是遠端登入的,執行命令或者指令碼時,如果連線斷掉(執行時間較長或者網路不穩定時),那麼程序也就沒了,這時只能重新連線重新執行,這時可以使用後臺執行: 1 nohup 命令 nohup $command $args & 這時會生成一個nohup.out檔案,內容是
【原創】Linux基礎之sudo
section systems 常用 username linux dde share col users sudo允許用戶以其他用戶的身份(比如root)執行命令,比如切換用戶、執行命令、讀寫文件等; 配置 sudo配置在:/etc/sudoers ## Sudoers
【轉】Java基礎之—反射
value file ... 編譯錯誤 構造函數 prop ger pan 利用反射 本文章來源:https://blog.csdn.net/sinat_38259539/article/details/71799078。感謝敬業的小碼哥的總結。 反射是框架設計的靈魂(使用
【原創】Linux基礎之iptables
target port tab tor 之前 con 一個 設置 man iptables 1.4.21 官方:https://www.netfilter.org/projects/iptables/index.html iptables is the user
【原創】Linux基礎之keepalived
技術分享 proto lur software rac 自己的 lin bsp drop keepalived 2.0.12 官方:http://www.keepalived.org/ 一 簡介 Keepalived is a routing software wri
【原創】Linux基礎之常用命令
查找 查看進程 cores mem 負載 http block phy -m 1 磁盤、cpu、內存相關 查看整體磁盤占用情況 # df -h 查看指定目錄磁盤占用情況,按照目錄匯總,深度為1 # du -h --max-depth=1 $path 在指定目錄查查找
【docker】docker registry的安裝與啟動
docker registry是什麼? docker registry其實就是一個本地版本的docker hub,一個私有倉庫。 在使用docker的過程中,我們經常使用docker pull從雲端拉取image映象資源到本地,比如我現在需要一個to
【原創】Linux基礎之命令行瀏覽器links
end base use bubuko element graph 技術 namenode name 有時服務器環境受限,比如在內網環境不能暴露端口從外網訪問,用curl看html代碼比較累,這時可以使用命令行瀏覽器來查看相關頁面 links 官方:http://lin
【Redis】Redis 持久化之 RDB 與 AOF 詳解
## Redis 持久化 我們知道Redis的資料是全部儲存在記憶體中的,如果機器突然GG,那麼資料就會全部丟失,因此需要有持久化機制來保證資料不會因為宕機而丟失。Redis 為我們提供了兩種持久化方案,一種是基於快照,另外一種是基於 AOF 日誌。接下來就來了解一下這兩種方案。 ### 作業系統與磁碟
【轉載】Flume學習之路 (一)Flume的基礎介紹
必須 4.3 bin tar.gz 開源 暴露 linu ror 失敗 討論QQ:1586558083目錄一、背景二、Flume的簡介三、Flume NG的介紹3.1 Flume特點3.2 Flume的一些核心概念3.3 Flume NG的體系結構3.4 Source3.5
【NOI OpenJudge】【1.4】程式設計基礎之邏輯表示式與條件分支
01:判斷數正負 #include<cstdio> #include<iostream> using namespace std; int main(){ int n; cin>>n; if(n > 0){