| 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 支援哪幾種檔案系統: (複選) |