Changes between Initial Version and Version 1 of III110813/Lab3


Ignore:
Timestamp:
Oct 21, 2011, 1:04:41 PM (13 years ago)
Author:
jazz
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • III110813/Lab3

    v1 v1  
     1[[PageOutline]]
     2
     3◢ <[wiki:III110813/Lab2 實作一]> | <[wiki:III110813 回課程大綱]> ▲ | <[wiki:III110813/Lab4 實作四]> ◣
     4
     5= 實作三 Lab3 =
     6
     7{{{
     8#!html
     9<div style="text-align: center;"><big style="font-weight: bold;"><big>HDFS 單機操作練習<br/>HDFS in Practice</big></big></div>
     10}}}
     11
     12== 0. 啟動 Hadoop4Win ==
     13
     14 * STEP 1 : 請在「開始功能表」依序點選以下捷徑
     15  * [[BR]][[Image(Hadoop4Win:hadoop4win-installer_11.jpg)]]
     16 * STEP 2 :首先點選 start-hadoop 來啟動 Hadoop 的服務(跑在獨立的 CMD 視窗中)
     17  * '''注意''':必須看到 Safe Mode is OFF 才算正常啟動完畢。
     18  * [[BR]][[Image(Hadoop4Win:hadoop4win_29.jpg,width=800)]]
     19 * STEP 3 :其次點選 NameNode Web UI 用瀏覽器開啟 http://localhost:50070 的頁面,確認 NameNode 正常開啟,可以正常顯示如下畫面:
     20  * '''注意''':必須有一個 Live Node 才算是正常。
     21  * [[BR]][[Image(Hadoop4Win:hadoop4win_10.jpg,width=800)]]
     22 * STEP 4 :接著點選 JobTracker Web UI 用瀏覽器開啟 http://localhost:50030 的頁面,確認 JobTracker 正常開啟,可以正常顯示如下畫面:
     23  * '''注意''':狀態必須是 RUNNING 才算是正常。
     24  * [[BR]][[Image(Hadoop4Win:hadoop4win_11.jpg,width=800)]]
     25 * STEP 5 : 最後點選 hadoop4win 來啟動 hadoop4win 的 Cygwin 視窗,用以輸入後續的指令。
     26  * [[BR]][[Image(Hadoop4Win:hadoop4win_20.jpg,width=800)]]
     27
     28== 1. HDFS 指令練習 ==
     29
     30=== 1.1 瀏覽您的 HDFS 目錄 ===
     31
     32 * 首先,您可以使用 hadoop fs -ls 指令來瀏覽您的 HDFS 目錄
     33{{{
     34Jazz@human ~
     35$ hadoop fs -ls
     36Found 1 items
     37drwxr-xr-x   - Jazz supergroup          0 2011-09-14 12:50 /user/Jazz/tmp
     38}}}
     39
     40=== 1.2 上傳資料到 HDFS 目錄 ===
     41
     42 * 接著,讓我們來練習如何上傳資料到 HDFS 目錄。這裡我們使用的是 /opt/hadoop/conf 當作來源目錄,/user/${使用者名稱}/input 當作目標目錄。
     43 * '''注意''':由於 Windows 版的 Hadoop 運行於 Cygwin 中,然而 Cygwin 的路徑是虛擬路徑,JRE(Java Runtime Environment)只認識 Windows 目錄路徑,因此倘若您遇到類似底下的錯誤訊息,請加上 cygpath -w 來轉換 Cygwin 路徑到 Windows 路徑。
     44{{{
     45Jazz@human ~
     46$ hadoop fs -put /opt/hadoop/conf input
     47put: File /opt/hadoop/conf does not exist.
     48Jazz@human ~
     49$ hadoop fs -put $(cygpath -w /opt/hadoop/conf) input
     50}}}
     51
     52 * 我們可以使用 hadoop fs -ls 來檢查剛剛上傳的檔案
     53{{{
     54Jazz@human ~
     55$ hadoop fs -ls
     56Found 2 items
     57drwxr-xr-x   - Jazz supergroup          0 2011-10-21 11:45 /user/Jazz/input
     58drwxr-xr-x   - Jazz supergroup          0 2011-09-14 12:50 /user/Jazz/tmp
     59
     60Jazz@human ~
     61$ hadoop fs -ls input
     62Found 13 items
     63-rw-r--r--   1 Jazz supergroup       3936 2011-10-21 11:45 /user/Jazz/input/capacity-scheduler.xml
     64-rw-r--r--   1 Jazz supergroup        535 2011-10-21 11:45 /user/Jazz/input/configuration.xsl
     65-rw-r--r--   1 Jazz supergroup        326 2011-10-21 11:45 /user/Jazz/input/core-site.xml
     66-rw-r--r--   1 Jazz supergroup       2409 2011-10-21 11:45 /user/Jazz/input/hadoop-env.sh
     67-rw-r--r--   1 Jazz supergroup       1245 2011-10-21 11:45 /user/Jazz/input/hadoop-metrics.properties
     68-rw-r--r--   1 Jazz supergroup       4190 2011-10-21 11:45 /user/Jazz/input/hadoop-policy.xml
     69-rw-r--r--   1 Jazz supergroup        196 2011-10-21 11:45 /user/Jazz/input/hdfs-site.xml
     70-rw-r--r--   1 Jazz supergroup       2815 2011-10-21 11:45 /user/Jazz/input/log4j.properties
     71-rw-r--r--   1 Jazz supergroup        212 2011-10-21 11:45 /user/Jazz/input/mapred-site.xml
     72-rw-r--r--   1 Jazz supergroup         10 2011-10-21 11:45 /user/Jazz/input/masters
     73-rw-r--r--   1 Jazz supergroup         10 2011-10-21 11:45 /user/Jazz/input/slaves
     74-rw-r--r--   1 Jazz supergroup       1243 2011-10-21 11:45 /user/Jazz/input/ssl-client.xml.example
     75-rw-r--r--   1 Jazz supergroup       1195 2011-10-21 11:45 /user/Jazz/input/ssl-server.xml.example
     76}}}
     77 
     78=== 1.3 下載 HDFS 的資料到本地目錄 ===
     79
     80 * 接著讓我們來練習如何透過指令從 HDFS 下載資料到本地目錄
     81{{{
     82Jazz@human ~
     83$ hadoop fs -get input fromHDFS
     84}}}
     85
     86 * 您可以透過 diff 指令來檢查剛剛上傳的內容與下載下來的內容是否一致
     87{{{
     88Jazz@human ~
     89$ diff -Naur fromHDFS/ /opt/hadoop/conf
     90}}} 
     91
     92=== 1.4 刪除 HDFS 上的檔案 ===
     93
     94 * 您可以透過 hadoop fs -rm 來刪除 HDFS 上的單一檔案
     95{{{
     96Jazz@human ~
     97$ hadoop fs -rm input/masters
     98Deleted hdfs://localhost:9000/user/Jazz/input/masters
     99}}}
     100 * 倘若您欲刪除的是目錄,請使用 hadoop fs -rmr 來刪除 HDFS 上的目錄
     101{{{
     102Jazz@human ~
     103$ hadoop fs -rmr tmp
     104Deleted hdfs://localhost:9000/user/Jazz/tmp
     105}}}
     106
     107=== 1.5 傾印 HDFS 上的檔案內容 ===
     108
     109 * 有時,如果只是想要查閱 HDFS 上的檔案內容,可以使用 hdfs fs -cat 來傾印(dump)檔案內容。
     110{{{
     111Jazz@human ~
     112$ hadoop fs -cat input/slaves
     113localhost
     114}}}
     115
     116=== 1.6 更多 HDFS 指令操作 ===
     117
     118 * HDFS 支援的所有指令可以透過以下方式取得列表:
     119{{{
     120Jazz@human ~
     121$ hadoop fs
     122Usage: java FsShell
     123           [-ls <path>]
     124           [-lsr <path>]
     125           [-du <path>]
     126           [-dus <path>]
     127           [-count[-q] <path>]
     128           [-mv <src> <dst>]
     129           [-cp <src> <dst>]
     130           [-rm [-skipTrash] <path>]
     131           [-rmr [-skipTrash] <path>]
     132           [-expunge]
     133           [-put <localsrc> ... <dst>]
     134           [-copyFromLocal <localsrc> ... <dst>]
     135           [-moveFromLocal <localsrc> ... <dst>]
     136           [-get [-ignoreCrc] [-crc] <src> <localdst>]
     137           [-getmerge <src> <localdst> [addnl]]
     138           [-cat <src>]
     139           [-text <src>]
     140           [-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>]
     141           [-moveToLocal [-crc] <src> <localdst>]
     142           [-mkdir <path>]
     143           [-setrep [-R] [-w] <rep> <path/file>]
     144           [-touchz <path>]
     145           [-test -[ezd] <path>]
     146           [-stat [format] <path>]
     147           [-tail [-f] <file>]
     148           [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
     149           [-chown [-R] [OWNER][:[GROUP]] PATH...]
     150           [-chgrp [-R] GROUP PATH...]
     151           [-help [cmd]]
     152
     153Generic options supported are
     154-conf <configuration file>     specify an application configuration file
     155-D <property=value>            use value for given property
     156-fs <local|namenode:port>      specify a namenode
     157-jt <local|jobtracker:port>    specify a job tracker
     158-files <comma separated list of files>    specify comma separated files to be copied to the map reduce cluster
     159-libjars <comma separated list of jars>    specify comma separated jar files to include in the classpath.
     160-archives <comma separated list of archives>    specify comma separated archives to be unarchived on the compute machines.
     161
     162The general command line syntax is
     163bin/hadoop command [genericOptions] [commandOptions]
     164}}}
     165 
     166== 2. 使用網頁介面來瀏覽 HDFS 的內容資訊 ==
     167 
     168 * 您亦可透過調閱 [http://localhost:50070 NameNode] 的頁面來查詢方才上傳的檔案內容與 Block Size、File Size、Block Location、Rack Location 等資訊。
     169 
     170== 3. 更多 HDFS shell 的用法 ==
     171 
     172=== -ls ===
     173
     174 * -ls 的操作預設目錄在 /user/${username}/ 下,意思就是您使用的是相對於 /user/${username} 的「相對路徑」
     175{{{
     176Jazz@human ~
     177$ hadoop fs -ls input
     178Found 13 items
     179-rw-r--r--   1 Jazz supergroup       3936 2011-10-21 11:45 /user/Jazz/input/capacity-scheduler.xml
     180-rw-r--r--   1 Jazz supergroup        535 2011-10-21 11:45 /user/Jazz/input/configuration.xsl
     181-rw-r--r--   1 Jazz supergroup        326 2011-10-21 11:45 /user/Jazz/input/core-site.xml
     182-rw-r--r--   1 Jazz supergroup       2409 2011-10-21 11:45 /user/Jazz/input/hadoop-env.sh
     183-rw-r--r--   1 Jazz supergroup       1245 2011-10-21 11:45 /user/Jazz/input/hadoop-metrics.properties
     184-rw-r--r--   1 Jazz supergroup       4190 2011-10-21 11:45 /user/Jazz/input/hadoop-policy.xml
     185-rw-r--r--   1 Jazz supergroup        196 2011-10-21 11:45 /user/Jazz/input/hdfs-site.xml
     186-rw-r--r--   1 Jazz supergroup       2815 2011-10-21 11:45 /user/Jazz/input/log4j.properties
     187-rw-r--r--   1 Jazz supergroup        212 2011-10-21 11:45 /user/Jazz/input/mapred-site.xml
     188-rw-r--r--   1 Jazz supergroup         10 2011-10-21 11:45 /user/Jazz/input/slaves
     189-rw-r--r--   1 Jazz supergroup       1243 2011-10-21 11:45 /user/Jazz/input/ssl-client.xml.example
     190-rw-r--r--   1 Jazz supergroup       1195 2011-10-21 11:45 /user/Jazz/input/ssl-server.xml.example
     191}}}
     192 * 當然您也可以指定「完整路徑」,採用 '''hdfs://node:port/path''' 這種格式。
     193{{{
     194Jazz@human ~
     195$ hadoop fs -ls hdfs://localhost:9000/user/${USER}/input
     196Found 12 items
     197-rw-r--r--   1 Jazz supergroup       3936 2011-10-21 11:45 /user/Jazz/input/capacity-scheduler.xml
     198-rw-r--r--   1 Jazz supergroup        535 2011-10-21 11:45 /user/Jazz/input/configuration.xsl
     199-rw-r--r--   1 Jazz supergroup        326 2011-10-21 11:45 /user/Jazz/input/core-site.xml
     200-rw-r--r--   1 Jazz supergroup       2409 2011-10-21 11:45 /user/Jazz/input/hadoop-env.sh
     201-rw-r--r--   1 Jazz supergroup       1245 2011-10-21 11:45 /user/Jazz/input/hadoop-metrics.properties
     202-rw-r--r--   1 Jazz supergroup       4190 2011-10-21 11:45 /user/Jazz/input/hadoop-policy.xml
     203-rw-r--r--   1 Jazz supergroup        196 2011-10-21 11:45 /user/Jazz/input/hdfs-site.xml
     204-rw-r--r--   1 Jazz supergroup       2815 2011-10-21 11:45 /user/Jazz/input/log4j.properties
     205-rw-r--r--   1 Jazz supergroup        212 2011-10-21 11:45 /user/Jazz/input/mapred-site.xml
     206-rw-r--r--   1 Jazz supergroup         10 2011-10-21 11:45 /user/Jazz/input/slaves
     207-rw-r--r--   1 Jazz supergroup       1243 2011-10-21 11:45 /user/Jazz/input/ssl-client.xml.example
     208-rw-r--r--   1 Jazz supergroup       1195 2011-10-21 11:45 /user/Jazz/input/ssl-server.xml.example
     209}}}
     210
     211=== -cat  ===
     212
     213 * 將路徑指定文件的內容輸出到標準輸出(STDOUT)
     214{{{
     215Jazz@human ~
     216$ hadoop fs -cat input/slaves
     217localhost
     218}}}
     219
     220===  -chgrp  ===
     221
     222 * 改變文件所屬的群組
     223{{{
     224Jazz@human ~
     225$ hadoop fs -ls input/slaves
     226Found 1 items
     227-rw-r--r--   1 Jazz supergroup         10 2011-10-21 11:45 /user/Jazz/input/slaves
     228
     229Jazz@human ~
     230$ hadoop fs -chgrp ${USERNAME} input/slaves
     231
     232Jazz@human ~
     233$ hadoop fs -ls input/slaves
     234Found 1 items
     235-rw-r--r--   1 Jazz Jazz         10 2011-10-21 11:45 /user/Jazz/input/slaves
     236}}}
     237
     238=== -chmod ===
     239
     240 * 改變文件的權限
     241{{{
     242Jazz@human ~
     243$ hadoop fs -ls input/slaves
     244Found 1 items
     245-rw-r--r--   1 Jazz Jazz         10 2011-10-21 11:45 /user/Jazz/input/slaves
     246
     247Jazz@human ~
     248$ hadoop fs -chmod 700 input/slaves
     249
     250Jazz@human ~
     251$ hadoop fs -ls input/slaves
     252Found 1 items
     253-rw-------   1 Jazz Jazz         10 2011-10-21 11:45 /user/Jazz/input/slaves
     254}}}
     255
     256=== -chown ===
     257
     258 * 改變文件的擁有者
     259{{{
     260Jazz@human ~
     261$ hadoop fs -chown hadoop input/slaves
     262
     263Jazz@human ~
     264$ hadoop fs -ls input/slaves
     265Found 1 items
     266-rw-------   1 hadoop Jazz         10 2011-10-21 11:45 /user/Jazz/input/slaves
     267}}}
     268
     269=== -copyFromLocal, -put ===
     270
     271 * 從本機(local)上傳檔案到 HDFS
     272{{{
     273Jazz@human ~
     274$ hadoop fs -put fromHDFS dfs_input
     275
     276Jazz@human ~
     277$ hadoop fs -ls
     278Found 2 items
     279drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:33 /user/Jazz/dfs_input
     280drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:00 /user/Jazz/input
     281}}}
     282
     283=== -copyToLocal, -get ===
     284
     285 * 把 HDFS 上的檔案下載到本機(local)
     286{{{
     287Jazz@human ~
     288$ hadoop fs -get dfs_input input1
     289}}}
     290
     291=== -cp ===
     292
     293 * 將文件從 HDFS 原本路徑複製到 HDFS 目標路徑
     294{{{
     295Jazz@human ~
     296$ hadoop fs -cp dfs_input input1
     297
     298Jazz@human ~
     299$ hadoop fs -ls
     300Found 3 items
     301drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:33 /user/Jazz/dfs_input
     302drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:00 /user/Jazz/input
     303drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:34 /user/Jazz/input1
     304}}}
     305
     306=== -du == =
     307
     308 * 顯示目錄中所有文件的大小
     309{{{
     310Jazz@human ~
     311$ hadoop fs -du input
     312Found 12 items
     3133936        hdfs://localhost:9000/user/Jazz/input/capacity-scheduler.xml
     314535         hdfs://localhost:9000/user/Jazz/input/configuration.xsl
     315326         hdfs://localhost:9000/user/Jazz/input/core-site.xml
     3162409        hdfs://localhost:9000/user/Jazz/input/hadoop-env.sh
     3171245        hdfs://localhost:9000/user/Jazz/input/hadoop-metrics.properties
     3184190        hdfs://localhost:9000/user/Jazz/input/hadoop-policy.xml
     319196         hdfs://localhost:9000/user/Jazz/input/hdfs-site.xml
     3202815        hdfs://localhost:9000/user/Jazz/input/log4j.properties
     321212         hdfs://localhost:9000/user/Jazz/input/mapred-site.xml
     32210          hdfs://localhost:9000/user/Jazz/input/slaves
     3231243        hdfs://localhost:9000/user/Jazz/input/ssl-client.xml.example
     3241195        hdfs://localhost:9000/user/Jazz/input/ssl-server.xml.example
     325}}}
     326
     327=== -dus ===
     328
     329 * 顯示該目錄/文件的總大小
     330{{{
     331Jazz@human ~
     332$ hadoop fs -dus input
     333hdfs://localhost:9000/user/Jazz/input   18312
     334}}}
     335
     336=== -expunge ===
     337
     338 * 清空垃圾桶
     339{{{
     340Jazz@human ~
     341$ hadoop fs -expunge
     342}}}
     343
     344=== -getmerge ===
     345
     346 * 將來源目錄 <src> 下所有的文件都集合到本機一個 <localdst> 檔案內
     347 * 語法:hadoop fs -getmerge <src> <localdst>
     348{{{
     349Jazz@human ~
     350$ mkdir -p in1
     351
     352Jazz@human ~
     353$ echo "this is one; " > in1/input
     354
     355Jazz@human ~
     356$ echo "this is two; " > in1/input2
     357
     358Jazz@human ~
     359$ hadoop fs -put in1 in1
     360
     361Jazz@human ~
     362$ hadoop fs -getmerge in1 merge.txt
     363
     364Jazz@human ~
     365$ cat ./merge.txt
     366this is one;
     367this is two;
     368}}}
     369
     370=== -ls ===
     371
     372 * 列出文件或目錄的資訊
     373 * 文件名 <副本數> 文件大小 修改日期 修改時間 權限 用戶ID 組ID
     374 * 目錄名 <dir> 修改日期 修改時間 權限 用戶ID 組ID
     375{{{
     376Jazz@human ~
     377$ hadoop fs -ls
     378Found 3 items
     379drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:33 /user/Jazz/dfs_input
     380drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:00 /user/Jazz/input
     381drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:34 /user/Jazz/input1
     382}}}
     383
     384=== -lsr ===
     385
     386 * ls 命令的遞迴版本
     387{{{
     388Jazz@human ~
     389$ hadoop fs -lsr
     390drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:33 /user/Jazz/dfs_input
     391-rw-r--r--   1 Jazz supergroup       3936 2011-10-21 12:33 /user/Jazz/dfs_input/capacity-scheduler.xml
     392-rw-r--r--   1 Jazz supergroup        535 2011-10-21 12:33 /user/Jazz/dfs_input/configuration.xsl
     393-rw-r--r--   1 Jazz supergroup        326 2011-10-21 12:33 /user/Jazz/dfs_input/core-site.xml
     394-rw-r--r--   1 Jazz supergroup       2409 2011-10-21 12:33 /user/Jazz/dfs_input/hadoop-env.sh
     395-rw-r--r--   1 Jazz supergroup       1245 2011-10-21 12:33 /user/Jazz/dfs_input/hadoop-metrics.properties
     396-rw-r--r--   1 Jazz supergroup       4190 2011-10-21 12:33 /user/Jazz/dfs_input/hadoop-policy.xml
     397-rw-r--r--   1 Jazz supergroup        196 2011-10-21 12:33 /user/Jazz/dfs_input/hdfs-site.xml
     398-rw-r--r--   1 Jazz supergroup       2815 2011-10-21 12:33 /user/Jazz/dfs_input/log4j.properties
     399-rw-r--r--   1 Jazz supergroup        212 2011-10-21 12:33 /user/Jazz/dfs_input/mapred-site.xml
     400-rw-r--r--   1 Jazz supergroup         10 2011-10-21 12:33 /user/Jazz/dfs_input/masters
     401-rw-r--r--   1 Jazz supergroup         10 2011-10-21 12:33 /user/Jazz/dfs_input/slaves
     402-rw-r--r--   1 Jazz supergroup       1243 2011-10-21 12:33 /user/Jazz/dfs_input/ssl-client.xml.example
     403-rw-r--r--   1 Jazz supergroup       1195 2011-10-21 12:33 /user/Jazz/dfs_input/ssl-server.xml.example
     404drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:40 /user/Jazz/in1
     405-rw-r--r--   1 Jazz supergroup         14 2011-10-21 12:40 /user/Jazz/in1/input
     406-rw-r--r--   1 Jazz supergroup         14 2011-10-21 12:40 /user/Jazz/in1/input2
     407drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:00 /user/Jazz/input
     408-rw-r--r--   1 Jazz   supergroup       3936 2011-10-21 11:45 /user/Jazz/input/capacity-scheduler.xml
     409-rw-r--r--   1 Jazz   supergroup        535 2011-10-21 11:45 /user/Jazz/input/configuration.xsl
     410-rw-r--r--   1 Jazz   supergroup        326 2011-10-21 11:45 /user/Jazz/input/core-site.xml
     411-rw-r--r--   1 Jazz   supergroup       2409 2011-10-21 11:45 /user/Jazz/input/hadoop-env.sh
     412-rw-r--r--   1 Jazz   supergroup       1245 2011-10-21 11:45 /user/Jazz/input/hadoop-metrics.properties
     413-rw-r--r--   1 Jazz   supergroup       4190 2011-10-21 11:45 /user/Jazz/input/hadoop-policy.xml
     414-rw-r--r--   1 Jazz   supergroup        196 2011-10-21 11:45 /user/Jazz/input/hdfs-site.xml
     415-rw-r--r--   1 Jazz   supergroup       2815 2011-10-21 11:45 /user/Jazz/input/log4j.properties
     416-rw-r--r--   1 Jazz   supergroup        212 2011-10-21 11:45 /user/Jazz/input/mapred-site.xml
     417-rw-------   1 hadoop Jazz               10 2011-10-21 11:45 /user/Jazz/input/slaves
     418-rw-r--r--   1 Jazz   supergroup       1243 2011-10-21 11:45 /user/Jazz/input/ssl-client.xml.example
     419-rw-r--r--   1 Jazz   supergroup       1195 2011-10-21 11:45 /user/Jazz/input/ssl-server.xml.example
     420drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:34 /user/Jazz/input1
     421-rw-r--r--   1 Jazz supergroup       3936 2011-10-21 12:34 /user/Jazz/input1/capacity-scheduler.xml
     422-rw-r--r--   1 Jazz supergroup        535 2011-10-21 12:34 /user/Jazz/input1/configuration.xsl
     423-rw-r--r--   1 Jazz supergroup        326 2011-10-21 12:34 /user/Jazz/input1/core-site.xml
     424-rw-r--r--   1 Jazz supergroup       2409 2011-10-21 12:34 /user/Jazz/input1/hadoop-env.sh
     425-rw-r--r--   1 Jazz supergroup       1245 2011-10-21 12:34 /user/Jazz/input1/hadoop-metrics.properties
     426-rw-r--r--   1 Jazz supergroup       4190 2011-10-21 12:34 /user/Jazz/input1/hadoop-policy.xml
     427-rw-r--r--   1 Jazz supergroup        196 2011-10-21 12:34 /user/Jazz/input1/hdfs-site.xml
     428-rw-r--r--   1 Jazz supergroup       2815 2011-10-21 12:34 /user/Jazz/input1/log4j.properties
     429-rw-r--r--   1 Jazz supergroup        212 2011-10-21 12:34 /user/Jazz/input1/mapred-site.xml
     430-rw-r--r--   1 Jazz supergroup         10 2011-10-21 12:34 /user/Jazz/input1/masters
     431-rw-r--r--   1 Jazz supergroup         10 2011-10-21 12:34 /user/Jazz/input1/slaves
     432-rw-r--r--   1 Jazz supergroup       1243 2011-10-21 12:34 /user/Jazz/input1/ssl-client.xml.example
     433-rw-r--r--   1 Jazz supergroup       1195 2011-10-21 12:34 /user/Jazz/input1/ssl-server.xml.example
     434}}}
     435=== -mkdir ===
     436
     437 * 建立資料夾
     438{{{
     439Jazz@human ~
     440$ hadoop fs -mkdir tmp
     441Jazz@human ~
     442$ hadoop fs -ls
     443Found 5 items
     444drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:33 /user/Jazz/dfs_input
     445drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:40 /user/Jazz/in1
     446drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:00 /user/Jazz/input
     447drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:34 /user/Jazz/input1
     448drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:43 /user/Jazz/tmp
     449}}}
     450
     451=== -moveFromLocal ===
     452
     453 * 將 local 端的資料夾剪下移動到 HDFS 上
     454{{{
     455Jazz@human ~
     456$ hadoop fs -moveFromLocal in1 in2
     457Jazz@human ~
     458$ hadoop fs -ls
     459Found 6 items
     460drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:33 /user/Jazz/dfs_input
     461drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:40 /user/Jazz/in1
     462drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:44 /user/Jazz/in2
     463drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:00 /user/Jazz/input
     464drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:34 /user/Jazz/input1
     465drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:43 /user/Jazz/tmp
     466}}}
     467
     468=== -mv ===
     469
     470 * 更改資料的名稱
     471{{{
     472Jazz@human ~
     473$ hadoop fs -mv in2 in3
     474
     475Jazz@human ~
     476$ hadoop fs -ls
     477Found 6 items
     478drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:33 /user/Jazz/dfs_input
     479drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:40 /user/Jazz/in1
     480drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:44 /user/Jazz/in3
     481drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:00 /user/Jazz/input
     482drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:34 /user/Jazz/input1
     483drwxr-xr-x   - Jazz supergroup          0 2011-10-21 12:43 /user/Jazz/tmp
     484}}}
     485
     486=== -rm ===
     487
     488 * 刪除指定的檔案(不能是資料夾)
     489{{{
     490Jazz@human ~
     491$ hadoop fs -rm in1/input
     492Deleted hdfs://localhost:9000/user/Jazz/in1/input
     493}}}
     494
     495=== -rmr ===
     496
     497 * 遞迴刪除資料夾(包含在內的所有檔案),可以是多個資料夾
     498{{{
     499Jazz@human ~
     500$ hadoop fs -rmr dfs_input in1 in3 input1
     501Deleted hdfs://localhost:9000/user/Jazz/dfs_input
     502Deleted hdfs://localhost:9000/user/Jazz/in1
     503Deleted hdfs://localhost:9000/user/Jazz/in3
     504Deleted hdfs://localhost:9000/user/Jazz/input1
     505}}}
     506
     507=== -setrep ===
     508
     509 * 設定副本係數
     510 * 語法:hadoop fs -setrep [-R] [-w] <rep> <path/file>
     511{{{
     512Jazz@human ~
     513$ hadoop fs -setrep -w 1 -R input
     514Replication 1 set: hdfs://localhost:9000/user/Jazz/input/capacity-scheduler.xml
     515Replication 1 set: hdfs://localhost:9000/user/Jazz/input/configuration.xsl
     516Replication 1 set: hdfs://localhost:9000/user/Jazz/input/core-site.xml
     517Replication 1 set: hdfs://localhost:9000/user/Jazz/input/hadoop-env.sh
     518Replication 1 set: hdfs://localhost:9000/user/Jazz/input/hadoop-metrics.properties
     519Replication 1 set: hdfs://localhost:9000/user/Jazz/input/hadoop-policy.xml
     520Replication 1 set: hdfs://localhost:9000/user/Jazz/input/hdfs-site.xml
     521Replication 1 set: hdfs://localhost:9000/user/Jazz/input/log4j.properties
     522Replication 1 set: hdfs://localhost:9000/user/Jazz/input/mapred-site.xml
     523Replication 1 set: hdfs://localhost:9000/user/Jazz/input/slaves
     524Replication 1 set: hdfs://localhost:9000/user/Jazz/input/ssl-client.xml.example
     525Replication 1 set: hdfs://localhost:9000/user/Jazz/input/ssl-server.xml.example
     526Waiting for hdfs://localhost:9000/user/Jazz/input/capacity-scheduler.xml ... done
     527Waiting for hdfs://localhost:9000/user/Jazz/input/configuration.xsl ... done
     528Waiting for hdfs://localhost:9000/user/Jazz/input/core-site.xml ... done
     529Waiting for hdfs://localhost:9000/user/Jazz/input/hadoop-env.sh ... done
     530Waiting for hdfs://localhost:9000/user/Jazz/input/hadoop-metrics.properties ...done
     531Waiting for hdfs://localhost:9000/user/Jazz/input/hadoop-policy.xml ... done
     532Waiting for hdfs://localhost:9000/user/Jazz/input/hdfs-site.xml ... done
     533Waiting for hdfs://localhost:9000/user/Jazz/input/log4j.properties ... done
     534Waiting for hdfs://localhost:9000/user/Jazz/input/mapred-site.xml ... done
     535Waiting for hdfs://localhost:9000/user/Jazz/input/slaves ... done
     536Waiting for hdfs://localhost:9000/user/Jazz/input/ssl-client.xml.example ... done
     537Waiting for hdfs://localhost:9000/user/Jazz/input/ssl-server.xml.example ... done
     538$ bin/hadoop fs -setrep -w 2 -R input
     539Replication 2 set: hdfs://gm1.nchc.org.tw:9000/user/hadooper/input/1.txt
     540Replication 2 set: hdfs://gm1.nchc.org.tw:9000/user/hadooper/input/2.txt
     541Replication 2 set: hdfs://gm1.nchc.org.tw:9000/user/hadooper/input/3.txt
     542Replication 2 set: hdfs://gm1.nchc.org.tw:9000/user/hadooper/input/4.txt
     543Waiting for hdfs://gm1.nchc.org.tw:9000/user/hadooper/input/1.txt ... done
     544Waiting for hdfs://gm1.nchc.org.tw:9000/user/hadooper/input/2.txt ... done
     545Waiting for hdfs://gm1.nchc.org.tw:9000/user/hadooper/input/3.txt ... done
     546Waiting for hdfs://gm1.nchc.org.tw:9000/user/hadooper/input/4.txt ... done
     547}}}
     548
     549=== -stat ===
     550
     551 * 印出時間資訊
     552{{{
     553Jazz@human ~
     554$ hadoop fs -stat input
     5552011-10-21 04:00:44
     556}}}
     557
     558=== -tail ===
     559
     560 * 將文件的最後1k內容輸出
     561 * 用法:hadoop fs -tail [-f] 檔案 (-f 參數用來顯示如果檔案增大,則秀出被append上得內容)
     562{{{
     563Jazz@human ~
     564$ hadoop fs -tail input/log4j.properties
     565g4j.RollingFileAppender
     566#log4j.appender.RFA.File=${hadoop.log.dir}/${hadoop.log.file}
     567
     568# Logfile size and and 30-day backups
     569#log4j.appender.RFA.MaxFileSize=1MB
     570#log4j.appender.RFA.MaxBackupIndex=30
     571
     572#log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
     573#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
     574#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L))
     575- %m%n
     576
     577#
     578# FSNamesystem Audit logging
     579# All audit events are logged at INFO level
     580#
     581log4j.logger.org.apache.hadoop.fs.FSNamesystem.audit=WARN
     582
     583# Custom Logging levels
     584
     585#log4j.logger.org.apache.hadoop.mapred.JobTracker=DEBUG
     586#log4j.logger.org.apache.hadoop.mapred.TaskTracker=DEBUG
     587#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG
     588
     589# Jets3t library
     590log4j.logger.org.jets3t.service.impl.rest.httpclient.RestS3Service=ERROR
     591
     592#
     593# Event Counter Appender
     594# Sends counts of logging messages at different severity levels to Hadoop Metric
     595s.
     596#
     597log4j.appender.EventCounter=org.apache.hadoop.metrics.jvm.EventCounter
     598}}}
     599
     600=== -test ===
     601
     602 * 測試檔案, -e 檢查文件是否存在(1=存在, 0=否), -z 檢查文件是否為空(1=空, 0=不為空), -d 檢查是否為目錄(1=存在, 0=否)
     603   * 要用echo $? 來看回傳值為 0 or 1
     604 * 用法: bin/hadoop fs -test -[ezd] URI
     605{{{
     606########## -e 用來判斷檔案是否存在,回傳 0 為真,回傳 1 為偽 ##########
     607
     608Jazz@human ~
     609$ hadoop fs -test -e input/slaves
     610
     611Jazz@human ~
     612$ echo $?
     6130
     614
     615Jazz@human ~
     616$ hadoop fs -test -e input/masters
     617
     618Jazz@human ~
     619$ echo $?
     6201
     621
     622########## -z 用來判斷檔案大小是否為零,回傳 0 為真,回傳 1 為偽 ##########
     623
     624Jazz@human ~
     625$ hadoop fs -test -z  input/slaves
     626
     627Jazz@human ~
     628$ echo $?
     6291
     630
     631Jazz@human ~
     632$ hadoop fs -test -z  input/masters
     633test: File does not exist: input/masters
     634
     635########## -d 用來判斷是不是目錄,回傳 0 為真,回傳 1 為偽 ##########
     636
     637Jazz@human ~
     638$ hadoop fs -test -d input/slaves
     639
     640Jazz@human ~
     641$ echo $?
     6421
     643
     644Jazz@human ~
     645$ hadoop fs -test -d input
     646
     647Jazz@human ~
     648$ echo $?
     6490
     650
     651}}}
     652
     653=== -text ===
     654
     655 * 將檔案(如壓縮檔, textrecordinputstream)輸出為純文字格式
     656 * hadoop fs -text <src>
     657{{{
     658Jazz@human ~
     659$ tar zcvf input.tar.gz input1
     660input1/
     661input1/capacity-scheduler.xml
     662input1/configuration.xsl
     663input1/core-site.xml
     664input1/hadoop-env.sh
     665input1/hadoop-metrics.properties
     666input1/hadoop-policy.xml
     667input1/hdfs-site.xml
     668input1/log4j.properties
     669input1/mapred-site.xml
     670input1/masters
     671input1/slaves
     672input1/ssl-client.xml.example
     673input1/ssl-server.xml.example
     674Jazz@human ~
     675$ hadoop fs -put input1.tar.gz .
     676Jazz@human ~
     677$ hadoop fs -text input.tar.gz
     678<略>
     679}}}
     680 * 註:目前沒支援 zip 的函式庫
     681{{{
     682Jazz@human ~
     683$ zip -r input1.zip input1/
     684updating: input1/ (stored 0%)
     685  adding: input1/capacity-scheduler.xml (deflated 71%)
     686  adding: input1/configuration.xsl (deflated 50%)
     687  adding: input1/core-site.xml (deflated 46%)
     688  adding: input1/hadoop-env.sh (deflated 58%)
     689  adding: input1/hadoop-metrics.properties (deflated 78%)
     690  adding: input1/hadoop-policy.xml (deflated 83%)
     691  adding: input1/hdfs-site.xml (deflated 35%)
     692  adding: input1/log4j.properties (deflated 67%)
     693  adding: input1/mapred-site.xml (deflated 34%)
     694  adding: input1/masters (stored 0%)
     695  adding: input1/slaves (stored 0%)
     696  adding: input1/ssl-client.xml.example (deflated 79%)
     697  adding: input1/ssl-server.xml.example (deflated 78%)
     698Jazz@human ~
     699$ hadoop fs -put input1.zip .
     700Jazz@human ~
     701$ hadoop fs -text input1.zip
     702PK
     703<略>
     704}}}
     705
     706=== -touchz ===
     707
     708 * 建立一個空文件
     709{{{
     710Jazz@human ~
     711$ hadoop fs -touchz empty
     712
     713Jazz@human ~
     714$ hadoop fs -test -z empty ; echo $?
     7150
     716}}}