如何查看hadoop源碼
㈠ 如何使用Maven構建《hadoop權威指南3》隨書的源碼包
《hadoop:the definitive guide 3th》中的例子默認提供了一種編譯和構建jar包方法——maven,如果沒有maven你會發現編譯測試隨書的源碼會非常的麻煩(至少在命令行下),當然你也可以使用eclipse導入隨書的源碼再自己一個個的添加依賴性jar包(恐怕也不太容易)。不過還好有非常好的開源的軟體項目管理工具來幫助我們做這些無關於程序本身設計與架構的瑣碎的工作,那就是maven!
如果你對maven還不太了解,可以參看這里。
《hadoop:the definitive guide 3th》的源碼包可以從github中下載到,如下圖所示:
下面我們就可以切換到本書的源文件包的根目錄下使用maven來構建本書的jar包了:
% mvn package -DskipTests -Dhadoop.version=1.0.4
執行過這條命令後就是很長時間的等待,maven會到他的中央倉庫和apache的倉庫中下載所需要的jar包和pom.xml文件(這個過程可能要持續大約一個小時,要確保你的電腦已經連上網路,下載完成後在~/.m2/repository文件夾中——也即本地倉庫——可以看到已經下載下來的jar包和pom文件),然後再逐個構建根目錄下pom.xml中配置的moles,等所有的工作做完就可以看到已經打包的各個jar包,從而可以很方便的在命令行使用hadoop命令測試書中的代碼了。
㈡ window下怎麼編譯hadoop的源碼
a) 進入windows命令行模式,進入到D:\soft\hadoop-2.6.4-src\hadoop-maven-plugins目錄,執行"mvn install"命令,如果命令行界面提示:build success"時表示成功:
b) 進入到hadoop-2.5.2-src 目錄,執行"mvn eclipse:eclipse -DskipTests"命令,如果出現"BUILD SUCCESS"說明hadoop源碼編譯成功。
c) 打開eclipse開發工具,將D:\soft\hadoop-2.6.4-src導入到workspace中,就可以查看源碼。
㈢ 在Ubuntu中,用mvn打包hadoop源代碼是報錯,咋回事
將hadoop源碼解壓到一個目錄,注意目錄層次不要太深,否則可能無法解壓。
進入hadoop-maven-plugins文件夾,執行 mvn install
返回源碼根目錄,執行 mvn eclipse:eclipse –DskipTests
eclipse在任意目錄創建新的WorkSpace
eclipse設置Maven:window->preference->maven->{Installations...;user Settings:maven\conf\settings.xml}
eclipse:File->inport->Existing Projects into WorkSpace->Hadoop源碼根目錄
㈣ Hadoop 請教學習順序
雖然從事Hadoop方面工作,但是不是高手,畢竟只有一年經歷而已。
分享下本人的學習經歷吧。
了解Hadoop運行機制,可以學習Hadoop權威指南或者Hadoop實戰;
了解Hadoop運行流程,看懂HADOOP_HOME/bin/下面主要執行腳本。
查看core-default.xml/hdfs-default.xml/mapred-default.xml等默認配置
文件,及core-site.xml/hdfs-site.xml/mapred-site.xml等相關文件,學會
如何進行參數優化,以及掌握如何配置讀取壓縮文件,默認的gzip,及
自定義的lzo,學會自定義Combiner/Patitioner等,掌握各種輸入輸出
格式的區別及應用場景,學會自定義輸入輸出格式,其次學習MapRece演算法,
比如In-Map-Combing,相對頻度計算,Pairs演算法,Strips演算法等。掌握好
maprece編程。
在這其中,需要好好閱讀HADOOP_HOME/src/目錄下的Hadoop源碼,
這個就是開源最大的好處。說的比較亂,但是就湊合著借鑒下吧
㈤ hadoop中命令經常含有-fs,-dfs,fs和dfs有什麼區別作用是什麼
You can see definitions of the two commands (hadoop fs & hadoop dfs) in
可以看一下hadoop的源代碼
$HADOOP_HOME/bin/hadoop
...elif [ "$COMMAND" = "datanode" ] ; then CLASS='org.apache.hadoop.hdfs.server.datanode.DataNode' HADOOP_OPTS="$HADOOP_OPTS $HADOOP_DATANODE_OPTS"elif [ "$COMMAND" = "fs" ] ; then CLASS=org.apache.hadoop.fs.FsShell HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"elif [ "$COMMAND" = "dfs" ] ; then CLASS=org.apache.hadoop.fs.FsShell HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"elif [ "$COMMAND" = "dfsadmin" ] ; then CLASS=org.apache.hadoop.hdfs.tools.DFSAdmin HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"...
So, they are exactly the same.
所以,發現兩者是完全一樣的功能。
謝謝