Taiwan Hadoop Forum

台灣 Hadoop 技術討論區
現在的時間是 2022-06-28, 05:02

所有顯示的時間為 UTC + 8 小時




發表新文章 回覆主題  [ 4 篇文章 ] 
發表人 內容
 文章主題 : Hadoop程式碼都沒錯,但是編譯卻有輸入格式錯誤問題
文章發表於 : 2014-02-25, 16:40 
離線

註冊時間: 2014-02-25, 16:33
文章: 2
jazz大大~~

我的錯誤訊息如下:
代碼:
Working Directory -> hdfs://WINDOOP:9000/user/user
14/02/25 16:35:55 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
14/02/25 16:35:55 INFO mapred.JobClient: Cleaning up the staging area hdfs://WINDOOP:9000/windoop/mapred/staging/user/.staging/job_201402251402_0007
14/02/25 16:35:55 ERROR security.UserGroupInformation: PriviledgedActionException as:user cause:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://WINDOOP:9000/user/user/input
Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://WINDOOP:9000/user/user/input
   at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:235)
   at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:252)
   at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:962)
   at org.apache.hadoop.mapred.JobClient.writeSplits(JobClient.java:979)
   at org.apache.hadoop.mapred.JobClient.access$600(JobClient.java:174)
   at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:897)
   at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850)
   at java.security.AccessController.doPrivileged(Native Method)
   at javax.security.auth.Subject.doAs(Unknown Source)
   at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
   at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850)
   at org.apache.hadoop.mapreduce.Job.submit(Job.java:500)
   at org.windoop.presidentElection.main(presidentElection.java:353)

我的reduce設定不做事情
事先已經把setcombiner拿掉
也已經設定job.setNumReduceTasks(0);
但應該不是這個問題
應該是輸入格式問題。


以下是我的map程式碼:

代碼:
public static class TokenizerMapper
       extends Mapper<Object, Text, Text, Text>{
   
    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();
                         
 
                         //0  1  2  3  4  5
     int[][] distance = { /* 0 */{ 0, 0, 0, 0, 0, 0 },
                     /* 1 */{ 0, 0, 7, 4,10, 3 },
                     /* 2 */{ 0, 7, 0, 9, 6, 2 },
                     /* 3 */{ 0, 4, 9, 0,15, 8 },
                     /* 4 */{ 0,10, 6,15, 0, 1 },
                     /* 5 */{ 0, 3, 2, 8, 1, 0 } };
    public void map(Object key, Text value, Context context
                    ) throws IOException, InterruptedException {
     
         
      String[] str = value.toString().split(" ");
      
      int[][] initialPopulation = new int[str.length][5];
      for (int i = 0; i < str.length; i++) {
         String[] s2 = str[i].split("");
         for (int j = 0; j < initialPopulation[i].length; j++) {
            initialPopulation[i][j]=Integer.valueOf(s2[j+1]);
         }
      }
     
      
       int[][] nextGeneration = new int[initialPopulation.length][5];
      int[][] next = new int[initialPopulation.length][5];
      
      //由初始族群產生下一代
      next = doGA(initialPopulation);
      
      //進行50次迭代
      for (int i = 0; i < 1000; i++) {
         nextGeneration = next.clone();
         next = doGA(nextGeneration);
      }
      for (int i = 0; i < next.length; i++) {
         for (int j = 0; j < next[i].length; j++) {
            System.out.printf("%d ",next[i][j]);
         }
         System.out.printf("%d " ,getFitness(next[i]));
         System.out.println();
      }
      System.out.println();
      //取出最佳解
      int[] fitnessArray = new int[initialPopulation.length];
      for (int i = 0; i < next.length; i++) {
         fitnessArray[i]=getFitness(next[i]);
      }
      
      fitnessArray = quickSort(fitnessArray, 0, fitnessArray.length-1);

      for (int i = 0; i < next.length; i++) {
         int f = getFitness(next[i]);
         int x= 0;
         if (f == fitnessArray[0]) {
            for (int j = 0; j < i; j++) {
               if(Arrays.equals(next[i], next[j]))
                  x++;
            }
            if(x == 0){
               String outKey = Arrays.toString(next[i]);
               String outValue = String.valueOf(f);
               context.write(new Text(outKey),new Text(outValue));
            }
         }   
      }
      
   }// end constructor


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: Hadoop程式碼都沒錯,但是編譯卻有輸入格式錯誤問題
文章發表於 : 2014-02-25, 23:09 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
chen 寫:
jazz大大~~
我的錯誤訊息如下:
代碼:
Working Directory -> hdfs://WINDOOP:9000/user/user
14/02/25 16:35:55 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
14/02/25 16:35:55 INFO mapred.JobClient: Cleaning up the staging area hdfs://WINDOOP:9000/windoop/mapred/staging/user/.staging/job_201402251402_0007
14/02/25 16:35:55 ERROR security.UserGroupInformation: PriviledgedActionException as:user cause:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://WINDOOP:9000/user/user/input
Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://WINDOOP:9000/user/user/input



嗯,看起來有點神似先前我遇過的 Hadoop 1.0.4 在 Windows 上的權限問題。
可以麻煩描述一下您執行的作業系統、Hadoop 版本,是否有採用 Eclipse 嘛?

看起來是 Windows , 採用 Windoop (版本不確定), 因為 Windoop 有搭 Eclipse, 所以您才會說程式碼編譯沒有錯,但執行時有錯。

PS. 這個問題似乎蠻常見的~
http://blog.csdn.net/mango_song/article/details/8314498

- Jazz


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: Hadoop程式碼都沒錯,但是編譯卻有輸入格式錯誤問題
文章發表於 : 2014-02-26, 14:14 
離線

註冊時間: 2014-02-25, 16:33
文章: 2
您好:
我的作業系統是windows8
購買Hadoop翱翔雲端這本書,使用裡面的光碟,安裝windoop在C槽根目錄,
安裝windoop_1.0.3_app_mode_zh_TW.7z(整合Eclipse之中文版app模式)
我是點兩下啟動之後,他就會自動開始Eclipse。

看了您給的網頁,他說修改hdfs /tmp目錄權限,
我跑程式後,去C:\windoop\dfs\data\tmp
但是tmp這裡面是空的 :( :(
((所有有關tmp的資料夾我都點進去看也都是空的))

另外也沒有找到checkpoint在哪裡,
摸索很久,實在不知道怎麼辦才好,真的感謝您!


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: Hadoop程式碼都沒錯,但是編譯卻有輸入格式錯誤問題
文章發表於 : 2014-02-27, 16:26 
離線

註冊時間: 2013-10-15, 21:01
文章: 50
我也是用windoop的,在我看來感覺是job那邊宣告錯了,還有eclipse的input位置也可能有問題。
建議貼完整程式碼,會比較好檢驗。


回頂端
 個人資料 E-mail  
 
顯示文章 :  排序  
發表新文章 回覆主題  [ 4 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 3 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
正體中文語系由 竹貓星球 維護製作