1. 程式人生 > >Flume原始碼分析—利用Eclipse對Flume原始碼進行遠端除錯分析環境搭建(一)

Flume原始碼分析—利用Eclipse對Flume原始碼進行遠端除錯分析環境搭建(一)

一、引言
最近在學習瞭解大資料分析相關的工作,對於其中用到的收集部分用到了flume,特意花了點時間瞭解了一下flume的工作原理及工作機制。個人瞭解一個新的系統首先從概略上了解一下其基本原理後,接著從原始碼入手瞭解其部分關鍵實現部分,最後會嘗試去修改部分內容,從而加深對其的理解。有關flume原理部分相關資料網上很多,這裡介紹一下我的原始碼分析環境的搭建過程。
二、環境介紹
1、apache-flume-1.6.0-src
2、CentOS 7.0
3、Eclipse Java EE Kepler
4、jdk-6u45-linux-x64.rpm
5、Source Insight
6、Oracle virtual Box
三、分析方法


在CentOS中安裝JDK,開啟Eclipse的遠端除錯功能,進行跟蹤排程分析。相比與直接用Source Insight直接閱讀原始碼效率更高點,但在分析過程中可以使用Source Insight輔助分析類之間的引用關係。
四、分析步驟
1、在CentOS中安裝JDK及Flume,安裝過程不再多述。該過程中CentOS及Flume均安裝在virtual Box中,IP地址為192.168.1.11。
2、設定Flume啟動引數,利用記事本開啟apache-flume-1.6.0-src\bin\flume-ng並進行編輯,主要將以下項

JAVA_OPTS="-Xmx20m"

修改為

JAVA_OPTS="-Xmx20m -Xdebug -Xrunjdwp:transport=dt_socket,address=8888,server=y,suspend=y"

這裡設定了遠端除錯的埠為8888.遠端除錯相關引數設定見這裡
3、設定Eclipse的遠端除錯功能,如下圖所示:
這裡寫圖片描述
4、利用Eclipse Java EE Kepler匯入已有Maven工程,即flume原始碼,如下圖所示:
這裡寫圖片描述

5、在Eclipse中JAVA檔案……\apache-flume-1.6.0-src\flume-ng-node\src\main\java\org\apache\flume\node\Application.java中設定斷點,在CentOS中啟動Flume即可對flume的啟動過程進行遠端除錯。由此作為入口點對整個flume原始碼進行跟蹤分析
注意:

要先啟動flume,再利用eclipse進行除錯,不然會報無法連線。
五、常見問題
由eclipse引入maven工程,會出現很多的錯誤,常見的一些解決辦法如下:
1、最常見的是由於被牆的厲害,maven.twttr.com以及google中的部分庫不能下載,試了幾種,最好的解決辦法參見這裡,即在pom檔案中新增如下內容

<repository>
 <id>maven.tempo-db.com</id>
 <url>http://maven.oschina.net/service/local/repositories/sonatype-public-grid/content/</url>
</repository>

2、有關版本問題參見這裡.
3、tools.jar問題參見這裡.
4、Plugin execution not covered by lifecycle configuration問題參見這裡
5、出現AvroFlumeOGEvent cannot be resolved類似的錯誤,如下圖所示,找不到相應的類的情況,

這是因為使用了avro,需要對pom檔案進行generate-source操作,利用avro-maven-plugin外掛的生成相應的JAVA檔案,然後新增相應的庫地址即可解決上述問題。


六、注意事項
1、由於JDK各個版本之間相容性做的並不好,為了更好的閱讀原始碼一定要了解各個軟體所使用的JDK版本,如Eclipse所需要的JDK、Flume所需要的JDK等等,否則會出現一些奇怪的問題,難以解決。
2、Flume在構建過程中使用到了很多開源的成熟的系統,如avro、netty、maven等等,與kafka等也存在交集,因此在分析過程中需要相應瞭解相關的開源系統內容。

相關推薦

Flume原始碼分析利用EclipseFlume原始碼進行遠端除錯分析環境搭建

一、引言 最近在學習瞭解大資料分析相關的工作,對於其中用到的收集部分用到了flume,特意花了點時間瞭解了一下flume的工作原理及工作機制。個人瞭解一個新的系統首先從概略上了解一下其基本原理後,接著從原始碼入手瞭解其部分關鍵實現部分,最後會嘗試去修改部分內容

Hadoop+Flume+Kafka+Zookeeper叢集環境搭建

Hadoop+Flume+Kafka+Zookeeper叢集環境搭建 1.部署基礎條件 1.1 硬體條件 IP hostname 192.168.100.103 mater 192.168.100.104 flumekafka1 192.168.1

轉載:monkeyrunner之eclipse中運行monkeyrunner腳本之環境搭建

導包 rep 是把 body tle cnblogs 9.png 解決方法 align 轉載自:lynnLi 的monkeyrunner之eclipse中運行monkeyrunner腳本之環境搭建(四) monkeyrunner腳本使用Python語法編寫,但它實際上是通

Ubuntu 14.04 Eclipse JNI環境搭建之生成JNI標頭檔案

軟體環境 ubuntu 14.04eclipse for JavaCDT建立Java工程              建立一個空Java工程,並建立HelloJni.java類。編寫好HelloJni.java類後,需要通過javah命令生成標頭檔案(HelloJni.h)

使用Eclipse + OpenCV + C++ 環境搭建

需要的軟體: Win7 64位 Eclipse CDT MinGW 64位 OpenCV2.4.13 使用其中的x64庫 1.安裝MinGW 64位 正常安裝軟體,我是安裝在c盤下 :C:\MinGW\mingw-w64 配置環境變數:C:\Mi

Hadoop原始碼閱讀環境搭建IDEA Hadoop原始碼編譯環境搭建 IDEA配置maven中央庫

拿到一份Hadoop原始碼之後,經常關注的兩件事情就是 1、怎麼閱讀?涉及IDEA和Eclipse工程搭建。IDEA搭建,選擇原始碼,逐步匯入即可;Eclipse可以選擇後臺生成工程,也可以選擇IDE匯入。二者工程也可以互相匯入\到處。 2、怎麼構建?利用maven,生成安裝包。 二者均需配置maven

利用adbandroid手機進行遠端截圖/截圖

        今晚在家搗騰手機, 玩adb的時候, 利用adb對手機進行了截圖,  玩玩, 如下: C:\Documents and Settings\Administrator>adb connect 192.168.1.100 connected to 192

Selenium終極自動化測試環境搭建:Selenium+Eclipse+Python

前面舉例了Selenium+Eclipse+Junit+TestNG自動化測試環境的搭建,在前一篇的基礎上,下面再舉例Selenium+Eclipse+Python測試環境搭建。  第一步:安裝Python  根據下面的地址,直接一鍵安裝,全部預設方式。    安裝到C:\Python27,設定Python

Spark專案之環境搭建單機五 配置eclipse的scala環境,並建立spark專案

先安裝scala 環境: eclipse版:spring-tool-suite-3.9.1.RELEASE-e4.7.1a-win32-x86_64 下載地址:https://www.scala-lang.org/download/  然後配置環境變數,參考以下地址:

Eclipse進行遠端除錯linux 環境的tomcat配置 更新maven web專案

在網上找了找關於遠端除錯的配置,記錄在這裡以備後續查詢! 平常我們都是用windows開發,但是有時候需要將tomcat部署到linux下去執行,比如執行shell指令碼。這個時候我們就需要在linux環境下進行除錯。我們可以利用myeclipse的遠端除錯功能,來進行操

使用Eclipse + OpenCV + C++ 環境搭建

在上一篇部落格搭建的環境中遇到的問題: 程式碼: 編譯上面的程式碼時就會出現問題: 意思就是無法呼叫c++結構的opencv庫。 解決方法: 參考: 這裡把解決的思路寫出來,當然具體的問題因為忘記截圖了,所以沒有晒出來 1.在上一篇部落

eclipse+maven+ssm初始環境搭建1

一,準備環境 jdk1.8, maven3.5   tomcat 8.5 eclipse  Oxygen.3a Release (4.7.3a) 二, 配置環境 配置maven 阿里雲映象,conf資料夾下的setting.xml中的mirrors節點下加入: &

利用堆疊進行表示式求值的方法

開發十年,就只剩下這套架構體系了! >>>   

Flume NG原始碼分析基於靜態properties檔案的配置模組

日誌收集是網際網路公司的一個重要服務,Flume NG是Apache的頂級專案,是分散式日誌收集服務的一個開源實現,具有良好的擴充套件性,與其他很多開源元件可以無縫整合。搜了一圈發現介紹Flume NG的文章有不少,但是深入分析Flume NG原始碼的卻沒有。準備寫一個系列分析一下Flume NG的

利用CNN股票“圖片”進行漲跌分類——次嘗試【附原始碼

首先解釋一下標題: CNN:卷積神經網路(Convolutional Neural Network), 在影象處理方面有出色表現,不是被川普怒懟的那個新聞網站; 股票漲跌:大家都懂的,呵呵; 股票圖片:既然使用CNN,那麼如果輸入資料是股票某個週期的K線圖片就太

【Java】【FlumeFlume-NG啟動過程源代碼分析

code extends fix tar top 依據 oid article gif 從bin/flume 這個shell腳本能夠看到Flume的起始於org.apache.flume.node.Application類,這是flume的main函數所在。   m

GCC原始碼分析——介紹與安裝

原文連結:http://blog.csdn.net/sonicling/article/details/6702031     上半年一直在做有關GCC和LD的專案,到現在還沒做完。最近幾天程式設計的那臺電腦壞了,所以趁此間隙寫一點相關的分析和

計算機視覺之利用Harris檢測子進行角點特徵檢測含matlab原始碼

    本文為原創文章,轉載請註明本文來自http://blog.csdn.net/anymake_ren/article/details/21298807     計算機視覺中常用的影象特徵包括:點、

Glide原始碼分析從用法來看之with方法

繼續啃原始碼,用過Glide的人,肯定都覺得它好好用,我們一般只需要幾行程式碼,就可以達到我們想要的效果,可以在這個背後是什麼呢?就需要我們來看了。 我一般看原始碼,我喜歡先從用法來看,然後一步一步的再細扣,所以就先從用法來看Glide的整體流程。 用過Glide的人,用下面這段

SNMP原始碼分析配置檔案部分

snmpd.conf想必不陌生。在程序啟動過程中會去讀取配置檔案中各個配置。其中幾個引數需要先知道是幹什麼的:   token:配置檔案的每行的開頭,例如 group MyROGroup v1 readSec 這行token的引數是group。