通过shell命令来控制hdfs

<1>. hadoop文件系统权限简介 

hadoop文件系统实现的文件权限模型和posix模型极其类似。每个文件和目录和一个owner和group相关联。可以使用下面的命令来查看/tmp/目录下的所有文件及其权限:

xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop fs -ls /tmp/
11/05/10 06:42:56 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
11/05/10 06:42:56 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
Found 2 items
drwxr-xr-x   - root    supergroup          0 2011-05-10 05:36 /tmp/hadoop-root
-rw-r--r--   3 xuqiang supergroup        541 2011-05-10 06:14 /tmp/hello.c

其中对于文件而言,r表明的是读取该文件的权限,w是写该文件的权限;对于目录而言的话,r权限表明的是能够读取该目录下的文件列表,w权限表明的是能够在目录下创建或者是删除文件和目录,x权限表示能够从该目录进入其子目录中。和posix模型不同的是,在hdfs中是不存在所谓的sticky,setuid和setgid。

<2>. 命令简介

hdfs设计之处的主要目的是对海量数据进行处理,也就是说在其上能够存储很大量文件(可以存储TB级的文件),hdfs将这些文件分割之后,存储在不同的DataNode上,但是对外却提供了一个简单的事实:

这还是个简单完整的文件,只不过这个文件比较大。

hdfs处理文件的命令和linux上命令基本上是相同的,键入./bin/hadoop fs将输出能够支持的命令的列表:

Usage: java FsShell
           [-ls <path>]
           [-lsr <path>]
           [-df [<path>]]
           [-du [-s] [-h] <path>]
           [-dus <path>]         
           [-count[-q] <path>]   
           [-mv <src> <dst>]     
           [-cp <src> <dst>]     
           [-rm [-skipTrash] <path>]
           [-rmr [-skipTrash] <path>]
           [-expunge]                
           [-put <localsrc> ... <dst>]
           [-copyFromLocal <localsrc> ... <dst>]
           [-moveFromLocal <localsrc> ... <dst>]
           [-get [-ignoreCrc] [-crc] <src> <localdst>]
           [-getmerge <src> <localdst> [addnl]]       
           [-cat <src>]                               
           [-text <src>]                              
           [-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>]
           [-moveToLocal [-crc] <src> <localdst>]             
           [-mkdir <path>]                                    
           [-setrep [-R] [-w] <rep> <path/file>]              
           [-touchz <path>]                                   
           [-test -[ezd] <path>]                              
           [-stat [format] <path>]                            
           [-tail [-f] <file>]                                
           [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
           [-chown [-R] [OWNER][:[GROUP]] PATH...]
           [-chgrp [-R] GROUP PATH...]
           [-help [cmd]]

如果熟悉linux的话,这些命令基本上就不怎么需要解释了。 但是下面还是列出了几个常用场景下的命令:

1. 增加文件和目录

hdfs上的文件的目录结构同样也是类似于linux的,根目录使用/表示。下面的命令将在根目录下建立目录newdir:

./bin/hadoop fs -mkdir /newdir

ls查看一下:

 xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop fs -ls /

11/06/01 18:04:11 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
11/06/01 18:04:11 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
Found 3 items
drwxr-xr-x   - xuqiang supergroup          0 2011-06-01 17:31 /jobtracker
drwxr-xr-x   - xuqiang supergroup          0 2011-06-01 18:04 /newdir
drwxr-xr-x   - xuqiang supergroup          0 2011-06-01 17:31 /tmp
既然已经有了这个目录,那么我们接着将一个本地文件local file上传到hdfs上。

xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop fs -put ./README.txt . 

这里需要注意的是.代表的含义,在hdfs中对于每个登录的用户都会存在一个默认的工作目录/user/$LOGINNAME(类似于linux下的home目录),.代表的就是这个默认工作目录。

2. 下载文件

xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop fs -get /user/xuqiang/README.txt
3. 删除文件
xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop fs -rm /user/xuqiang/README.txt
4. 帮助命令
xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop fs -help ls
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值