詳細講解Hadoop源碼閱讀工程(以hadoop-2.6.0-src.tar.gz和hadoop-2.6.0-cdh5.4.5-src.tar.gz為代表)


  

  不多說,直接上干貨!

 

 

  首先,說的是,本人到現在為止,已經玩過。

                 

 對於,這樣的軟件,博友,可以去看我博客的相關博文。在此,不一一贅述!

 

 

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,是要看自己的需求。

http://mvnrepository.com/ 

 

 

<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) 

 

 

 

 

 

 

 

 

 

 

 

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM