Taiwan Hadoop Forum

台灣 Hadoop 技術討論區
現在的時間是 2022-07-03, 20:48

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




發表新文章 回覆主題  [ 6 篇文章 ] 
發表人 內容
 文章主題 : 新手求问复制文件到HDFS的问题
文章發表於 : 2013-10-25, 19:37 
離線

註冊時間: 2013-10-20, 16:48
文章: 11
Path dst不知道怎么设置呀,和书上设置一样但有不能复制文件过去。
代碼:
package hdfs_api1;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class CopyFile {

   public static void main(String[] args) throws Exception{
      // TODO Auto-generated method stub
      Configuration conf=new Configuration();
      FileSystem hdfs=FileSystem.get(conf);
      Path src=new Path("/t1.java");
      //Path dst=new Path("hdfs://localhost:9000/user/root/in");
      Path dst=new Path("/");
      hdfs.copyFromLocalFile(src, dst);
      System.out.println("Upload to "+conf.get("fs.default.name"));
      FileStatus files[]=hdfs.listStatus(dst);
      for(FileStatus file:files)
      {
         System.out.println(file.getPath());
      }
   }

}


结果如下
代碼:
Upload to file:///
file:/lost+found
file:/etc
file:/media
file:/bin
file:/boot
file:/dev
file:/home
file:/lib
file:/mnt
file:/opt
file:/proc
file:/root
file:/run
file:/sbin
file:/selinux
file:/srv
file:/sys
file:/tmp
file:/usr
file:/var
file:/vmlinuz
file:/initrd.img
file:/cdrom
file:/t1.class
file:/t1.java
file:/user
file:/ss


要是改为Path dst=new Path("hdfs://localhost:9000/user/root/in");又会报错,如下
Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://localhost:9000/user/root/in, expected: file:///

顺便想知道HDFS中的文件放在哪里了?在根目录中搜索不到呢?


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 新手求问复制文件到HDFS的问题
文章發表於 : 2013-10-25, 22:28 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
supheros 寫:
代碼:
      Path src=new Path("/t1.java");
      Path dst=new Path("/");
      hdfs.copyFromLocalFile(src, dst);

结果如下
代碼:
file:/t1.java

要是改为Path dst=new Path("hdfs://localhost:9000/user/root/in");又会报错,如下
Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://localhost:9000/user/root/in, expected: file:///
顺便想知道HDFS中的文件放在哪里了?在根目录中搜索不到呢?


您應該是沒有設定 fs.default.name
因為訊息顯示它還是 file:/// 也就是單機模式(Local Mode)

還是說,您用 Eclipse 執行呢?也許用 Eclipse 執行時,
漏了什麼設定,所以無法得知 ${HADOOP_HOME}/conf 底下的設定。

- Jazz


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 新手求问复制文件到HDFS的问题
文章發表於 : 2013-10-27, 09:14 
離線

註冊時間: 2013-10-20, 16:48
文章: 11
jazz 寫:
supheros 寫:
代碼:
      Path src=new Path("/t1.java");
      Path dst=new Path("/");
      hdfs.copyFromLocalFile(src, dst);

结果如下
代碼:
file:/t1.java

要是改为Path dst=new Path("hdfs://localhost:9000/user/root/in");又会报错,如下
Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://localhost:9000/user/root/in, expected: file:///
顺便想知道HDFS中的文件放在哪里了?在根目录中搜索不到呢?


您應該是沒有設定 fs.default.name
因為訊息顯示它還是 file:/// 也就是單機模式(Local Mode)

還是說,您用 Eclipse 執行呢?也許用 Eclipse 執行時,
漏了什麼設定,所以無法得知 ${HADOOP_HOME}/conf 底下的設定。

- Jazz



我check了下,在core-site.xml中设定了fs.default.name的,如下
代碼:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop/hadoop-${user.name}</value>
</property>
</configuration>

确实是用eclipse跑的,也是照着步骤先设定hdfs,在左侧也能看到hdfs的目录了。
在目录中upload和download文件(.txt)执行wordcount也没问题。
但是为何这个出错呢?版大知道还需要在哪里配置吗?新手实在是感激不尽了!


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 新手求问复制文件到HDFS的问题
文章發表於 : 2013-10-27, 16:02 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
supheros 寫:
确实是用eclipse跑的,也是照着步骤先设定hdfs,在左侧也能看到hdfs的目录了。
在目录中upload和download文件(.txt)执行wordcount也没问题。
但是为何这个出错呢?版大知道还需要在哪里配置吗?新手实在是感激不尽了!


很抱歉,我很少用 Eclipse 直接執行,理論上應該是要用 Run on Hadoop 的方式執行。
IDE 的操作步驟說起來是黑盒子,我沒有辦法很明確地說出哪裡漏了設定,如果有其他人知道,再請其他人補充了。

- Jazz


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 新手求问复制文件到HDFS的问题
文章發表於 : 2013-10-27, 20:16 
離線

註冊時間: 2013-10-20, 16:48
文章: 11
解决了。可能确实是配置没有导入的问题,虽然Map/Reduce locations中的配置有正确的fs.default.name。

方法一:conf.setProperty('fs.default.name', 'hdfs://localhost:9000');

方法二:conf.addResource(new Path("${HADOOP_HOME}/conf /core-site.xml"));


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 新手求问复制文件到HDFS的问题
文章發表於 : 2013-10-28, 09:37 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
supheros 寫:
解决了。可能确实是配置没有导入的问题,虽然Map/Reduce locations中的配置有正确的fs.default.name。
方法一:conf.setProperty('fs.default.name', 'hdfs://localhost:9000');
方法二:conf.addResource(new Path("${HADOOP_HOME}/conf /core-site.xml"));


謝謝分享,週末我也有測試過,有發現 Eclipse Hadoop Plugin 確實有很多設定檔的參考來源,
最好看一下執行配置(Run Configuration)。
http://forum.hadoop.tw/viewtopic.php?f=4&t=38030

- Jazz


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

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


誰在線上

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


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

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