Maven構建Hadoop


Maven構建Hadoop工程

閱讀目錄

 

  上一篇,我們編寫了第一個MapReduce,並且成功的運行了Job,Hadoop1.x是通過ant來管理工程的,后來到了2.x就開始使用maven來管理了。

  那么我們就有理由用maven來構建我們的Hadoop工程。

Maven

一:說明

  使用前,有必要簡單的對maven做個簡單的介紹,這樣才比較輕松的熟悉本章節。

二:介紹

  Maven是基於項目對象模型(POM),可以通過一小段描述信息來管理項目的構建,報告和文檔的軟件項目管理工具。

  Maven 除了以程序構建能力為特色之外,還提供高級項目管理工具。由於 Maven 的缺省構建規則有較高的可重用性,所以常常用兩三行 Maven 構建腳本就可以構建簡單的項目。由於 Maven 的面向項目的方法,許多 Apache Jakarta 項目發文時使用 Maven,而且公司項目采用 Maven 的比例在持續增長。

  Maven這個單詞來自於意第緒語,意為知識的積累,最早在Jakata Turbine項目中它開始被用來試圖簡化構建過程。當時有很多項目,它們的Ant build文件僅有細微的差別,而JAR文件都由CVS來維護。於是Maven創始者開始了Maven這個項目,該項目的清晰定義包括,一種很方便的發布項目信息的方式,以及一種在多個項目中共享JAR的方式。

三:特點

  那么,Maven 和 Ant 有什么不同呢?在回答這個問題以前,首先要強調一點:Maven 和 Ant 針對構建問題的兩個不同方面。Ant 為 Java 技術開發項目提供跨平台構建任務。Maven 本身描述項目的高級方面,它從 Ant 借用了絕大多數構建任務。因此,由於 Maven 和 Ant代表兩個差異很大的工具,所以接下來只說明這兩個工具的等同組件之間的區別,如表 1 所示


  
Maven Ant
標准構建文件 project.xml 和 maven.xml
  
build.xml
特性處理順序
  1. ${maven.home}/bin/driver.properties
  2. ${project.home}/project.properties
  3. ${project.home}/build.properties
  4. ${user.home}/build.properties
  5. 通過 -D 命令行選項定義的系統特性
最后一個定義起決定作用。
  1. 通過 -D 命令行選項定義的系統特性
  2. 由 任務裝入的特性
第一個定義最先被處理。
構建規則 構建規則更為動態(類似於編程語言);它們是基於 Jelly 的可執行 XML。 構建規則或多或少是靜態的,除非使用<script>任務
擴展語言
  
插件是用 Jelly(XML)編寫的。 插件是用 Java 語言編寫的。
構建規則可擴展性 通過定義 <preGoal> 和 <postGoal> 使構建 goal 可擴展。 構建規則不易擴展;可通過使用 <script> 任務模擬 <preGoal> 和 <postGoal> 所起的作用。
  Maven是一個 項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標准集合,一個 項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中 插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明確定義的項目對象模型來描述你的項目,然后Maven可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。
Maven 有一個生命周期,當你運行 mvn install 的時候被調用。這條命令告訴 Maven 執行一系列的有序的步驟,直到到達你指定的生命周期。遍歷生命周期旅途中的一個影響就是,Maven 運行了許多默認的 插件目標,這些目標完成了像編譯和創建一個 JAR 文件這樣的工作。
  此外,Maven能夠很方便的幫你管理項目報告,生成站點,管理JAR文件,等等。

安裝

一:下載Maven

  下載maven,官網地址:http://maven.apache.org/download.cgi

二:配置環境變量

  解壓壓縮包。將解壓后的目錄配置成環境變量

  新建環境變量M2_HOME

  在path中加入bin路徑:%M2_HOME%\bin;

   測試是否成功,打開命令行,輸入mvn -v,能出現信息就說明ok。

三:安裝m2eclipse插件

  打開eclipse->Help->Install new software

  新增一個m2e,下面填寫http://download.eclipse.org/technology/m2e/releases,下一步

  勾選了,點Finish.我們就可以看到漫長的進度條等待了。

構建

一:新建工程

  打開Eclipse ->File->New Project->Maven Project

  這里我們就偷懶,建立一個simple項目。

  輸入Group 和Artifact

  點擊Finish

二:官網依賴庫

  我們可以直接去官網查找我們需要的依賴包的配置pom,然后加到項目中。

  官網地址:http://mvnrepository.com/

三:Hadoop依賴

  我們需要哪些Hadoop的jar包?

  做一個簡單的工程,可能需要以下幾個

hadoop-common
hadoop-hdfs
hadoop-mapreduce-client-core
hadoop-mapreduce-client-jobclient
hadoop-mapreduce-client-common

四:配置

  打開工程的pom.xml文件。根據上面我們需要的包去官網上找,找對應版本的,這么我們使用的最新的2.7.1版本。

  修改pom.xml如下:

復制代碼
<dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-core</artifactId>
            <version>2.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
            <version>2.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-common</artifactId>
            <version>2.7.1</version>
        </dependency>
        <dependency>
            <groupId>jdk.tools</groupId>
            <artifactId>jdk.tools</artifactId>
            <version>1.7</version>
            <scope>system</scope>
            <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
        </dependency>
    </dependencies>
復制代碼

五:構建完畢

  點擊保存,就會發現maven在幫我們吧所需要的環境開始構建了。

  等待構建完畢。

  

六:新建WordCountEx類

  在src/main/java下新建WordCountEx類

   將我們上篇編寫的WordCountEx類的內容替換進來,記得package的名字別換了,測試的時候方便測試。

 

七:導出Jar包

  點擊工程,右鍵->Export,如下:

八:執行

  將導出的jar包放到H31的/var/tmp下

  執行命令,發現很順利的就成功了。

yarn jar first.jar first.WordCountEx /tmp/input/words_01.txt /tmp/output/1007_05

 

九:結果

  我們看下輸出的結果,和上一篇我們的輸出結果是一致的。

 

--------------------------------------------------------------------

  到此,本章節的內容講述完畢。

示例下載

 Github:https://github.com/sinodzh/HadoopExample/tree/master/2015/first

系列索引

  【源】從零自學Hadoop系列索引

 

 

 

博文作者:mephisto


免責聲明!

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



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