不多說,直接上干貨!
首先,說的是,本人到現在為止,已經玩過。
對於,這樣的軟件,博友,可以去看我博客的相關博文。在此,不一一贅述!
Eclipse *版本
Eclipse *下載
Jdk 1.7*安裝並配置
Jdk 1.8*安裝並配置
JDK的windows和Linux版本之下載
Eclipse下新建Maven項目、自動打依賴jar包
如何在Maven官網下載歷史版本
setting.xml配置文件
【轉】maven核心,pom.xml詳解
本博文呢,Eclipse下詳細講解hadoop-2.6.0-src.tar.gz源碼!作為Hadoop-2.*的代表,當然,9月初期,已經發布了Hadoop-3.*了。
本博文呢
需要具備一定的知識基礎。包括懂Hadoop和源碼編譯、Eclipse和Jdk的版本、下載、安裝、Maven創建項目和自動打依賴jar包等。
直接進入!
關於源碼編譯的過程
Hadoop源碼的編譯過程詳細解讀(各版本)
Spark源碼的編譯過程詳細解讀(各版本)
關於創建源碼閱讀工程的過程
有很多種方式,這里我暫時給博友兩種。
1、使用Maven導入和后續attach source的方法
2、構建Maven工程
3、構建Java工程,使用源代碼壓縮包導入Eclipse工程的方法
總的來說,目前存在兩種Hadoop源代碼閱讀環境搭建方法,分別是構建Maven工程和構建Java工程。兩種方法各有利弊:前者可通過網絡自動下載依賴的第三方庫,但源代碼會被分散到多個工程中進而帶來閱讀上的不便;后者可將所有源代碼組織在一個工程中,但需要自己添加依賴的第三方庫。
當然,上述指的是Apache Hadoop版本。
CDH版本將源代碼和JAR包放到了一起,因此,如果使用CDH版本,則直接按照上述方法將源代碼導入Eclipse工程即可。
這里呢,我細說三種方法。
Apache Hadoop版本
1、使用Maven導入和后續attach source的方法
eclipse下如何打開和關閉一個項目?
打開項目:在關閉的項目上右擊,選擇“open project”,即可打開項目。
關閉項目:在打開的項目上右擊,選擇“close project”,即可關閉項目。
已經關閉
用Maven創建Hadoop260Src
或者
Group Id:com.zhouls.hadoop
Artifact Id:Hadoop260Src
默認生成的pom.xml配置文件的,內容是
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zhouls.hadoop</groupId> <artifactId>Hadoop260Src</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>Hadoop260Src</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
這一步,最為關鍵,具體怎么修改pom.xml,是要看自己的需求。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zhouls.hadoop</groupId> <artifactId>Hadoop260Src</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>Hadoop260Src</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <junit.version>4.10</junit.version> <hadoop.version>2.6.0</hadoop.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.6.0</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>2.6.0</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>2.6.0</version> <exclusions> <exclusion> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>${hadoop.version}</version> </dependency> </dependencies> <build> <sourceDirectory>src/main/java</sourceDirectory> <testSourceDirectory>src/main/test</testSourceDirectory> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass></mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <executable>java</executable> <includeProjectDependencies>true</includeProjectDependencies> <includePluginDependencies>false</includePluginDependencies> <classpathScope>compile</classpathScope> <mainClass>com.zhouls.hadoop.Hadoop260Src</mainClass> </configuration> </plugin> </plugins> </build> </project>
成功!
目前,在pom.xml里只加入了部分,如mapreduce和hdfs,隨着以后,逐漸,可以將yarn,hive,hbase,pig,zookeeper...等加入。
至此,成功!
具體,后續,請見我的博客。地址。。。。
2、構建Maven工程
(1)構建Maven工程
通過Maven工程搭建Hadoop源代碼閱讀環境的步驟如下:
步驟1 解壓縮Hadoop源代碼。
將下載到的Hadoop源代碼壓縮包解壓到工作目錄下,比如hadoop-2.6.0-src.tar.gz
解壓到當前目錄下,得到
步驟2 導入Maven工程。
在Eclipse中,依次選擇“File”→“Import”→“Maven”→“Existing Maven Project”,在彈出的對話框中的“Root Directory”后面,選擇Java源代碼所在的目錄。
單擊“Next”按鈕,在彈出的對話框中選擇“Resolve All Later”,並單擊“Finish”按鈕完成Maven項目導入。之后,Eclipse會自動通過網絡從Maven庫中下載依賴的第三方庫(JAR包等)。注意,你所使用的電腦必須能夠聯網。
將Hadoop 2.0源代碼導入Maven項目后,會生成50個左右的工程,這些都是通過Maven構建出來的,每個工程是一個代碼模塊,且彼此相對獨立,可以單獨編譯。你可以在某個工程下的“src/main/java”目錄下查看對應的源代碼。
成功!大功告成!
每個工程是一個代碼模塊,且彼此相對獨立,可以單獨編譯。你可以在某個工程下的“src/main/java”目錄下查看對應的源代碼。
注意: 中間,也許需要一段時間,因為是Maven嘛,聯網下載相關,正常!
3、構建Java工程,使用源代碼壓縮包導入Eclipse工程的方法
下載,太簡單了,不多贅述!
解壓,
新建Java工程,打開Eclipse
File -> New -> Java Project
並在彈出的對話框中取消選中“Use default location”前的勾號,然后選擇剛的hadoop-2.6.0-src的安裝目錄
點擊Next,最好是點擊Finish。
可以一一看看
點擊Finish
至此,大功告成!
拿出里面的例子,來看看
ok!
但是呢?
需要注意的是,通過以上方法導入Hadoop 2.*源代碼后,很多類或者方法找不到對應的JAR包,為了解決這個問題,你需要將第三方JAR包導入工程中,如下所示,
方法如下:解壓存放JAR包的壓縮包,然后右擊Project名稱,在彈出的快捷菜單中選擇“Properties”命令,將會彈出一個界面,然后在該界面中依次選擇“Java Build Path”→ “Libraries”→“Add External JARs...”,將解壓目錄中share/hadoop目錄下各個子目錄中lib文件夾下的JAR包導入工程。
share/hadoop目錄下各個子目錄中lib文件夾,分別如下
一一導入!!!(細心)
具體做法,如下:
右擊Project名稱,即,hadoop-2.6.0-src,在彈出的快捷菜單中選擇“Properties”命令
將會彈出一個界面,然后在該界面中依次選擇“Java Build Path”→ “Libraries”→“Add External JARs...”
1、D:\SoftWare\hadoop-2.6.0\share\hadoop\common\lib
2、D:\SoftWare\hadoop-2.6.0\share\hadoop\hdfs\lib
3、D:\SoftWare\hadoop-2.6.0\share\hadoop\httpfs\tomcat\lib
4、D:\SoftWare\hadoop-2.6.0\share\hadoop\kms\tomcat\lib
5、D:\SoftWare\hadoop-2.6.0\share\hadoop\mapreduce\lib
6、D:\SoftWare\hadoop-2.6.0\share\hadoop\tools\lib
7、D:\SoftWare\hadoop-2.6.0\share\hadoop\yarn\lib
得到,之后,可以看出,錯誤大大減半。
然后,手動再去修改,即可!
其實這個錯誤,也不是錯誤。
最后成功!
CDH版本
這里,我就只已構建Java工程贅述下,其他的幾種方法,同理,很簡單的!
關於下載:
http://archive-primary.cloudera.com/cdh5/cdh/5/
解壓
這里,我為了方便,自命名。
在Eclipse里直接關聯源碼
ok,至此結束!
歡迎,喜歡專研hadoop/spark源碼的博友們,跟我一起交流,互相學習!
感謝如下的博主:
http://blog.csdn.net/cnhk1225/article/details/50482431
http://blog.csdn.net/yhao2014/article/details/43017191
同時,大家可以關注我的個人博客:
http://www.cnblogs.com/zlslch/ 和 http://www.cnblogs.com/lchzls/ http://www.cnblogs.com/sunnyDream/
詳情請見:http://www.cnblogs.com/zlslch/p/7473861.html
人生苦短,我願分享。本公眾號將秉持活到老學到老學習無休止的交流分享開源精神,匯聚於互聯網和個人學習工作的精華干貨知識,一切來於互聯網,反饋回互聯網。
目前研究領域:大數據、機器學習、深度學習、人工智能、數據挖掘、數據分析。 語言涉及:Java、Scala、Python、Shell、Linux等 。同時還涉及平常所使用的手機、電腦和互聯網上的使用技巧、問題和實用軟件。 只要你一直關注和呆在群里,每天必須有收獲
對應本平台的討論和答疑QQ群:大數據和人工智能躺過的坑(總群)(161156071)