從零自學Hadoop(09):使用Maven構建Hadoop工程

sinodzh發表於2015-10-08

閱讀目錄

本文版權歸mephisto和部落格園共有,歡迎轉載,但須保留此段宣告,並給出原文連結,謝謝合作。

文章是哥(mephisto)寫的,SourceLink

 

  上一篇,我們編寫了第一個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和部落格園共有,歡迎轉載,但須保留此段宣告,並給出原文連結,謝謝合作。

文章是哥(mephisto)寫的,SourceLink

 

相關文章