本文版權歸mephisto和博客園共有,歡迎轉載,但須保留此段聲明,並給出原文連接,謝謝合做。html
文章是哥(mephisto)寫的,SourceLinkjava
上一篇,咱們編寫了第一個MapReduce,而且成功的運行了Job,Hadoop1.x是經過ant來管理工程的,後來到了2.x就開始使用maven來管理了。git
那麼咱們就有理由用maven來構建咱們的Hadoop工程。github
一:說明
使用前,有必要簡單的對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 特性處理順序 最後一個定義起決定做用。
${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
本文版權歸mephisto和博客園共有,歡迎轉載,但須保留此段聲明,並給出原文連接,謝謝合做。
文章是哥(mephisto)寫的,SourceLink