wiki:III131019/Lab10

Version 9 (modified by jazz, 11 years ago) (diff)

--

◢ <實作九> | <回課程大綱> ▲ | <實作十一> ◣

實作十 Lab10

Hadoop FileSystem API 實作(一)
Local 檔案上傳到 HDFS
Upload Local Files and Directories to HDFS

請先連線至 nodeN.3du.me , N 為您的報名編號
  • 在上一個實作中,我們可以觀察 FsShell.java 是如何使用 Path、Configration、FileSystem 這幾個類別。
  • 我們從模仿 hadoop fs -put 對應的函數 copyFromLocal(Path[] srcs, String dstf) 可以重新撰寫一個 Java Application 來學習 Hadoop FileSystem API
     121   /**
     122    * Add local files to the indicated FileSystem name. src is kept.
     123    */
     124   void copyFromLocal(Path[] srcs, String dstf) throws IOException {
     125     Path dstPath = new Path(dstf);
     126     FileSystem dstFs = dstPath.getFileSystem(getConf());
     127     if (srcs.length == 1 && srcs[0].toString().equals("-"))
     128       copyFromStdin(dstPath, dstFs);
     129     else
     130       dstFs.copyFromLocalFile(false, false, srcs, dstPath);
     131   }
    
  • 讓我們先來觀察程式運作的情形,請剪貼以下步驟,並嘗試思考觀察到的現象(特別是 hadoop fs -ls 列出的結果差異):
    cd ~/hadoop_labs/lab004
    ant
    hadoop fs -ls
    hadoop fs -rmr input
    hadoop jar copyFromLocal.jar doc input
    hadoop fs -ls
    touch test
    hadoop jar copyFromLocal.jar test file
    hadoop fs -ls
    
    export HADOOP_CONF_DIR=~/hadoop/conf.local/
    hadoop fs -ls
    hadoop jar copyFromLocal.jar doc input
    hadoop fs -ls
    hadoop jar copyFromLocal.jar test file
    hadoop fs -ls
    unset HADOOP_CONF_DIR
    
    ant clean