導航:首頁 > 源碼編譯 > 修改hadoop源碼

修改hadoop源碼

發布時間:2022-10-24 14:35:04

1. hadoop源碼修改了,編譯成功後,將編譯後的hadoop文件直接拿來搭建么,還是需要經過什麼處理呢

把你編譯後的hadoop源碼丟到原來的hadoop集群環境中去 即覆蓋hadoop安裝目錄下的原hadoop-core-xxx.jar 同樣的所有節點都需要更新 然後重啟集群

2. 怎樣導入hadoop0.20的源碼

1. 下載Hadoop源代碼

2. 准備編譯環境
2.1. 系統
CentOS5.5
2.2. Hadoop代碼版本
hadoop-0.20.2-release
2.3. 聯網
編譯Hadoop 會依賴很多第三方庫,但編譯工具Ant 會自動從網上下載缺少的庫,所以必須保證機器能夠訪問Internet。
2.4. java
編譯Hadoop要用JDK1.6 以上
安裝好之後,請設置好JAVA_HOME 環境變數。
2.5. Ant
需要使用Ant 工具來編譯Hadoop, Ant
安裝好之後,請設置好ANT_HOME 環境變數。
2.6. Eclipse

3. 編譯Hadoop
3.1. 編譯Hadoop
步驟1) 在Elipse 的Package 視圖中單擊右鍵,選擇New->Java Project,如下圖所示:

步驟2) 選擇源代碼目錄,設置Project 名。

在上圖所示的對話框中,點擊Browse 按鈕,選擇hadoop-0.20.2 源代碼目錄,並設置Projectname 為hadoop-0.20.2-dev。工程導入完成後,進入Eclipse 主界面,可以看到hadoop-0.20.2 已經導入進來,但可以看到目錄上有紅叉叉,是因為Elipse默認使用了Java Builder,而不是Ant Builder,所以下一步就是設置使用Ant Builder。

步驟3) 設置Builder 為Ant:右鍵hadoop-0.20.2-dev>Properties->Builders:

在上圖所示的界面中,點擊New 按鈕,在彈出的對話框中選中Ant Builder,確定之後會彈出如下對話框:

點擊Browse File System 按鈕,選擇hadoop-0.20.2源代碼目錄下的build.xml 文件,並設置Name 為Ant_Builder(Name 可以改成其它的,但建議使用Ant_Builder,因為這樣名副其實),操作結果如下圖所示:

除上圖所示的設置外,還需要設置如下圖所示的Targets,建議設置成Manual Build 編譯方式,而不是Auto Build 編譯方式。因為在Auto Build 模式下,任何修改都會觸發編譯,而Manual Build 模式下,只在需要的時候,點擊編譯按鈕或菜單編譯即可。

Hadoop 各成員都需要編譯成jar,所以做如下圖所示的一個修改:

確定之後,返回如下圖所示的Edit Configuration 對話框:

上面完成後,回到Builder 的主對話框,再將對話框中的Java Builder 下移,並將它前面的勾去掉。
進入Eclipse 主界面,由於之前選擇了Manual Build,所以需要人工方式驅動編譯,編譯成功後,可以看到BUILDSUCCESSFUL 字樣。

請注意:如果上圖所示的菜單中的BuildAutomatically 被勾中,則在common的右鍵菜單中可能不會出現Build 子菜單。
在編譯過程中,Ant 會自動從網上下載所依賴的庫。hadoop-0.20.2 編譯成功結束後,可以在build 目錄下找到編譯後生成的文件hadoop-core-0.20.2-dev.jar。

3.2編譯過程中出現錯誤

1、可能有時候因為eclipse版本或者操作系統版本的問題使得hadoop提供的eclipse plugin不太好用。
解決方法:
1)修改$HADOOP_HOME/src/contrib/build-contrib.xml
增加一行:<propertyname="eclipse.home" location="/home/gushui/eclipse"/>
上句後面的/home/gushui/eclipse由自己的$ECLIPSE_HOME代替

2)修改$HADOOP_HOME/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/.java
注釋掉原來的//importorg.eclipse.jdt.internal.debug.ui.launcher.JavaApplicationLaunchShortcut;
改為importorg.eclipse.jdt.debug.ui.launchConfigurations.JavaApplicationLaunchShortcut;

3. 怎麼使用eclipse編譯hadoop源碼

使用eclipse編譯hadoop源碼

1,建立一個Hadoop源碼文件夾
2、svn 檢出hadoop1.0.4的源碼。svn checkout http://svn.apache.org/repos/asf/hadoop/common/tags/release-1.0.4
注意:如果在ubuntu下直接上面語句報錯,可能需要執行下面的語句
sudo apt-get install autoconf
sudo apt-get install libtool
3、在檢出完成後的目錄下執行
ant eclipse.然後將源碼導入到eclipse中。
4、修改 release-1.0.4/src/contrib/gridmix/src/Java/org/apache/hadoop/mapred/gridmix/Gridmix.java
將兩處的 Enum<? extends T> 改成 Enum<?>

5、編譯器設置及編譯。
右擊工程名,Properties-->Builders-->New--->Ant Builder
New_Builder --> Edit: Name: hadoop-Builder.Main:Builderfile(builder.xml的位置):/home/nacey/workspace/source-workspace/hadoop-1.0.4;Targets—>Manual Build: jar
然後選擇菜單Project-->Build Project

在/home/nacey/workspace/source-workspace/hadoop-1.0.4/build文件夾下會生成三個開發 jar 包:

hadoop-client-1.0.4-SNAPSHOT.jar
hadoop-core-1.0.4-SNAPSHOT.jar
hadoop-minicluster-1.0.4-SNAPSHOT.jar

去掉"-SNAPSHOT"即可替換hadoop-1.0.4 下的同名 jar 包.

注意如果要在集群中使用自己編譯的jar,則需要替換集群中的所有機器。不然會出現版本不匹配。

4. hadoop yarn源碼怎麼進行修改

第一個階段:學習hadoop基本使用和基本原理,從應用角度對hadoop進行了解和學習
這是第一個階段,你開始嘗試使用hadoop,從應用層面,對hadoop有一定了解,比如你可以使用hadoop shell對hdfs進行操作,使用hdfs API編寫一些程序上傳,下載文件;使用MapRece API編寫一個數據處理程序。一旦你對hadoop的基本使用方法比較熟悉了,接下來可以嘗試了解它的內部原理,注意,不需要通過閱讀源代碼了解內部原理,只需看一些博客,書籍,比如《Hadoop權威指南》,對於HDFS而言,你應該知道它的基本架構以及各個模塊的功能;對於MapRece而言,你應該知道其具體的工作流程,知道partition,shuffle,sort等工作原理,可以自己在紙上完整個畫完maprece的流程,越詳細越好。
在這個階段,建議你多看一些知名博客,多讀讀《hadoop權威指南》(可選擇性看相關的幾章)。如果你有實際項目驅動,那是再好不過了,理論聯系實際是最好的hadoop學習方法;如果你沒有項目驅動,那建議你不要自己一個人悶頭學,多跟別人交流,多主動給別人講講,最好的學習方式還是「講給別人聽」。
============
第二個階段:從無到入門,開始閱讀hadoop源代碼
這個階段是最困苦和漫長的,尤其對於那些沒有任何分布式經驗的人。 很多人這個階段沒有走完,就放棄了,最後停留在hadoop應用層面。
這個階段,第一件要做的事情是,選擇一個hadoop組件。如果你對分布式存儲感興趣,那麼你可以選擇HDFS,如果你讀分布式計算感興趣,你可以選擇MapRece,如果你對資源管理系統感興趣,你可以選擇YARN。
選擇好系統後,接下來的經歷是最困苦的。當你把hadoop源代碼導入eclipse或intellij idea,沏上一杯茶,開始准備優哉游哉地看hadoop源代碼時,你懵逼了:你展開那數不盡的package和class,覺得無從下手,好不容易找到了入口點,然後你屁顛屁顛地通過eclipse的查找引用功能,順著類的調用關系一層層找下去,最後迷失在了代碼的海洋中,如同你在不盡的壓棧,最後棧溢出了,你忘記在最初的位置。很多人經歷過上面的過程,最後沒有順利逃出來,而放棄。
如果你正在經歷這個過程,我的經驗如下:首先,你要摸清hadoop的代碼模塊,知道client,master,slave各自對應的模塊(hadoop中核心系統都是master/slave架構,非常類似),並在閱讀源代碼過程中,時刻謹記你當前閱讀的代碼屬於哪一個模塊,會在哪個組件中執行;之後你需要摸清各個組件的交互協議,也就是分布式中的RPC,這是hadoop自己實現的,你需要對hadoop RPC的使用方式有所了解,然後看各模塊間的RPC protocol,到此,你把握了系統的骨架,這是接下來閱讀源代碼的基礎;接著,你要選擇一個模塊開始閱讀,我一般會選擇Client,這個模塊相對簡單些,會給自己增加信心,為了在閱讀代碼過程中,不至於迷失自己,建議在紙上畫出類的調用關系,邊看邊畫,我記得我閱讀hadoop源代碼時,花了一疊紙。注意,看源代碼過程中,很容易煩躁不安,建議經常起來走走,不要把自己逼得太緊。
在這個階段,建議大家多看一些源代碼分析博客和書籍,比如《Hadoop技術內幕》系列叢書(軒相關網站:Hadoop技術內幕)就是最好的參考資料。藉助這些博客和書籍,你可以在前人的幫助下,更快地學習hadoop源代碼,節省大量時間,注意,目前博客和書籍很多,建議大家廣泛收集資料,找出最適合自己的參考資料。
這個階段最終達到的目的,是對hadoop源代碼整體架構和局部的很多細節,有了一定的了解。比如你知道MapRece Scheler是怎樣實現的,MapRece shuffle過程中,map端做了哪些事情,rece端做了哪些事情,是如何實現的,等等。這個階段完成後,當你遇到問題或者困惑點時,可以迅速地在Hadoop源代碼中定位相關的類和具體的函數,通過閱讀源代碼解決問題,這時候,hadoop源代碼變成了你解決問題的參考書。
============
第三個階段:根據需求,修改源代碼。
這個階段,是驗證你閱讀源代碼成效的時候。你根據leader給你的需求,修改相關代碼完成功能模塊的開發。在修改源代碼過程中,你發現之前閱讀源代碼仍過於粗糙,這時候你再進一步深入閱讀相關代碼,彌補第二個階段中薄弱的部分。當然,很多人不需要經歷第三個階段,僅僅第二階段就夠了:一來能夠通過閱讀代碼解決自己長久以來的技術困惑,滿足自己的好奇心,二來從根源上解決解決自己遇到的各種問題。 這個階段,沒有太多的參考書籍或者博客,多跟周圍的同事交流,通過代碼review和測試,證明自己的正確性。
============
閱讀hadoop源代碼的目的不一定非是工作的需要,你可以把他看成一種修養,通過閱讀hadoop源代碼,加深自己對分布式系統的理解,培養自己踏實做事的心態。

5. hadoop怎麼修改源碼io的讀寫

HDFS打開一個文件,需要在客戶端調用DistributedFileSystem.open(Path f, int bufferSize),其實現為:
public FSDataInputStream open(Path f, int bufferSize) throws IOException {
return new DFSClient.DFSDataInputStream(
dfs.open(getPathName(f), bufferSize, verifyChecksum, statistics));
}

6. eclipse怎麼修改hadoop源碼eclipse

hadoop安裝目錄下的build.xml文件可以不用修改直接使用嗎?你們一般都是怎麼做的啊?能說的具體點嗎? 查看更多答案>>

7. 如何在eclipse中編輯hadoop2.2.0源代碼

將hadoop2.2.0目錄下的源碼導入Eclipse,但是不能作為一個完整的項目導入,只能將src下的java文件復制到你自己新建的項目的src下,如果修改了之後想要打包,需要把你修改的部分替換原來hadoop目錄下的相應文件,然後執行編譯命令重新編譯打包。好吧,這是很笨的方法。
還有就是可以通過svn下載hadoop2.2.0源碼,地址自己找吧,我也不知道,svn下載的源碼是完整的Eclipse項目。

8. 如何在eclipse中編輯hadoop2.2.0源代碼

7.編譯hadoop2.2源碼
從hadoop官網下載2.2穩定版,

執行以下命令解壓縮jdk
tar -zxvf hadoop-2.2.0-src.tar.gz
會生成一個文件夾 hadoop-2.2.0-src。源代碼中有個bug,這里需要修改一下,編輯目錄/usr/local/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth中的文件pom.xml,執行以下命令
gedit pom.xml
在第55行下增加以下內容
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<scope>test</scope>
</dependency>
保存退出即可。.

閱讀全文

與修改hadoop源碼相關的資料

熱點內容
不能修改的pdf 瀏覽:736
同城公眾源碼 瀏覽:474
一個伺服器2個埠怎麼映射 瀏覽:282
java字元串ascii碼 瀏覽:59
台灣雲伺服器怎麼租伺服器 瀏覽:460
旅遊手機網站源碼 瀏覽:315
android關聯表 瀏覽:929
安卓導航無聲音怎麼維修 瀏覽:320
app怎麼裝視頻 瀏覽:423
安卓系統下的軟體怎麼移到桌面 瀏覽:80
windows拷貝到linux 瀏覽:753
mdr軟體解壓和別人不一樣 瀏覽:886
單片機串列通信有什麼好處 瀏覽:324
游戲開發程序員書籍 瀏覽:848
pdf中圖片修改 瀏覽:275
匯編編譯後 瀏覽:478
php和java整合 瀏覽:833
js中執行php代碼 瀏覽:447
國產單片機廠商 瀏覽:62
蘋果手機怎麼設置不更新app軟體 瀏覽:289