1.1 -ls<path>表示对hdfs下一级目录的查看
1.2 -lsr <path> 表示对hdfs目录的递归查看
1.3 -mkdir<path>创建目录
1.4 -put <src> <des> 从linux上传文件到hdfs
1.5 -get <src> <des> 从hdfs下载文件到linux
1.6 -text <path> 查看文件内容
1.7 -rm <path> 表示删除文件
1.7 -rmr<path>表示递归删除文件
01、这里比如hadoop fs -lsr / 这种的话是省略写法,它会自动去找所操作的机子上的fs.default.name这个属性的值,查到后就自动加上了:hdfs://hadooptest:9000。全写法是:hadoop fs -lsr hdfs://hadooptest:9000/
02、例外:删除根目录的时候,只能这么写:
hadoop fs -rmr hdfs://hadooptest:9000/*
删除其他具体文件或文件夹可以不用写全
03、HDFS fs命令
-help[cmd] //显示命令的帮助信息
-ls(r)<path> //显示当前目录下所有文件
-du(s)<path> //显示目录中所有文件大小
-count[-q]<path> //显示目录中文件数量
-mv<src> <dst> //移动多个文件到目标目录
-cp<src> <dst> //复制多个文件到目标目录
-rm(r) //删除文件(夹)
-put<localsrc> <dst> //本地文件复制到hdfs
-copyFromLocal //同put
-moveFromLocal //从本地文件移动到hdfs
-get[-ignoreCrc] <src> <localdst> //复制文件到本地,可以忽略crc校验
-getmerge<src> <localdst> //将源目录中的所有文件排序合并到一个文件中
-cat<src> //在终端显示文件内容
-text<src> //在终端显示文件内容
-copyToLocal[-ignoreCrc] <src> <localdst> //复制到本地
-moveToLocal<src> <localdst>
-mkdir<path> //创建文件夹
-touchz<path> //创建一个空文件
----------------------------------------------------理解block--------------------------------------------------
在linux下,文件:
首先:通过hadoop fs -put /test/hadoop-1.1.2.tar.gz /test/test2
hadoop fs -put /test/jdk-6u24-linux-i586.bin /test/test2
命令上传到hdfs的test/test2目录下
然后在linux系统下查看上传的文件:进入/test/tmp/dfs/data/current
可以看到:
可以看到hadoop-1.1.2.tar.gz大小是61927560,但是这里设置的块大小是67108864,所以没有达到一个块大小,所以占用一个块了,但是是实际大小。
jdk-6u24-linux-i586.bin大小是84927175,大于一个块大小,所以被分成两个块。已经分好的块,不会再扩展了,就是形成这么一个块了,大小不会再变了,比如这里的17818311大小的这个块,大小就已经不会变了。
.meta文件相当于一个验证文件(和md5验证差不多吧)。
总结:hdfs在对数据存储进行block划分时,如果文件大小超过block,那么按照block大小进行划分;不到block size的,划分为一个块,是实际数据大小。
---------------------------------------相关配置作用----------------------------------------------------------
hadoop.tmp.dir
dfs.replication 副本数
dfs.permissions 权限
dfs.block.size 一个block块大小
fs.checkpoint.size 检查点触发最大edits文件的大小
fs.checkpoint.period 检查点触发的时间
---------------------------------------namenode启动出问题的话-----------------------------------------
14 04:54:45,013 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
java.io.FileNotFoundException: /test/tmp/dfs/name/current/VERSION (Permission denied)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212)
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.read(Storage.java:219)
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.read(Storage.java:215)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:314)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:100)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:411)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:379)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:284)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:536)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1410)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1419)
2015-01-14 04:54:45,014 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.io.FileNotFoundException: /test/tmp/dfs/name/current/VERSION (Permission denied)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212)
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.read(Storage.java:219)
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.read(Storage.java:215)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:314)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:100)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:411)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:379)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:284)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:536)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1410)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1419)
这个主要是因为刚开始用了root启动,但是本来应该是hadoop用户的,所以把权限改为hadoop就可以了
直接chown -R hadoop file 。
(扩展:chown -R hadoop:hadoop file 是改变用户和组,chgrp -R hadoop file是改变组)