| | 7 | * 在上一個實作中,我們可以觀察 FsShell.java 是如何使用 Path、Configration、!FileSystem 這幾個類別。 |
| | 8 | * 我們從模仿 hadoop fs -put 對應的函數 copyFromLocal(Path[] srcs, String dstf) 可以重新撰寫一個 Java Application 來學習 Hadoop !FileSystem API |
| | 9 | {{{ |
| | 10 | #!java |
| | 11 | 121 /** |
| | 12 | 122 * Add local files to the indicated FileSystem name. src is kept. |
| | 13 | 123 */ |
| | 14 | 124 void copyFromLocal(Path[] srcs, String dstf) throws IOException { |
| | 15 | 125 Path dstPath = new Path(dstf); |
| | 16 | 126 FileSystem dstFs = dstPath.getFileSystem(getConf()); |
| | 17 | 127 if (srcs.length == 1 && srcs[0].toString().equals("-")) |
| | 18 | 128 copyFromStdin(dstPath, dstFs); |
| | 19 | 129 else |
| | 20 | 130 dstFs.copyFromLocalFile(false, false, srcs, dstPath); |
| | 21 | 131 } |
| | 22 | }}} |
| | 23 | * 讓我們先來觀察程式運作的情形,請剪貼以下步驟,並嘗試思考觀察到的現象(特別是 hadoop fs -ls 列出的結果差異): |
| 31 | | <問題 1> 執行 lab003/FsShell,在單機模式時,srcFs 物件是哪一個 Java 類別 |
| 32 | | {{{ |
| 33 | | #!text |
| 34 | | (A) org.apache.hadoop.fs.LocalFileSystem |
| 35 | | (B) org.apache.hadoop.hdfs.DistributedFileSystem |
| 36 | | (C) org.apache.hadoop.fs.shell.Count |
| 37 | | (D) org.apache.hadoop.fs.shell.CommandFormat |
| 38 | | }}} |
| 39 | | |
| 40 | | <問題 2> 執行 lab003/FsShell,在全分散模式時,srcFs 物件是哪一個 Java 類別 |
| 41 | | {{{ |
| 42 | | #!text |
| 43 | | (A) org.apache.hadoop.fs.LocalFileSystem |
| 44 | | (B) org.apache.hadoop.hdfs.DistributedFileSystem |
| 45 | | (C) org.apache.hadoop.fs.shell.Count |
| 46 | | (D) org.apache.hadoop.fs.shell.CommandFormat |
| 47 | | }}} |
| 48 | | |
| 49 | | <問題 3> 根據 ${HOME}/hadoop/src/core/org/apache/hadoop/fs 目錄的內容,試猜測 Hadoop 1.0.4 支援哪幾種檔案系統: (複選) |
| | 48 | <問題 1> 根據 ${HOME}/hadoop/src/core/org/apache/hadoop/fs 目錄的內容,試猜測 Hadoop 1.0.4 支援哪幾種檔案系統: (複選) |