一、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上的文件> <hdfs路径> 上传文件
-copyFromLocal -copyFromLocal <多个linux上的文件> <hdfs路径> 从本地复制
-moveFromLocal -moveFromLocal <多个linux上的文件> <hdfs路径> 从本地移动
-getmerge -getmerge <源路径> <linux路径> 合并到本地
-cat -cat <hdfs路径> 查看文件内容
-text -text <hdfs路径> 查看文件内容
-copyToLocal -copyToLocal [-ignoreCrc] [-crc] [hdfs源路径] [linux目的路径] 从本地复制
-moveToLocal -moveToLocal [-crc] <hdfs源路径> <linux目的路径> 从本地移动
-mkdir -mkdir <hdfs路径> 创建空白文件夹
-setrep -setrep [-R] [-w] <副本数> <路径> 修改副本数量
-touchz -touchz <文件路径> 创建空白文件
-stat -stat [format] <路径> 显示文件统计信息
-tail -tail [-f] <文件> 查看文件尾部信息
-chmod -chmod [-R] <权限模式> [路径] 修改权限
-chown -chown [-R] [属主][:[属组]] 路径 修改属主
-chgrp -chgrp [-R] 属组名称 路径 修改属组
-help -help [命令选项] 帮助
与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上的文件> <hdfs路径> 上传文件
-copyFromLocal -copyFromLocal <多个linux上的文件> <hdfs路径> 从本地复制
-moveFromLocal -moveFromLocal <多个linux上的文件> <hdfs路径> 从本地移动
-getmerge -getmerge <源路径> <linux路径> 合并到本地
-cat -cat <hdfs路径> 查看文件内容
-text -text <hdfs路径> 查看文件内容
-copyToLocal -copyToLocal [-ignoreCrc] [-crc] [hdfs源路径] [linux目的路径] 从本地复制
-moveToLocal -moveToLocal [-crc] <hdfs源路径> <linux目的路径> 从本地移动
-mkdir -mkdir <hdfs路径> 创建空白文件夹
-setrep -setrep [-R] [-w] <副本数> <路径> 修改副本数量
-touchz -touchz <文件路径> 创建空白文件
-stat -stat [format] <路径> 显示文件统计信息
-tail -tail [-f] <文件> 查看文件尾部信息
-chmod -chmod [-R] <权限模式> [路径] 修改权限
-chown -chown [-R] [属主][:[属组]] 路径 修改属主
-chgrp -chgrp [-R] 属组名称 路径 修改属组
-help -help [命令选项] 帮助