hadoop-2.2.0配置eclipse外掛程式(windows和linux平台)

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   io   os   使用   ar   

目前配置eclipse外掛程式主要有兩個版本,一個是在windows下重新編譯配置,另一個是在linux在重新設定編譯。

下面逐步講解在linux下編譯-配置eclipse外掛程式的過程。
  1. 環境:

     Ubuntu 12.04 64bit 3.2.0-29-generic eclipse-jee-luna-R-linux-gtk-x86_64.tar.gz Apache Ant(TM) version 1.8.2 JDK Version 1.7.0_67
  2. 安裝前準備:

    Ant、jdk、eclipse、Apache hadoop 2.2.0安裝包都準備好
    eclipse外掛程式原始碼準備好(https://github.com/winghc/hadoop2x-eclipse-plugin)
    在叢集上把Apache hadoop 2.2.0部署好

  3. 進行外掛程式編譯:

    • 將Apache hadoop 2.2.0的安裝包和eclipse拷至任意目錄,如/home/hadoop/Downloads/hadoop-2.2.0和/home/hadoop/Downloads/eclipse. 切記:整個路徑中不能出現任何空格,否則ant編譯過程會報錯!

    • 進入外掛程式目錄進行編譯,如外掛程式放在/home/hadoop/Downloads/hadoop2x-eclipse-plugin

      $ cd /home/hadoop/Downloads/hadoop2x-eclipse-plugin/src/contrib/eclipse-plugin$ ant jar -Dversion=2.2.0 -Declipse.home=/home/hadoop/Downloads/eclipse -Dhadoop.home=/home/hadoop/Downloads/hadoop-2.2.0

      注意:其中-Declipse.home和-Dhadoop.home需要指定eclipse的安裝目錄和hadoop安裝檔案的存放目錄,切記:這兩個目錄的全路徑中都不能存在空格

      接下來就是漫長的等待了,主要慢的是target:ivy-download,ivy-resolve-common這兩步。
      最後產生的外掛程式在:
      hadoop2x-eclipse-plugin/build/contrib/eclipse-plugin/hadoop-eclipse-plugin-2.2.0.jar

  4. 接下來進行外掛程式的安裝與配置

    • 將hadoop-eclipse-plugin-2.2.0.jar拷貝到eclipse的plugins目錄下,啟動eclipse

    • 進入Window-->Preference配置根目錄:

    • 進入Window-->Open Perspective-->other-->Map/Reduce開啟Map/Reduce視窗

    • 開啟Map/Reduce View,右鍵,選擇New hadoop location

      配置location

      注意:MR Master和DFS Master配置必須和mapred-site.xml和core-site.xml等設定檔一致

    • 開啟Project Explorer,查看HDFS檔案系統:

    • 建立Mapreduce項目

    • 建立MapReduce程式

  5. 編寫WordCount程式測試外掛程式使用:

    • 在MapReduce工程下建立WordCount.java程式,代碼如下:

      import java.io.IOException;import java.util.*;import org.apache.hadoop.fs.Path;import org.apache.hadoop.conf.*;import org.apache.hadoop.io.*;import org.apache.hadoop.mapred.*;import org.apache.hadoop.util.*;public class WordCount {public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {private final static IntWritable one = new IntWritable(1);private Text word = new Text();public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) {   word.set(tokenizer.nextToken());   output.collect(word, one); }}}public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) {   sum += values.next().get(); } output.collect(key, new IntWritable(sum));}}public static void main(String[] args) throws Exception {JobConf conf = new JobConf(WordCount.class);conf.setJobName("wordcount");conf.setOutputKeyClass(Text.class);conf.setOutputValueClass(IntWritable.class);conf.setMapperClass(Map.class);conf.setReducerClass(Reduce.class);conf.setInputFormat(TextInputFormat.class);conf.setOutputFormat(TextOutputFormat.class);FileInputFormat.setInputPaths(conf, new Path(args[0]));FileOutputFormat.setOutputPath(conf, new Path(args[1]));JobClient.runJob(conf);}}
    • 配置運行時參數:右鍵-->Run as-->Run Confiugrations

    • 將程式放在hadoop叢集上運行:右鍵-->Runas -->Run on Hadoop,最終的輸出結果會在HDFS相應的檔案夾下顯示。至此,Linux下hadoop-2.2.0 eclipse外掛程式配置完成。

  6. 配置過程中出先的問題:

    • 在eclipse中無法向檔案HDFS檔案系統寫入的問題,這將直接導致eclipse下編寫的程式不能在hadoop上運行。

      網上的解決方案有三個:
      a. 取消hadoop hdfs的使用者權限檢查。開啟conf/hdfs-site.xml,找到dfs.permissions屬性,將其修改為false(預設為true).[我當初的設定檔中寫成了dfs.permission,雖然這個值修改成了false,但依舊無效,從而導致這個環境配置不成功,淚奔了]

      b. 修改hadoop location參數,在advanced parameter選項卡中,找到hadoop.job.ugi選項,將此選項改為啟動hadoop的使用者名稱即可(注意,第一次設定的時候可能沒有hadoop.job.ugi參數,在報錯後去看就有了)[其實我怎麼也沒找到這個選項]

      c. 因為eclipse使用hadoop外掛程式提交作業是,會預設以DrWho身份去將作業寫入hdfs檔案系統中,對應的也是HDFS上的/usr/hadoop,由於DrWho使用者對hadoop目錄並沒有寫入許可權,所以導致異常發生。解決方案為:放開hadoop目錄的許可權,命令如下:$hadoop fs -chmod 777 [當初配置的時候,只放開了幾個目錄的許可權,從而到導致作業無法提交寫入到HDFS中,哭死了...]

    • 另外,eclipse外掛程式的使用可能跟eclipse版本有關係,我使用的是eclipse-jee-luna-R-linux-gtk-x86_64.tar.gz版本的eclipse,在ubuntu 12.04 64bit下是可以使用的

下面來講解一些在Windows下編譯配置eclipse外掛程式
  1. 環境:

     Windows 7 64bit 專業版 eclipse-standard-luna-R-win32-x86_64 Apache Ant(TM) version 1.9.4 JDK Version 1.7.0_67
  2. 安裝前準備:

    Ant、jdk、eclipse、Apache hadoop 2.2.0安裝包都準備好
    eclipse外掛程式原始碼準備好(https://github.com/winghc/hadoop2x-eclipse-plugin)
    在叢集上把Apache hadoop 2.2.0部署好

  3. 進行外掛程式編譯:

    • 將Apache hadoop 2.2.0的安裝包和eclipse拷至任意目錄,如E:\hadoop-2.2.0和E:\eclipse. 切記:整個路徑中不能出現任何空格,否則ant編譯過程會報錯!

    • 進入外掛程式目錄進行編譯,如外掛程式放在E:\hadoop2x-eclipse-plugin

      $ cd hadoop2x-eclipse-plugin/src/contrib/eclipse-plugin$ ant jar -Dversion=2.2.0 -Declipse.home=E:\eclipse -Dhadoop.home=E:\hadoop-2.2.0

      注意:其中-Declipse.home和-Dhadoop.home需要指定eclipse的安裝目錄和hadoop安裝檔案的存放目錄,切記:這兩個目錄的全路徑中都不能存在空格

      接下來就是漫長的等待了,主要慢的是target:ivy-download,ivy-resolve-common這兩步。
      最後產生的外掛程式在:
      hadoop2x-eclipse-plugin/build/contrib/eclipse-plugin/hadoop-eclipse-plugin-2.2.0.jar

  4. 配置window 7中hadoop環境變數:

    • 在Window7中設定%HADOOP_HOME%,並把%HADOOP_HOME%\bin加入PATH環境變數[這一步如果不做的話,hadoop程式啟動並執行過程中會出現null 指標異常,從而到時程式運行失敗]

    • 另外還需要下載一個外掛程式https://github.com/srccodes/hadoop-common-2.2.0-bin,解壓後把下載的bin目錄覆蓋%HADOOP_HOME%\bin目錄下的檔案

      注意,這兩步是必須的,否則將導致各種奇葩錯誤

      接下來的步驟與Linux版本配置方案中的4、5步驟相同

  5. 配置過程中出現的問題:

    • 在使用ant編譯eclipse外掛程式的時候,會出現一堆警告,如

      [javac] E:\hadoop-2.2.0\share\hadoop\hdfs\hadoop-hdfs-2.2.0.jar(org/apache/hadoop/hdfs/DistributedFileSystem.class): 警告: 無法找到類型 ‘LimitedPrivate‘ 的注釋方法 ‘value()‘[javac] E:\hadoop-2.2.0\share\hadoop\common\hadoop-common-2.2.0.jar(org/apache/hadoop/fs/FileSystem.class): 警告: 無法找到類型 ‘LimitedPrivate‘ 的注釋方法 ‘value()‘[javac] E:\hadoop-2.2.0\share\hadoop\common\hadoop-common-2.2.0.jar(org/apache/hadoop/fs/FileSystem.class): 警告: 無法找到類型 ‘LimitedPrivate‘ 的注釋方法 ‘value()‘[javac] E:\hadoop-2.2.0\share\hadoop\common\hadoop-common-2.2.0.jar(org/apache/hadoop/fs/FileSystem.class): 警告: 無法找到類型 ‘LimitedPrivate‘ 的注釋方法 ‘value()‘[javac] E:\hadoop-2.2.0\share\hadoop\common\hadoop-common-2.2.0.jar(org/apache/hadoop/fs/FSDataInputStream.class): 警告: 無法找到類型 ‘LimitedPrivate‘ 的注釋方法 ‘value()‘[javac] E:\hadoop-2.2.0\share\hadoop\common\hadoop-common-2.2.0.jar(org/apache/hadoop/fs/FSDataOutputStream.class): 警告: 無法找到類型 ‘LimitedPrivate‘ 的注釋方法 ‘value()‘[javac] 注: 某些輸入檔案使用或覆蓋了已淘汰的 API。[javac] 注: 有關詳細資料, 請使用 -Xlint:deprecation 重新編譯。[javac] 注: 某些輸入檔案使用了未經檢查或不安全的操作。[javac] 注: 有關詳細資料, 請使用 -Xlint:unchecked 重新編譯。[javac] 7 個警告

      但最終還是會編譯成功的,這些警告不用去管

    • 外掛程式的安裝成功與否與eclipse版本有關係,我以前使用的是windows下64bit j2ee版本的eclipse,將其與外掛程式一個通過ant編譯後發現eclipse無法識別外掛程式。

    • 另外在下載eclipse外掛程式的原始碼中有一個已經編譯好的eclipse外掛程式,該外掛程式是不能使用的,放在eclipse中使用的話會報classNotDefException

hadoop-2.2.0配置eclipse外掛程式(windows和linux平台)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.