linux下eclipse中運行hadoop過程總結


  轉載請注明原作者:http://www.cnblogs.com/beanmoon

  最近在研究大數據的課題,不可避免要用到hadoop,於是開始看《hadoop: the definite guide 2》,在遇到分析天氣數據時,遇到一個實例,然后就動手試試運行命令  

% export HADOOP_CLASSPATH=build/classes
% hadoop MaxTemperature input/ncdc/sample.txt output

  HADOOP_CLASSPATH是用來指明經編譯過的class文件所在的位置(我是通過eclipse來編譯的,不知道書中作者是怎么編譯的,直接用javac會報很多出錯信息,當然是因為沒有加額外的jar包的緣故,這個問題待解~~^_^),如果你沒有指明HADOOP_CLASSPATH,即使在當前文件夾下執行Hadoop命令,他仍然報錯:Could not find or load main class MaxTemperature,還可以通過"jar cmf manifest MaxTemperature.jar *.class"命令來生成一個jar包,然后通過"hadoop jar MaxTemperature.jar input output"命令來運行jar包(這時候不指明HADOOP_CLASSPATH也沒事),如果打包的時候沒有通過manifest文件指明main-class,那么還要在執行的時候加上主類的聲明:“hadoop jar MaxTemperature.jar MaxTemperature input output”。manifest文件的內容見下面:  

Manifest-Version: 1.0
Main-Class: MaxTemperature

  如果使用eclipse,那就需要先安裝eclipse,在debian下第一次是通過aptitude install eclipse來安裝的(安裝的位置在/usr/lib/eclipse),安裝的版本是galileo版的,嫌它太舊,就自己下了一個juno版的,安裝過程如下:

(1)把eclipse-java-juno-SR2-linux-gtk.tar.gz解壓到某個目錄中,我解壓到的是主目錄,得到eclipse目錄

(2)在/usr/bin目錄下創建一個啟動腳本eclipse,執行下面的命令來創建:
sudo gedit /usr/bin/eclipse

然后在該文件中添加以下內容:
#!/bin/sh
export MOZILLA_FIVE_HOME="/usr/lib/mozilla/"
export ECLIPSE_HOME="/home/wangxing/Development/eclipse"
$ECLIPSE_HOME/eclipse $*($*什么東東??

(3)修改該腳本的權限,讓它變成可執行,執行下面的命令:
sudo chmod a+x /usr/bin/eclipse

   (4)在Applications(應用程序)菜單上添加一個圖標

sudo gedit /usr/share/applications/eclipse.desktop

然后在文件中添加下列內容:
[Desktop Entry]
Encoding=UTF-8
Name=Eclipse Platform
Comment=Eclipse IDE
Exec=eclipse
Icon=/home/bean/eclipse/icon.xpm
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;

  通過終端啟動eclipse挺好的,可通過鼠標就不行,報如下錯:

A Java RunTime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. No java virtual machine was found after searching the following locations:…

  網上搜了一下,解決辦法如下:

在終端進入你的eclipse目錄,然后輸入:

mkdir jre
cd jre
ln -s 你的JDK目錄/bin bin

  現在開始把hadoop集成到eclipse中去,網上找到的方法如下:   

http://blog.sina.com.cn/s/blog_62186b4601012acs.html

  這是網上的解決辦法,可具體到我這里執行的時候又遇到了問題,首先我的hadoop是1.0.4最新版的,它不直接給你hadoop-eclipse-plugin-1.0.4.jar,它需要你自己具體導出,網上方法如下:  

1、在Eclipse中選擇File-->Import-->Existing Projects into Workspace導入已有項目,假設路徑為:

/download/hadoop-1.0.1/src/contrib/eclipse-plugin,默認的項目名稱是MapReduceTools 

2、默認項目名稱為MapReduceTools,然后在項目MapReduceTools中新建lib目錄,並把hadoop的hadoop-core、commons-cli-1.2.jar、commons-lang-2.4.jar、commons-configuration-1.6.jar、jackson-mapper-asl-1.8.8.jar、jackson-core-asl-1.8.8.jar、commons-httpclient-3.0.1.jar拷貝到該目錄。 

3、修改../build-contrib.xml (這是存放在項目所在位置的上一層嗎??)

  <property name="version" value="1.0.1"/>
  <property name="hadoop.root" location="/download/develop/hadoop-1.0.1"/>
  <property name="eclipse.home" location="/download/eclipse" /> 

4、修改build.xml

  <target name="jar" depends="compile" unless="skip.contrib">

    <mkdir dir="${build.dir}/lib"/>
    <copy file="${hadoop.root}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-cli-1.2.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-lang-2.4.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-configuration-1.6.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar"  todir="${build.dir}/lib" verbose="true"/>

    <jar
      jarfile="${build.dir}/hadoop-${name}-${version}.jar"
      manifest="${root}/META-INF/MANIFEST.MF">
      <fileset dir="${build.dir}" includes="classes/ lib/"/>
      <fileset dir="${root}" includes="resources/ plugin.xml"/>
    </jar>
  </target> 

5、右鍵選擇項目-->Export,類型選擇JAR file,把plugin.xml文件、classes目錄、lib目錄和resources目錄選上,選擇導出的jar目錄,即可導出hadoop-eclipse-plugin-1.0.0.jar文件 

6、把該文件放到eclipse/plugin目錄下面,重啟eclipse

  最后一步步的終於導出來了jar包(由於浮躁沒有好好看上面的過程,中間遇到很多錯誤而無法導出jar包,浪費了很多時間),可始終無法讓在windows->preference中讓eclipse識別出hadoop map/reduce,應該還是我的jar包導出有問題吧,於是到網上下載了一個這樣的jar包,終於如願以償(期間我還想過使用其他的早期的hadoop版本,因為他們內置的又hadoop-eclipse-plugin-***.jar,我下的是hadoop-0.22.0版本,不過其中的很多類和接口由於不安全的原因都deprecated了,只得重新使用hadoop-1.0.4)。

  其次,在配置hadoop location的時候又出問題了,點擊右鍵不管新建或者編輯hadoop location時都沒有反應,試了幾次時就不試了,直接新建map/reduce工程,在MaxTemperature.java上右鍵run configuration中指定了輸入文件輸出文件的參數(輸入輸出文件放在項目的根目錄下)后,開始運行,然后一個窗口就跳出來了讓我配置hadoop location~~真是太賤了~~

  最后輸出內容跟原文一樣,大功告成~~

  參考鏈接:

http://hi.baidu.com/ihsauqaxblbdmwq/item/9ddaf2fca32315b230c199a7
http://blog.csdn.net/lmc_wy/article/details/6053580
http://blog.sina.com.cn/s/blog_62186b4601012acs.html
http://blog.sina.com.cn/s/blog_62186b4601011c6a.html
http://www.oschina.net/code/snippet_176897_7976
http://blog.sina.com.cn/s/blog_6daadb2f01015rb7.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM