hadoop中对hdfs的shell操作--block--配置参数--启动问题

来源:互联网 发布:io是什么域名 编辑:程序博客网 时间:2024/04/27 19:52
1.对hdfs操作的命令格式是hadoop fs 
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是改变组)

0 0
原创粉丝点击