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 特性處理順序 最后一個定義起決定作用。
${maven.home}/bin/driver.properties ${project.home}/project.properties ${project.home}/build.properties ${user.home}/build.properties 通過 -D 命令行選項定義的系統特性第一個定義最先被處理。
通過 -D 命令行選項定義的系統特性 由 任務裝入的特性構建規則 構建規則更為動態(類似於編程語言);它們是基於 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
系列索引

