A. flume 出現sink.AbstractRpcSink.start(AbstractRpcSink.java:294)] Unable to create Rpc client
1、到官方網上下載apache-flume-1.4.0-bin.tar.gz
2、解壓安裝包
tar -zxvf apache-flume-1.4.0-bin.tar.gz
3、配置環境變數
export FLUME_HOME=/root/install/apache-flume-1.4.0-bin
export PATH=$PATH:$FLUME_HOME/bin
4、讓配置文件生效
source /etc/profile
5、編寫一個測試案例
(1)在$FLUME_HOME/conf/目錄下新建文件example-conf.properties,其內容如下
[python] view plain
<span style="font-size:18px;"><span style="font-size:18px;"># Describe the source
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = avro
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</span></span>
(2)在conf目錄下新建一個源文件file-test.txt並向其中寫入數據
[html] view plain
<span style="font-size:18px;"><span style="font-size:18px;">echo "hello world" >file-test.txt</span></span>
(3)啟動agent代理
[html] view plain
<span style="font-size:18px;"><span style="font-size:18px;">flume-ng agent -n a1 -f example-conf.properties</span></span>
(4)另開一個窗口啟動avro-client客戶端向agent代理發送數據(以下的localhost目前照這個例子還不能寫成ip地址)
[html] view plain
<span style="font-size:18px;"><span style="font-size:18px;">flume-ng avro-client -H localhost -p 44444 -F file-test.txt</span></span>
從上圖輸出結果可以看出avro-client客戶端發來的數據已經被agent代理接收到,在本例中的配置中,設置的sink類型為logger,其輸出結果會保存在日誌中
B. 如何用Flume實現實時日誌收集系統
方法/步驟 dell網站下載dset系統日誌收集工具。盡量使用最新版本的dset工具。 雙擊開始運行,下一步。這個不是安裝程序哦。 點NEXT接受協議後,您可以看到如下的這個界面:1.第一項,可以創建日誌信息文件,將這個文件發郵件給戴爾技術工程師,或者您自行分析,可以幫助了解機器的運行狀態。2.第二個選項安裝DSET軟體。3.第三個選項獲取日誌並且清除原有記錄日誌,可以解決狀態燈不正常但機器使用正常的情況。 選擇next(只選擇第一個選項,其它的SKIP的都不要選擇,否則會無法抓取到日誌)。 運行後會看到如下界面,大約幾分鍾至十幾分鍾的時間。 日誌收集後產生的文件名和保存的路徑如下圖紅色部分.也可以通過搜索dset*.zip查找。 獲得機器的日誌壓縮文件,解壓密碼為「dell」將此文件解壓後,可以看到詳細的硬體、系統信息。
C. Flume-ng如何實現監控一個文件變化的目錄大神們幫幫忙
bg4.png
不需要修改源碼這些裡面flume對於監控目錄的文件會自動上傳,並且對於正在上傳的這個文件會被重命名。所以你在追加內容,可能會產生問題。
D. 如何用maven編譯flume的源碼
方法 源碼下載 http://www.neoye.com/3446.html apache-flume-1.5.2-src.tar.gz 解壓至C盤根目錄 建議放到C盤根目錄中,測試時我是放到這里,其它目錄不保證可以順利通過,可參考測試。 運行mvn 進入c:\apache-flume-1.5.2目錄
E. flume source 可以進行代碼檢驗嗎
這上面便是httpsource源碼了,可以看到主要是5個類:HTTPBadRequestException,HTTPSource,,HTTPSourceHandler,JSONHandler。
分別的作用是:
HTTPBadRequestException:定義一些http異常,常用的比如404。
:主要定義一些source的常量,來自於配置文件。比如:port,host等等
HTTPSourceHandler:一個介面,作為handler模板。
JSONHandler:提供的默認實現Handler,選擇是[「header」:,"body":]這種格式,筆者對此很不習慣,其實裡面提供了好幾種event模式,不知道為嘛要選擇這種。
HTTPSource:這個就是主類了,裡面有類似於main方法的start方法。
其實本質上httpSource就是一個嵌入了jetty的伺服器,通過接受post請求(目前寫死了只處理post請求)。將數據轉換為event往下發。所以,修改很簡單。
你只需要在添加一個contextPath參數:
F. 如何編譯Flume-NG源碼之最新1.5.2版本
方法
源碼下載
http://www.neoye.com/3446.html apache-flume-1.5.2-src.tar.gz
解壓至C盤根目錄
建議放到C盤根目錄中,測試時我是放到這里,其它目錄不保證可以順利通過,可參考測試。
運行mvn
進入c:\apache-flume-1.5.2目錄,運行mvn install -DskipTests -Dtar注意:網上有其它參考材料說要先將注釋掉hbase和hadoop-test相關的依賴,我沒這樣做,沒問題。
可能根據環境不同有差異。不過大家遇到與hbase和hadoop-test相關的錯誤可以進行參考更正。
部分代碼參考
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
<version>${hbase.version}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-test</artifactId>
<version>${hadoop.version}</version>
</dependency>
典型問題1處理[重點]
1、error reading error in opening zip file
[ERROR] error: error reading
/org/elasticsearch/elasticsearch/0.90.1/elasticsearch-0.90.1.jar;
error in opening zip file
[ERROR] -> [Help 1]
出現這個錯誤可能是已經下載的這個jar存在問題。到本地庫中找到對應的jar所在位置,然後將其刪除,重新運行mvn命令可解決。以上這個錯誤不一定是elasticsearch的jar找不到,其他jar也可能出現這個問題。
典型問題2處理[重點]
flume-ng-morphline-solr-sink出現問題,對應的kite-morphline沒有找到依賴。要使用這個flume-ng-morphline-solr-sink做些文章的,所以這里出問題必須解決。
[ERROR] Failed to execute goal on project flume-ng-morphline-solr-sink: Could no
t resolve dependencies for project org.apache.flume.flume-ng-sinks:flume-ng-morp
hline-solr-sink:jar:1.5.2: Failed to collect dependencies for [org.apache.flume:
flume-ng-core:jar:1.5.2 (compile), org.slf4j:slf4j-api:jar:1.6.1 (compile), org.
kitesdk:kite-morphlines-all:pom:0.12.0 (compile?), org.slf4j:jcl-over-slf4j:jar:
1.6.1 (provided), org.apache.solr:solr-test-framework:jar:4.3.0 (test), org.kite
sdk:kite-morphlines-solr-core:jar:tests:0.12.0 (test), junit:junit:jar:4.10 (tes
t)]: Failed to read artifact descriptor for org.kitesdk:kite-morphlines-all:pom:
0.12.0: Could not transfer artifact org.kitesdk:kite-morphlines-all:pom:0.12.0 f
rom/to cdh.repo (https://repository.cloudera.com/artifactory/cloudera-repos): Co
nnection to https://repository.cloudera.com refused: Connection timed out: conne
ct -> [Help 1]
提示的錯誤是連接cloudera的中央庫超時了,看似是網路問題。其實解決了網路問題還有另外一個重大問題就是版本對應不上。查看了一下flume-ng-morphline-solr-sink的pom.xml文件,對應查找的kite.version是0.12.0版本。但其實cloudera的中央庫上也沒有這個版本了。所以解決辦法是: A、將kite.version的版本改成0.15.0.修改進入源碼根目錄找到pom.xml文件,找到<kite.version>0.15.0</kite.version>將0.12.0修改成0.15.0 B、找到<dependenciesManagement>標簽,將下面代碼插入到dependency中。
<dependency>
<groupId>org.kitesdk</groupId>
<artifactId>kite-morphlines-all</artifactId>
<version>${kite.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
</exclusion>
</exclusions>
<type>pom</type>
<optional>true</optional>
</dependency>
C:\apache-flume-1.5.2-src\flume-ng-sinks\flume-ng-morphline-solr-sink目錄,打開pom.xml文件,將所有${kite.version}替換成0.15.0。上一步的目的是如果工程引用了org.kitesdk的話,則不使用這個版本。可以自定義其引用的版本。我在實際應用中就遇到了這兩個主要的問題。當然其中還有一些主要是repository連接不上的問題(公司比較爛,網路有限制)。想各種辦法從網上先down下來再上傳到私服解決。最後提示」Build Success」編譯成功了,見下圖。
編譯成eclipse工程
mvn eclipse:eclipse至此,使用eclipse導入工程即可進行開發了。
我這里還遇到了兩個flume-dataset-sink的單體測試中有一個方法編譯不過去的問題。因為我沒用到這個sink所以也沒去解決。另一個問題是可能在install時可能會遇到Missing artifact jdk.tools:jdk.tools:jar:1.6的問題。
解決辦法:在flume-ng-morphline-solr-sink的pom.xml文件中添加一個依賴。
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.7</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>
至於jdk的版本和系統路徑根據實際的開發環境的環境變數而定,其他都沒問題。
G. 如何編寫Flume-ng-morphline-avro-sink
找到flume源碼所在路徑:
(C:\apache-flume-1.5.2-src\flume-ng-sinks),拷貝一份flume-ng-morphline-solr-sink目錄到同級文件夾,將目錄名稱修改成flume-ng-morphline-avro-sink。
2
修改flume-ng-morphline-avro-sink
目錄下的pom.xml文件。修改<artifactId>標簽中內容為flume-ng-morphline-avro-sink。修改<name>標簽中內容為Flume NG Morphline Avro Sink。注釋掉<properties>標簽中的<solr.version>和<solr.expected.version>兩個標簽內容。因為是原Solr中的內容,這里用不到。
3
在eclipse中打開flume-ng-sinks/pom.xml文件
一、 在Overview標簽頁中的Moles點擊Add,找到flume-ng-morphline-avro-sink並選中確定,將新建的morphline-avro-sink添加到Moles中。這樣在該pom文件的「pom.xml」標簽頁中就可以看到多了一個flume-ng-morphline-avro-sink。
H. 《Flume構建高可用、可擴展的海量日誌採集系統》pdf下載在線閱讀,求百度網盤雲資源
《Flume》(【美】Hari Shreedharan(哈里•史瑞德哈倫))電子書網盤下載免費在線閱讀
鏈接:
書名:Flume
作者:【美】Hari Shreedharan(哈里•史瑞德哈倫)
譯者:馬延輝
豆瓣評分:7.2
出版社:電子工業出版社
出版年份:2015-8-1
頁數:232
內容簡介:
《Flume:構建高可用、可擴展的海量日誌採集系統》從Flume 的基本概念和設計原理開始講解,分別介紹了不同種類的組件、如何配置組件、如何運行Flume Agent 等。同時,分別討論Source、Channel 和Sink 三種核心組件,不僅僅闡述每個組件的基本概念,而且結合實際的編程案例,深入、全面地介紹每個組件的詳細用法,並且這部分內容也是整個Flume 框架的重中之重。之後,講解攔截器、Channel選擇器、Sink 組和Sink 處理器等內容,它們為Flume 提供靈活的擴展支持。最後,介紹了Flume 的高級使用,如何使用Flume 軟體開發工具集(SDK)和Embedded Agent API,如何設計、部署和監控Flume 生產集群。
作者簡介:
Hari Shreedharan是Cloudera的一名軟體工程師,他工作於Apache Spark、Apache Flume和Apache Sqoop。他也是Flume項目的一個提交者和PMC成員,幫助項目的方向做決定。
I. 如何編譯及運行flume源碼
and the dog. "Is the water good?"
J. apache-flume-1.6.0-src.tar和apache-flume-1.6.0-bin.tar的區別
Flume最早是Cloudera提供的日誌收集系統,目前是Apache下的一個孵化項目,Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力