HDFS Basic Operation
1、如何启动一个命令行的hadoop客户端
任何一个Hadoop集群中的节点,只要有hadoop安装包,就可以通过# hadoop fs来启动
2、Hadoop基本命令格式
# hadoop fs -cmd <args>
3、上传文件到HDFS 集群
hadoop fs -put
# hadoop fs -put 本地文件 hdfs文件 # hdfs文件的父目录一定要存在,否则不执行
# hadoop fs -put 本地文件/目录 hdfs目录 # hdfs目录一定要存在,否则不执行
# hadoop fs -put - hdfs文件 # - 表示从键盘读取输入, 保存到hdfs文件,ctrl+d结束,hdfs文件不能存在,否则不执行
hadoop fs -moveFromLocal
# hadoop fs -moveFromLocal <local src> ….. <hdfs dst>
和put命令类似,命令执行后源文件从本地删除,也可以从键盘读取输入
hadoop fs -copyFromLocal
# hadoop fs -copyFromLocal <local src>…. <hdfs dst>
4、 从HDFS集群下载文件
hadoop fs -get <hdfs file> <local file or dir>
# local file不能和hdfs file重名,否则提示文件已存在,不重名才下载
# localfile不写则下载到本地的当前目录,生成同名文件
hadoop fs -get <hdfs file> …….. <local dir>
下载多个hdfs文件到本地目录
注意:如果不是root用户,要使用本用户的本地目录,权限问题
hadoop fs -copyToLocal <hdfs src>…..<local dst>
5、 查看HDFS集群文件目录 hadoop fs -ls /
# hadoop fs -ls / 列出根目录下的目录和文件
# hadoop fs -ls -R / -R,recursively
6、 创建HDFS下的目录 hadoop fs -mkdir
# hadoop fs –mkdir <hdfs path> # 一级一级创建,父目录不存在会报错
# hadoop fs -mkdir -p <hdfs path> # 递归创建多级目录,从外到内
7、 删除HDFS下的目录或文件 hadoop fs –rm –r
# hadoop fs -rm <hdfs file>…… # 每次可以删除多个文件
# hadoop fs –rm –r <hdfs dir> ……. # 每次可以删除多个目录
# hadoop fs -rmr <hdfs dir>…….. # -rmr = -rm -r
8 、HDFS内的文件拷贝 hadoop fs -cp
# hadoop fs –cp <hdfs src> <hdfs dst>
目标文件不能存在,否则命令不执行(给源文件重命名并保存)
# hadoop fs –cp <hdfs file or dir> <hdfs dir>
目标目录要存在,否则不执行
9、 HDFS中的文件移动 hadoop fs -mv
# hadoop fs -mv <hdfs file> <hdfs file>
目标文件不能存在(文件重命名并保存,源文件不存在)
# hadoop fs –mv <hdfs file or dir> …… <hdfs dir>
源文件多个,目标必须是目录,且必须存在
10、 HDFS中的文件统计
hadoop fs -count
# hadoop fs –count <hdfs path>
统计路径下的:目录个数、文件个数、文件总计大小
hadoop fs -du
# hadoop fs –du <hdfs path>
每个文件夹和文件的大小, -du disk usage
# hadoop fs –du –h <hdfs path>
每个文件夹和文件的大小,-h human readable
# hadoop fs –du –s <hdfs path>
所有文件的和的大小, -s, summary
11、 HDFS文件以文本格式输出 hadoop fs –text
# hadoop fs –text <hdfs file>
将文本文件或某些格式的非文本文件,通过文本格式输出到console
12、 修改HDFS文件副本数 hadoop fs – setrep 2
# hadoop fs –setrep –R 2 <hdfs path>
将指定目录下的文件做递归修改,-R recursively, 2修改后的副本数
13、 HDFS多个文件排序合并到本地文件 hadoop fs -getmerge
# hadoop fs –getmerge <hdfs dir> <local file>
将hdfs指定目录下的所有文件排序后合并输出到指定本地文件,文件不存在则自动创建,存在则覆盖写入
# hadoop fs –getmerge –nl <hdfs dir> <local file>
合并到local file中的不同hdfs文件之间会空出一行