如何操作HDFS?
Apache Hadoop HDFS提供了两种方式:
① shell操作hdfs
② Java等语言的API支持
使用shell操作hdfs
两个重要命令:
hadoop
命令格式:hadoop fs [选项] [参数]
hdfs
命令格式:hdfs dfs [选项] [参数]
常使用命令
: hdfs dfsadmin -report : 查看整个集群的信息
hdfs getconf -confKey 键:查看块配置信息
使用hdfs dfs [选项] 操作HDFS目录树
注:hdfs dfs ...相当于hadoop fs ...
Part One
如何实现HDFS中文件的创建、查看,目录结构与文件列表的查看等?
-ls:查看目录树结构与文件列表 -R 递归查看
-mkdir:创建目录 -p 级联创建
-touchz:创建文件
-cp:在hdfs文件系统中进行复制
-mv:在hdfs文件系统中进行移动
-rm:在hdfs文件系统中进行文件删除 -r -f
-rmdir:在hdfs文件系统中进行空文件夹删除
-cat:打印内容
-tail:查看末尾n行
-text:字符串形式打印内容(例如文本文件压缩之后仍旧可以直接查看该文件的内容)
hdfs dfs -ls /
[hadoop@mycat01 current]$ hdfs dfs -ls /
Found 5 items
-rw-r--r-- 2 hadoop hadoop 8 2019-03-07 03:52 /1.txt
-rw-r--r-- 3 hadoop hadoop 0 2019-03-06 19:29 /git.docx
drwxr-xr-x - hadoop hadoop 0 2019-03-06 09:45 /mktest
drwx------ - hadoop hadoop 0 2019-03-05 20:14 /tmp
drwxr-xr-x - hadoop hadoop 0 2019-03-05 20:53 /user
hdfs dfs -cat 1.txt
[hadoop@mycat01 current]$ hdfs dfs -cat 1.txt
9884903
hdfs dfs -rm -r -f /git.docx
[hadoop@mycat01 current]$ hdfs dfs -rm -r -f /git.docx
19/03/07 08:09:21 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /git.docx
[hadoop@mycat01 current]$ hdfs dfs -ls /
Found 4 items
-rw-r--r-- 2 hadoop hadoop 8 2019-03-07 03:52 /1.txt
drwxr-xr-x - hadoop hadoop 0 2019-03-06 09:45 /mktest
drwx------ - hadoop hadoop 0 2019-03-05 20:14 /tmp
drwxr-xr-x - hadoop hadoop 0 2019-03-05 20:53 /user
Part Two
如何实现所在节点文件系统到HDFS的互操作?
-put(copyFromLocal):上传本地文件到hdfs目录
-get(copyToLocal):下载hdfs文件到本地目录
-getmerge:合并后下载 hdfs dfs -getmerge /mktest/*.txt ./a.txt
-moveFromLocal:从本地移动文件到hdfs
-moveToLocal:从hdfs移动文件到本地
-copyFromLocal:从本地拷贝文件到hdfs
-copyToLocal:从hdfs移动文件到本地
-appendToFile:追加文件内容到已存在的文件 hdfs dfs -appendToFile /a.txt /mktest/a.txt
-setrep:单独对某一个文件设置副本数
使用put选项进行本地文件的上传:
hdfs dfs -put 文件 目标文件路径
[hadoop@mycat01 ~]$ ll
total 8
drwxr-xr-x. 11 hadoop hadoop 4096 Mar 5 11:38 hadoop-2.7.7
drwxrwxr-x 5 hadoop hadoop 4096 Mar 6 19:24 hadoopdata
[hadoop@mycat01 ~]$ echo dhewidiw123 >> a.txt
[hadoop@mycat01 ~]$ hdfs dfs -put a.txt /
[hadoop@mycat01 ~]$ hdfs dfs -ls /
Found 5 items
-rw-r--r-- 2 hadoop hadoop 8 2019-03-07 03:52 /1.txt
-rw-r--r-- 3 hadoop hadoop 12 2019-03-07 08:11 /a.txt
drwxr-xr-x - hadoop hadoop 0 2019-03-06 09:45 /mktest
drwx------ - hadoop hadoop 0 2019-03-05 20:14 /tmp
drwxr-xr-x - hadoop hadoop 0 2019-03-05 20:53 /user
get是单个文件的下载,getmerge则是多文件合并后下载为一个文件
hdfs dfs -getmerge /*.txt ./a1.txt
[hadoop@mycat01 ~]$ ll
total 8
drwxr-xr-x. 11 hadoop hadoop 4096 Mar 5 11:38 hadoop-2.7.7
drwxrwxr-x 5 hadoop hadoop 4096 Mar 6 19:24 hadoopdata
[hadoop@mycat01 ~]$ hdfs dfs -ls /
Found 5 items
-rw-r--r-- 2 hadoop hadoop 8 2019-03-07 03:52 /1.txt
-rw-r--r-- 3 hadoop hadoop 12 2019-03-07 08:11 /a.txt
drwxr-xr-x - hadoop hadoop 0 2019-03-06 09:45 /mktest
drwx------ - hadoop hadoop 0 2019-03-05 20:14 /tmp
drwxr-xr-x - hadoop hadoop 0 2019-03-05 20:53 /user
[hadoop@mycat01 ~]$ hdfs dfs -getmerge /*.txt ./a1.txt
[hadoop@mycat01 ~]$ ll
total 12
-rw-r--r-- 1 hadoop hadoop 20 Mar 7 08:15 a1.txt
drwxr-xr-x. 11 hadoop hadoop 4096 Mar 5 11:38 hadoop-2.7.7
drwxrwxr-x 5 hadoop hadoop 4096 Mar 6 19:24 hadoopdata
修改文件的副本数:
查看默认的文件副本数:
[hadoop@mycat01 ~]$ hdfs getconf -confKey dfs.replication 3
hdfs dfs -setrep 2 /a.txt
[hadoop@mycat01 ~]$ hdfs dfs -setrep 2 /a.txt
Replication 2 set: /a.txt