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

閱讀目錄

本文版權歸mephisto和博客園共有,歡迎轉載,但須保留此段聲明,並給出原文連接,謝謝合做。html

文章是哥(mephisto)寫的,SourceLinkjava

 

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

  那麼咱們就有理由用maven來構建咱們的Hadoop工程。github

Maven

一:說明

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

二:介紹

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

  Maven 除了以程序構建能力爲特點以外,還提供高級項目管理工具。因爲 Maven 的缺省構建規則有較高的可重用性,因此經常用兩三行 Maven 構建腳本就能夠構建簡單的項目。因爲 Maven 的面向項目的方法,許多 Apache Jakarta 項目發文時使用 Maven,並且公司項目採用 Maven 的比例在持續增加。eclipse

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

三:特色編程語言

  那麼,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

相關文章
相關標籤/搜索