Flume總結(1)--單個agent採集的基本配置

来源:http://www.cnblogs.com/tianjun2012/archive/2017/05/08/6825066.html
-Advertisement-
Play Games

一、日誌採集:從網路埠接收數據,下沉到logger 文件netcat-logger.conf: 啟動命令:#告訴flum啟動一個agent,指定配置參數, --name:agent的名字,flume-ng agent --conf conf --conf-file conf/netcat-logg ...


一、日誌採集:從網路埠接收數據,下沉到logger

文件netcat-logger.conf:

 1 # Name the components on this agent
 2 #給那三個組件取個名字
 3 a1.sources = r1
 4 a1.sinks = k1
 5 a1.channels = c1
 6 
 7 # Describe/configure the source
 8 #類型, 從網路埠接收數據,在本機啟動, 所以localhost, type=spoolDir採集目錄源,目錄里有就採
 9 a1.sources.r1.type = netcat
10 a1.sources.r1.bind = localhost
11 a1.sources.r1.port = 44444
12 
13 # Describe the sink
14 a1.sinks.k1.type = logger
15 
16 # Use a channel which buffers events in memory
17 #下沉的時候是一批一批的, 下沉的時候是一個個eventChannel參數解釋:
18 #capacity:預設該通道中最大的可以存儲的event數量
19 #trasactionCapacity:每次最大可以從source中拿到或者送到sink中的event數量
20 a1.channels.c1.type = memory
21 a1.channels.c1.capacity = 1000
22 a1.channels.c1.transactionCapacity = 100
23 
24 # Bind the source and sink to the channel
25 a1.sources.r1.channels = c1
26 a1.sinks.k1.channel = c1

啟動命令:
#告訴flum啟動一個agent,指定配置參數, --name:agent的名字,
flume-ng agent --conf conf --conf-file conf/netcat-logger.conf --name a1 -Dflume.root.logger=INFO,console

傳入數據:

[root@mini03 ~]# telnet localhost 44444

Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
hello world!^H^H^H^H^H^H^H^H^H^H^H^H^H^H
OK
tianjun2012!
OK
控制台看到的數據
2017-05-08 13:41:35,766 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 68 65 6C 6C 6F 20 77 6F 72 6C 64 21 08 08 08 08 hello world!.... }
2017-05-08 13:41:40,153 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 74 69 61 6E 6A 75 6E 32 30 31 32 21 0D tianjun2012!. }

 二、監視文件夾

啟動命令:
bin/flume-ng agent -c ./conf -f ./conf/spooldir-logger.conf -n a1 -Dflume.root.logger=INFO,console

測試: 往/home/hadoop/flumespool放文件(mv ././xxxFile /home/hadoop/flumeSpool),但是不要在裡面生成文件

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
#監聽目錄,spoolDir指定目錄, fileHeader要不要給文件夾前墜名
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /home/hadoop/flumespool
a1.sources.r1.fileHeader = true

# 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

三、用tail命令獲取數據,下沉到hdfs

 1 # Name the components on this agent
 2 a1.sources = r1
 3 a1.sinks = k1
 4 a1.channels = c1
 5 
 6 # Describe/configure the source
 7 a1.sources.r1.type = exec
 8 a1.sources.r1.command = tail -F /home/hadoop/log/test.log
 9 a1.sources.r1.channels = c1
10 
11 # Describe the sink
12 a1.sinks.k1.type = hdfs
13 a1.sinks.k1.channel = c1
14 a1.sinks.k1.hdfs.path = hdfs://mini01:9000/flume/events/%y-%m-%d/%H%M/
15 a1.sinks.k1.hdfs.filePrefix = events-
16 a1.sinks.k1.hdfs.round = true
17 a1.sinks.k1.hdfs.roundValue = 10
18 a1.sinks.k1.hdfs.roundUnit = minute
19 a1.sinks.k1.hdfs.rollInterval = 3
20 a1.sinks.k1.hdfs.rollSize = 20
21 a1.sinks.k1.hdfs.rollCount = 5
22 a1.sinks.k1.hdfs.batchSize = 1
23 a1.sinks.k1.hdfs.useLocalTimeStamp = true
24 #生成的文件類型,預設是Sequencefile,可用DataStream,則為普通文本
25 a1.sinks.k1.hdfs.fileType = DataStream
26 
27 
28 
29 # Use a channel which buffers events in memory
30 a1.channels.c1.type = memory
31 a1.channels.c1.capacity = 1000
32 a1.channels.c1.transactionCapacity = 100
33 
34 # Bind the source and sink to the channel
35 a1.sources.r1.channels = c1
36 a1.sinks.k1.channel = c1

啟動命令:
flume-ng agent -c conf -f conf/tail-hdfs.conf -n a1

模擬寫入日誌:

1 [root@mini03 log]# i=1;
2 while(( $i<=500000 ));
3  do echo $i >> /home/hadoop/log/test.log;
4  sleep 0.5; 
5 let 'i++';done

查看hdfs上的文件內容

 1 [root@mini01 ~]# hdfs dfs -cat /flume/events/17-05-08/1530/*
 2 1
 3 2
 4 3
 5 4
 6 5
 7 6
 8 7
 9 8
10 9
11 10
12 11
13 12
14 13
15 14
16 15
17 16
18 17
19 18
20 19
21 20

註意,本例中,為了快速看到效果,這個值都設置比較小,真實情況需要調整

a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.rollInterval = 3
a1.sinks.k1.hdfs.rollSize = 20
a1.sinks.k1.hdfs.rollCount = 5
22 a1.sinks.k1.hdfs.batchSize = 1


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • #####集合的一些常用方法#####list1=set([1,2,3,4])list2=set([1,2,3,4,5,6])###集合的交集(返回兩個集合裡面共同有的部分){1, 2, 3, 4}print(list1.intersection(list2))###集合的並集(返回合併兩個集合去掉 ...
  • //如果表達式以一個字元串起頭,那麼後續所有操作數必須是字元串類型 //thinking in java 書中p53 3.13 字元串操作符+和+= import static net.mindview.util.Print.*;public class StringOperators { publ ...
  • 1.下載好jdk1.8.0版本或以上版本 2.配置JAVA_HOME,CLASSPATH,PATH 其中JAVA_HOME必須的 2.1 JAVA_HOME=E:\java\jdk1.8.0_77 2.2 CLASSPATH(告訴java程式運行時,你的類或者類庫在哪裡) (a).; E:\java ...
  • 1.用例情景 1)定義一個鬧鐘(目標類),裡面我們感興趣的是時間值times,當times大於9.15時,通知觀察者。 2)定義兩個觀察者,userA,userB,當收到times值時,作出判斷,當times值大於9.30的時候就作出反映(列印一天出發的消息)。 2.設計思路 1)定義兩個介面 2) ...
  • 1 #include 2 #include 3 4 using namespace std; 5 6 7 class STAbstractProductA 8 { 9 public: 10 virtual void use() = 0; 11 }; 12 13 class STProductA1: ... ...
  • 起源 user 在插著 充電器 打電話的狀況下, 為了安全起見, 避免 充電器在這時損害手機,間接造成 user 的傷害, 而有了這 feature, 在 battery voltage Vbat 4V 時,不充電; 在 battery voltage Vbat V_CC2TOPOFF_THRES) ...
  • Zookeeper是一個分散式應用程式協調服務,功能包含:配置管理、名字服務、分散式鎖、集群管理等,適合使用在讀多於寫的操作。 1. 配置管理 分散式系統都有好多機器,比如我在搭建hadoop的HDFS的時候,需要在一個主機器上(Master節點)配置好HDFS需要的各種配置文件,然後通過scp命令 ...
  • 驚悚!異能者為了美女居然..... 備忘錄模式(Memento): 在不破壞封閉的前提下, 捕獲一個對象的內部狀態, 併在該對象之外保存這個狀態. 這樣以後就可將該對象恢復到原先保存的狀態. 備忘者模式優點: 發起人備份狀態不需要自己管理, 可以備份到外部, 這樣可以很好的保持封裝的邊界, 這樣做的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...