重新編譯hadoop
A. hadoop 重新編譯,提示如下錯誤,怎麼個意思了
第一次編輯錯誤提示
主要是增加了在maven目錄下,conf/settings.xml
<mirror>
<id>nexus-osc</id>
<mirrorOf>*</mirrorOf>
<name>Nexusosc</name>
<url>http://maven.oschina.net/content/groups/public/</url>
</mirror>
<profile>
<id>jdk-1.7</id>
<activation>
<jdk>1.7</jdk>
</activation>
<repositories>
<repository>
<id>nexus</id>
<name>local private nexus</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>local private nexus</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Apache Hadoop Main ................................. FAILURE [06:34 min]
[INFO] Apache Hadoop Project POM .......................... SKIPPED
[INFO] Apache Hadoop Annotations .......................... SKIPPED
[INFO] Apache Hadoop Assemblies ........................... SKIPPED
[INFO] Apache Hadoop Project Dist POM ..................... SKIPPED
[INFO] Apache Hadoop Maven Plugins ........................ SKIPPED
[INFO] Apache Hadoop MiniKDC .............................. SKIPPED
[INFO] Apache Hadoop Auth ................................. SKIPPED
[INFO] Apache Hadoop Auth Examples ........................ SKIPPED
[INFO] Apache Hadoop Common ............................... SKIPPED
[INFO] Apache Hadoop NFS .................................. SKIPPED
[INFO] Apache Hadoop Common Project ....................... SKIPPED
[INFO] Apache Hadoop HDFS ................................. SKIPPED
[INFO] Apache Hadoop HttpFS ............................... SKIPPED
[INFO] Apache Hadoop HDFS BookKeeper Journal .............. SKIPPED
[INFO] Apache Hadoop HDFS-NFS ............................. SKIPPED
[INFO] Apache Hadoop HDFS Project ......................... SKIPPED
[INFO] hadoop-yarn ........................................ SKIPPED
[INFO] hadoop-yarn-api .................................... SKIPPED
[INFO] hadoop-yarn-common ................................. SKIPPED
[INFO] hadoop-yarn-server ................................. SKIPPED
[INFO] hadoop-yarn-server-common .......................... SKIPPED
[INFO] hadoop-yarn-server-nodemanager ..................... SKIPPED
[INFO] hadoop-yarn-server-web-proxy ....................... SKIPPED
[INFO] hadoop-yarn-server-applicationhistoryservice ....... SKIPPED
[INFO] hadoop-yarn-server-resourcemanager ................. SKIPPED
[INFO] hadoop-yarn-server-tests ........................... SKIPPED
[INFO] hadoop-yarn-client ................................. SKIPPED
[INFO] hadoop-yarn-applications ........................... SKIPPED
[INFO] hadoop-yarn-applications-distributedshell .......... SKIPPED
[INFO] hadoop-yarn-applications-unmanaged-am-launcher ..... SKIPPED
[INFO] hadoop-yarn-site ................................... SKIPPED
[INFO] hadoop-yarn-project ................................ SKIPPED
[INFO] hadoop-maprece-client ............................ SKIPPED
[INFO] hadoop-maprece-client-core ....................... SKIPPED
[INFO] hadoop-maprece-client-common ..................... SKIPPED
[INFO] hadoop-maprece-client-shuffle .................... SKIPPED
[INFO] hadoop-maprece-client-app ........................ SKIPPED
[INFO] hadoop-maprece-client-hs ......................... SKIPPED
[INFO] hadoop-maprece-client-jobclient .................. SKIPPED
[INFO] hadoop-maprece-client-hs-plugins ................. SKIPPED
[INFO] Apache Hadoop MapRece Examples ................... SKIPPED
[INFO] hadoop-maprece ................................... SKIPPED
[INFO] Apache Hadoop MapRece Streaming .................. SKIPPED
[INFO] Apache Hadoop Distributed Copy ..................... SKIPPED
[INFO] Apache Hadoop Archives ............................. SKIPPED
[INFO] Apache Hadoop Rumen ................................ SKIPPED
[INFO] Apache Hadoop Gridmix .............................. SKIPPED
[INFO] Apache Hadoop Data Join ............................ SKIPPED
[INFO] Apache Hadoop Extras ............................... SKIPPED
[INFO] Apache Hadoop Pipes ................................ SKIPPED
[INFO] Apache Hadoop OpenStack support .................... SKIPPED
[INFO] Apache Hadoop Client ............................... SKIPPED
[INFO] Apache Hadoop Mini-Cluster ......................... SKIPPED
[INFO] Apache Hadoop Scheler Load Simulator ............. SKIPPED
[INFO] Apache Hadoop Tools Dist ........................... SKIPPED
[INFO] Apache Hadoop Tools ................................ SKIPPED
[INFO] Apache Hadoop Distribution ......................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10:10 min
[INFO] Finished at: 2015-01-12T00:52:27-08:00
[INFO] Final Memory: 29M/70M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.3:attach-descriptor (attach-descriptor) on project hadoop-main: Execution attach-descriptor of goal org.apache.maven.plugins:maven-site-plugin:3.3:attach-descriptor failed: Plugin org.apache.maven.plugins:maven-site-plugin:3.3 or one of its dependencies could not be resolved: Failed to collect dependencies at org.apache.maven.plugins:maven-site-plugin:jar:3.3 -> org.apache.maven.reporting:maven-reporting-exec:jar:1.1 -> org.apache.maven.shared:maven-shared-utils:jar:0.3: Failed to read artifact descriptor for org.apache.maven.shared:maven-shared-utils:jar:0.3: Could not transfer artifact org.apache.maven.shared:maven-shared-utils:pom:0.3 from/to nexus-osc (http://maven.oschina.net/content/groups/public/): Failed to transfer file:http://maven.oschina.net/content/groups/public/org/apache/maven/shared/maven-shared-utils/0.3/maven-shared-utils-0.3.pom. Return code is: 502, ReasonPhrase: Bad Gateway. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException
[hadoop@localhost hadoop-2.5.0-src]$
B. 如何編譯Apache Hadoop2.2.0源代碼
下載hadoop-2.2.0-src.tar.gz 下載。
執行以下命令解壓縮jdk
tar -zxvf hadoop-2.2.0-src.tar.gz
會生成一個文件夾 hadoop-2.2.0-src。源代碼中有個bug,這里需要修改一下,編輯目錄/usr/local/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth中的文件pom.xml,執行以下命令
gedit pom.xml
在第55行下增加以下內容
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<scope>test</scope>
</dependency>
保存退出即可。
上述bug詳見https://issues.apache.org/jira/browse/HADOOP-10110,在hadoop3中修復了,離我們太遙遠了。
好了,現在進入到目錄/usr/local/hadoop-2.2.0-src中,執行命令
mvn package -DskipTests -Pdist,native,docs
如果沒有執行第4步,把上面命令中的docs去掉即可,就不必生成文檔了。
該命令會從外網下載依賴的jar,編譯hadoop源碼,需要花費很長時間,你可以吃飯了。
在等待n久之後,可以看到如下的結果:
[INFO] Apache Hadoop Main ................................ SUCCESS [6.936s]
[INFO] Apache Hadoop Project POM ......................... SUCCESS [4.928s]
[INFO] Apache Hadoop Annotations ......................... SUCCESS [9.399s]
[INFO] Apache Hadoop Assemblies .......................... SUCCESS [0.871s]
[INFO] Apache Hadoop Project Dist POM .................... SUCCESS [7.981s]
[INFO] Apache Hadoop Maven Plugins ....................... SUCCESS [8.965s]
[INFO] Apache Hadoop Auth ................................ SUCCESS [39.748s]
[INFO] Apache Hadoop Auth Examples ....................... SUCCESS [11.081s]
[INFO] Apache Hadoop Common .............................. SUCCESS [10:41.466s]
[INFO] Apache Hadoop NFS ................................. SUCCESS [26.346s]
[INFO] Apache Hadoop Common Project ...................... SUCCESS [0.061s]
[INFO] Apache Hadoop HDFS ................................ SUCCESS [12:49.368s]
[INFO] Apache Hadoop HttpFS .............................. SUCCESS [41.896s]
[INFO] Apache Hadoop HDFS BookKeeper Journal ............. SUCCESS [41.043s]
[INFO] Apache Hadoop HDFS-NFS ............................ SUCCESS [9.650s]
[INFO] Apache Hadoop HDFS Project ........................ SUCCESS [0.051s]
[INFO] hadoop-yarn ....................................... SUCCESS [1:22.693s]
[INFO] hadoop-yarn-api ................................... SUCCESS [1:20.262s]
[INFO] hadoop-yarn-common ................................ SUCCESS [1:30.530s]
[INFO] hadoop-yarn-server ................................ SUCCESS [0.177s]
[INFO] hadoop-yarn-server-common ......................... SUCCESS [15.781s]
[INFO] hadoop-yarn-server-nodemanager .................... SUCCESS [40.800s]
[INFO] hadoop-yarn-server-web-proxy ...................... SUCCESS [6.099s]
[INFO] hadoop-yarn-server-resourcemanager ................ SUCCESS [37.639s]
[INFO] hadoop-yarn-server-tests .......................... SUCCESS [4.516s]
[INFO] hadoop-yarn-client ................................ SUCCESS [25.594s]
[INFO] hadoop-yarn-applications .......................... SUCCESS [0.286s]
[INFO] hadoop-yarn-applications-distributedshell ......... SUCCESS [10.143s]
[INFO] hadoop-maprece-client ........................... SUCCESS [0.119s]
[INFO] hadoop-maprece-client-core ...................... SUCCESS [55.812s]
[INFO] hadoop-yarn-applications-unmanaged-am-launcher .... SUCCESS [8.749s]
[INFO] hadoop-yarn-site .................................. SUCCESS [0.524s]
[INFO] hadoop-yarn-project ............................... SUCCESS [16.641s]
[INFO] hadoop-maprece-client-common .................... SUCCESS [40.796s]
[INFO] hadoop-maprece-client-shuffle ................... SUCCESS [7.628s]
[INFO] hadoop-maprece-client-app ....................... SUCCESS [24.066s]
[INFO] hadoop-maprece-client-hs ........................ SUCCESS [13.243s]
[INFO] hadoop-maprece-client-jobclient ................. SUCCESS [16.670s]
[INFO] hadoop-maprece-client-hs-plugins ................ SUCCESS [3.787s]
[INFO] Apache Hadoop MapRece Examples .................. SUCCESS [17.012s]
[INFO] hadoop-maprece .................................. SUCCESS [6.459s]
[INFO] Apache Hadoop MapRece Streaming ................. SUCCESS [12.149s]
[INFO] Apache Hadoop Distributed Copy .................... SUCCESS [15.968s]
[INFO] Apache Hadoop Archives ............................ SUCCESS [5.851s]
[INFO] Apache Hadoop Rumen ............................... SUCCESS [18.364s]
[INFO] Apache Hadoop Gridmix ............................. SUCCESS [14.943s]
[INFO] Apache Hadoop Data Join ........................... SUCCESS [9.648s]
[INFO] Apache Hadoop Extras .............................. SUCCESS [5.763s]
[INFO] Apache Hadoop Pipes ............................... SUCCESS [16.289s]
[INFO] Apache Hadoop Tools Dist .......................... SUCCESS [3.261s]
[INFO] Apache Hadoop Tools ............................... SUCCESS [0.043s]
[INFO] Apache Hadoop Distribution ........................ SUCCESS [56.188s]
[INFO] Apache Hadoop Client .............................. SUCCESS [10.910s]
[INFO] Apache Hadoop Mini-Cluster ........................ SUCCESS [0.321s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 40:00.444s
[INFO] Finished at: Thu Dec 26 12:42:24 CST 2013
[INFO] Final Memory: 109M/362M
[INFO] ------------------------------------------------------------------------
C. 怎麼自己動手編譯hadoop的eclipse插件
1.在linux環境中偽分布式部署hadoop(SSH免登陸),運行WordCount實例成功。 http://www.cnblogs.com/PurpleDream/p/4009070.html
2.自己打包hadoop在eclipse中的插件。 http://www.cnblogs.com/PurpleDream/p/4014751.html
3.在eclipse中訪問hadoop運行WordCount成功。
所以我下邊會分三次記錄下我的過程,為自己以後查閱方便,要是能幫助到其他人,自然是更好了!
===============================================================長長的分割線====================================================================
正文:
如果你想在eclipse中安裝hadoop的插件,一個很重要的問題就是hadoop的版本與eclipse版本的匹配問題,如果不匹配,可能會導致很多問題。
綜上,我在完成了在Linux的CentOS系統中安裝hadoop並簡單運行WordCount之後(具體參看本文前言中的博客鏈接),將學習的重點放到了hadoop的eclipse插件上。其實網上也有部分文章在介紹如何編寫插件,但是由於我的eclispe版本是Juno,而之前在CentOS安裝的是hadoop-1.0.1,所以沒有找到完全匹配的成功案例。所以最終決定自己也動手變異一個自己的hadoop插件。
在有了這個想法之後,一開始會覺得特別困難,但是在真正去做之後,會發現很多問題其實還是可以解決的,只要你懂得如果使用網路和谷歌,多參考一下別人的文章,汲取精華,最終一定會成功的。
第一步,確定大致流程:
1.首先我需要ant編譯,然後就是hadoop-1.0.1.tar.gz這個安裝包,還有就是eclipse。
2.針對我自己的環境,電腦是Win7,eclispe是Juno,下載了hadoop-1.0.1.tar.gz,就差ant之前沒有安裝。
第二步,安裝ant:
1.我參考的是這篇文章http://blog.csdn.net/yang382197207/article/details/10185251,我當時下載的是apache-ant-1.9.4,其他的步驟按照這篇文章介紹的配置就會成功。
第三步,在正式建立項目之前,我在介紹下我的環境: OS: windows 7, Eclipse: Juno, JDK: 1.6.0_43, Hadoop: 1.0.1
1.首先在Eclipse中新建一個java項目,名字叫hadoop-1.0.1-eclipse-plugin,其實這個名字你可以隨意的。
2.解壓hadoop-1.0.1.tar.gz,在解壓後的目錄中(我的是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1),依次將下面的文件放到項目中:
(1).將\hadoop-1.0.1\src\contrib\eclipse-plugin裡面的所有文件以及\hadoop-1.0.1\src\contrib\build-contrib.xml拖拽到項目中
(2).將根目錄\hadoop-1.0.1里的所有.jar文件拖拽到eclipse項目中bin目錄下。
3.打開項目中的build-contrib.xml,做如下的配置:
(1).找到<property name="hadoop.root" location="hadoop-1.0.1解壓縮後的目錄"/>
(2).找到<property name="eclipse.home" location="自己的eclipse的目錄"/>
(3).找到<property name="version" value="hadoop的版本號"/>
可以參考我的配置,如圖:
view sourceprint?
1.
<property name="name" value="${ant.project.name}"/>
2.
<property name="root" value="${basedir}"/>
3.
<property name="hadoop.root" location="D:/SettingUp/ITSettingUp/Hadoop/hadoop-1.0/hadoop-1.0.1"/>
4.
<property name="eclipse.home" location="D:/HaveSetted/ITHaveSetted/Eclipse"/>
5.
<property name="version" value="1.0.1"/>
4.打開項目中的build.xml,做如下的配置:
(1).將文件開頭的 <import file="../build-contrib.xml"/> 修改為 <import file="build-contrib.xml"/>
(2).在<javac...>里如下圖加入includeantruntime="on",效果如下:
view sourceprint?
01.
<target name="compile" depends="init, ivy-retrieve-common" unless="skip.contrib">
02.
<echo message="contrib: ${name}"/>
03.
<javac
04.
encoding="${build.encoding}"
05.
srcdir="${src.dir}"
06.
includes="**/*.java"
07.
destdir="${build.classes}"
08.
debug="${javac.debug}"
09.
deprecation="${javac.deprecation}"
10.
includeantruntime="on">
11.
<classpath refid="classpath"/>
12.
</javac>
13.
</target>
(3).在<path id="classpath">中添加:<path refid="hadoop-jars"/>,效果如下:
view sourceprint?
1.
<!-- Override classpath to include Eclipse SDK jars -->
2.
<path id="classpath">
3.
<pathelement location="${build.classes}"/>
4.
<pathelement location="${hadoop.root}/build/classes"/>
5.
<path refid="eclipse-sdk-jars"/>
6.
<path refid="hadoop-jars"/>
7.
</path>
(4).在<target name="jar" depends="compile" unless="skip.contrib">這個標簽里,在< file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib" verbose="true"/>這個配置的下面添加如下幾個jar包的配置:
view sourceprint?
1.
< file="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib" verbose="true"/>
2.
< file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
3.
< file="${hadoop.root}/lib/commons-lang-2.4.jar" todir="${build.dir}/lib" verbose="true"/>
4.
< file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
5.
< file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
最終效果如圖:
view sourceprint?
01.
<!-- Override jar target to specify manifest -->
02.
<target name="jar" depends="compile" unless="skip.contrib">
03.
<mkdir dir="${build.dir}/lib"/>
04.
< file="${hadoop.root}/build/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core-1.0.1.jar" verbose="true"/>
05.
< file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib" verbose="true"/>
06.
07.
< file="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib" verbose="true"/>
08.
< file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
09.
< file="${hadoop.root}/lib/commons-lang-2.4.jar" todir="${build.dir}/lib" verbose="true"/>
10.
< file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
11.
< file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
12.
13.
<jar
14.
jarfile="${build.dir}/hadoop-${name}-${version}.jar"
15.
manifest="${root}/META-INF/MANIFEST.MF">
16.
<fileset dir="${build.dir}" includes="classes/ lib/"/>
17.
<fileset dir="${root}" includes="resources/ plugin.xml"/>
18.
</jar>
19.
</target>
(5).在文件末尾</project>標簽之前添加配置:
view sourceprint?
1.
<path id="hadoop-jars">
2.
<fileset dir="${hadoop.root}/">
3.
<include name="hadoop-*.jar"/>
4.
</fileset>
5.
</path>
5.打開hadoop-1.0.1的解壓縮目錄(我的是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1),復制兩個jar包到對應的目錄文件夾,以我的文件目錄結構舉例如下:
(1).將D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\hadoop-core-1.0.1.jar 復制到D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\build\這個文件夾中
(2).將D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\lib\commons-cli-1.2.jar復制到D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\build\ivy\lib\Hadoop\common這個文件夾中
6.再回到eclipse,打開項目中的\META-INF\MANIFEST.MF文件,做如下的添加:
view sourceprint?
1.
Bundle-ClassPath: classes/,
2.
lib/hadoop-core-1.0.1.jar,
3.
lib/commons-cli-1.2.jar,
4.
lib/commons-configuration-1.6.jar,
5.
lib/commons-httpclient-3.0.1.jar,
6.
lib/commons-lang-2.4.jar,
7.
lib/jackson-core-asl-1.8.8.jar,
8.
lib/jackson-mapper-asl-1.8.8.ja,
7.經過上邊的配置,基本已經完成,我們可以編譯項目了。右擊build.xml文件選擇 Run As Ant Build,編譯成功,生成的hadoop-1.0.1-eclipse-plugin.jar在hadoop-1.0.1解壓目錄的\build\contrib\eclipse-plugin文件夾裡面。
第四步,當然就是在eclipse中配置我們編譯好的插件。
1.把hadoop-1.0.1-eclipse-plugin.jar文件放到eclipse安裝目錄的plugins中,重啟eclipse。重啟後,會在Window->Open Perspective->Other里,看到大象圖標的Map/Rece出現,或者是window->Preferences中看到Hadoop Map/Rece這個選項。
2.window->Preferences中點擊Hadoop Map/Rece這個選項,將Hadoop的那個解壓縮目錄(我的是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1)的路徑配置上,配置效果圖如下:
\
3.然後我們在Window->Open Perspective->Other里,點擊Map/Rece,切換到這個模式,截圖如下:
\
4.切換到Map/Rece模式後,我們看到畫面(4)中的截圖,點擊右下角的兩個小圖標,測試有沒有反應,如果有反應,暫時先別配置,這個我下篇博客會具體講。如果怎麼點都沒有反應,則可以做如下操作:
(1).打開項目中的\META-INF\MANIFEST.MF文件,找到之前編譯時,添加的Bundle-ClassPath: classes/ 這個位置,之前我們添加了7個jar包的配置,再增加四個,如下:
view sourceprint?
1.
lib/hadoop-common-0.21.0.jar,
2.
lib/hadoop-hdfs-0.21.0.jar,
3.
lib/log4j-1.2.15.jar,
4.
lib/hadoop-mapred-0.21.0.jar
(2).然後我們還需要去網上下載這四個jar包放到下面的文件夾中,以我的目錄舉例:D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\lib。
(3).然後在重新編譯即可,在替換原來的插件時,在重啟eclipse的過程中,你可以這樣做:先刪除原來的插件,原來重啟eclipse,確認Map/Rece沒了;然後再關掉eclipse,將新的插件放到plugins里,之後再次啟動eclipse。解決這個問題時我在網上參考的文章是:http://blog.csdn.net/kky2010_110/article/details/7774747,大家也可以看看~。
(4).上邊所提到的截圖如下:
\
經過上邊說的這些步驟,eclipse中的hadoop插件我們算是編譯完了,這個過程中一定要注意的是,不要怕失敗,多嘗試,因為hadoop版本與eclipse版本是有關系的,所以導致你的版本和我的不太一致,可能會失敗,但是也可能會成功。所以在這里再次提醒,注意文章開始,我對自己的環境的版本的介紹,尤其是eclipse和hadoop的版本。建議大家如果有時間的話,可以先不管版本,按照我的步驟先走一遍,如果實在是不成功的話,則可以找個和我一樣的eclipse和hadoop版本,再體驗一回。因為,我在這個過程中,就發現,由於是第一次學hadoop,不見到成功的效果,總覺得少點什麼,總想見識一下,莫取笑哈~
至於下一步,如果配置Location和運行WordCount,我會在下一篇博客中具體說明,謝謝支持,覺得文章還不錯的話,多多點贊,多多留言哈,這將使我充滿動力!
D. hadoop 2.8.2 怎麼編譯
在不使用eclipse情況使java程序在hadoop
2.2中運行的完整過程。整個過程中其實分為java程序的編譯,生成jar包,運行測試。
這三個步驟運用的命令都比較簡單,主要的還是如何找到hadoop
2.2提供給java程序用來編譯的jar包。具體可以查看:
HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib目錄
下面會通過一個在hadoop中創建一個目錄的JAVA例子來進行演示
具體代碼如下:
package
com.wan.demo;
import
java.io.IOException;
import
org.apache.hadoop.conf.Configuration;
import
org.apache.hadoop.fs.FileSystem;
import
org.apache.hadoop.fs.Path;
public
class
HADemo
{
public
static
void
main(String[]
args)
{
//
TODO
Auto-generated
method
stub
mkdir(args[0]);
}
public
static
void
mkdir(String
dir){
Configuration
configuration=new
Configuration();
FileSystem
fs;
try
{
fs
=
FileSystem.get(configuration);
fs.mkdirs(new
Path(dir));
fs.close();
}
catch
(IOException
e)
{
//
TODO
Auto-generated
catch
block
e.printStackTrace();
}
}
}
把HADemo.java文件拷貝到linux環境中
配置HADOOP_HOME/bin到環境中,啟動集群,進入HADemo.java文件目錄中
注:下面的lib目錄裡面的文件由HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/
webhdfs/WEB-INF/lib目錄中獲取,下面做的目的是為了縮減命令長度
1.編譯java
#
mkdir
class
#Javac
-classpath
.:lib/hadoop-common-2.2.0.jar:lib/hadoop-annotations-2.2.0.jar
-d
class
HADemo.java
2.生成jar包
#jar
-cvf
hademo.jar
-C
class/
.
added
manifest
adding:
com/(in
=
0)
(out=
0)(stored
0%)
adding:
com/wan/(in
=
0)
(out=
0)(stored
0%)
adding:
com/wan/demo/(in
=
0)
(out=
0)(stored
0%)
adding:
com/wan/demo/HADemo.class(in
=
844)
(out=
520)(deflated
38%)
3.測試運行
#hadoop
jar
hademo.jar
com.wan.demo.HADemo
/test
檢測:
#hadoop
fs
-ls
/