HDFS的常用操作

一、HDFS文件的权限
与Linux文件权限类似
r: read; w:write; x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容。
如果Linux系统用户hdp使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是hdp。
HDFS的权限目的:阻止好人错错事,而不是阻止坏人做坏事;HDFS相信,你告诉我你是谁,我就认为你是谁。

二、HDFS下的文件操作
1、列出HDFS文件
通过“-ls”命令列出HDFS下的文件
bin/hadoop dfs -ls
bin/hadoop fs -lsr /user/admin/hdfs
注意:在HDFS中未带参数的“-ls”命令没有返回任何值,它默认返回HDFS的“home”目录下的内容。 在HDFS中,没有当前工作目录这样的概念,也没有cd这个命令。

2、列出HDFS目录下某个文档中的文件
此处展示的是“-ls  文件名”命令浏览HDFS下名为in的文档中的文件
$ bin/hadoop dfs -ls in

3、上传文件到HDFS
此处展示的是“-put  文件1  文件2”命令将hadoop-0.20.2目录下的test1文件上传到HDFS上并重命名为test
$ bin/hadoop dfs -put test1 test
注意:在执行“-put”时只有两种可能,即是执行成功和执行失败。在上传文件时,文件首先复制到DataNode上,只有所有的DataNode都成功接收完数据,文件上传才是成功的。

4、将HDFS中的文件复制到本地系统中
此处展示的是“-get  文件1  文件2”命令将HDFS中的in文件复制到本地系统并命名为getin:
$ bin/hadoop dfs -get in getin

5、删除HDFS下的文档
此处展示的是“-rmr  文件”命令删除HDFS下名为out的文档:
$ bin/hadoop dfs -rmr out

6、查看HDFS下的某个文件
此处展示的是“-cat  文件”命令查看HDFS下in文件中的内容:
$ bin/hadoop dfs -cat in/*
输出:
hello world
hello hadoop

PS:bin/hadoop dfs 的命令远不止这些,对于其他的操作,可以通过“-help commandName”命令所列出的清单查看

三、管理与更新
1、报告HDFS的基本统计信息
通过“-report”命令查看HDFS的基本统计信息:
$ bin/hadoop dfsadmin -report

2、退出安全模式
NameNode在启动时会自动进入安全模式。安全模式是NameNode的一种状态,在这个阶段,文件系统不允许有任何的修改。安全模式的目的是在系统启动时检查各个DataNode上数据块的有效性,同时根据策略对数据块进行必要的复制和删除,当数据块的最小百分比数满足配置的最小副本数条件时,会自动退出安全模式。
$ bin/hadoop dfsadmin -safemode leave

3、进入安全模式
$ bin/hadoop dfsadmin -safemode enter

4、添加节点
可扩展性是HDFS的一个重要的特性,向HDFS集群中添加节点是很容易实现的。添加一个新的DataNode节点,首先在新加的节点上安装好hadoop,要和NameNode使用相同的配置,修改HADOOP_HOME/conf/master文件,加入NameNode主机名。然后在NameNode节点上修改HADOOP_HOME/conf/slaves文件,加入新节点主机名。再建立到新节点无密码SSH连接,运行启动命令:
$ bin/start-all.sh
通过http://(主机名):50070可查看到新的DataNode节点添加成功

5、负载均衡
用户可以使用下面的命令来重新平衡DataNode上的数据块的分布:
$ bin/start-balancer.sh

四、其他相关有用命令
1.count
hadoop fs -count < hdfs path >
统计hdfs对应路径下的目录个数,文件个数,文件总计大小 显示为目录个数,文件个数,文件总计大小,输入路径

2.put
hadoop fs -put < local file > < hdfs file >
hdfs file的父目录一定要存在,否则命令不会执行

hadoop fs -put  < local file or dir >...< hdfs dir >
hdfs dir 一定要存在,否则命令不会执行

hadoop fs -put - < hdsf  file>
从键盘读取输入到hdfs file中,按Ctrl+D结束输入,hdfs file不能存在,否则命令不会执行

2.1.moveFromLocal
hadoop fs -moveFromLocal  < local src > ... < hdfs dst >
与put相类似,命令执行后源文件 local src 被删除,也可以从从键盘读取输入到hdfs file中

2.2.copyFromLocal
hadoop fs -copyFromLocal  < local src > ... < hdfs dst >
与put相类似,也可以从从键盘读取输入到hdfs file中

3.get
hadoop fs -get < hdfs file > < local file or dir>
local file不能和 hdfs file名字不能相同,否则会提示文件已存在,没有重名的文件会复制到本地

hadoop fs -get < hdfs file or dir > ... < local  dir >
拷贝多个文件或目录到本地时,本地要为文件夹路径
注意:如果用户不是root, local 路径要为用户文件夹下的路径,否则会出现权限问题,

3.1.moveToLocal
当前版本中还未实现此命令

3.2.copyToLocal
hadoop fs -copyToLocal < local src > ... < hdfs dst >
与get相类似

4.distcp
用来在两个HDFS之间拷贝数据

5.setrep
hadoop fs -setrep -R 3 < hdfs path >
改变一个文件在hdfs中的副本个数,上述命令中数字3为所设置的副本个数,-R选项可以对一个人目录下的所有目录+文件递归执行改变副本个数的操作

五、附HDFS常用命令集合使用格式及含义
-ls      -ls <路径>      查看指定路径的当前目录结构
-lsr      -lsr <路径>      递归查看指定路径的目录结构
-du      -du <路径>      统计目录下个文件大小
-dus      -dus <路径>      汇总统计目录下文件(夹)大小
-count      -count [-q] <路径>      统计文件(夹)数量
-mv      -mv <源路径> <目的路径>      移动
-cp      -cp <源路径> <目的路径>      复制
-rm      -rm [-skipTrash] <路径>      删除文件/空白文件夹
-rmr      -rmr [-skipTrash] <路径>      递归删除
-put      -put <多个linux上的文件>      上传文件
-copyFromLocal      -copyFromLocal <多个linux上的文件>      从本地复制
-moveFromLocal      -moveFromLocal <多个linux上的文件>      从本地移动
-getmerge      -getmerge <源路径>      合并到本地
-cat      -cat      查看文件内容
-text      -text      查看文件内容
-copyToLocal      -copyToLocal [-ignoreCrc] [-crc] [hdfs源路径] [linux目的路径]      从本地复制
-moveToLocal      -moveToLocal [-crc]      从本地移动
-mkdir      -mkdir      创建空白文件夹
-setrep      -setrep [-R] [-w] <副本数> <路径>      修改副本数量
-touchz      -touchz <文件路径>      创建空白文件
-stat      -stat [format] <路径>      显示文件统计信息
-tail      -tail [-f] <文件>      查看文件尾部信息
-chmod      -chmod [-R] <权限模式> [路径]      修改权限
-chown      -chown [-R] [属主][:[属组]] 路径      修改属主
-chgrp      -chgrp [-R] 属组名称 路径      修改属组
-help      -help [命令选项]      帮助

你可能感兴趣的:(Hadoop,#,Hdfs)