您的位置:首页 > 大数据 > Hadoop

Apache Hadoop 通过Shell操作HDFS

2019-03-07 16:54 246 查看

如何操作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  递归查看
-mkdi
4000
r:创建目录   -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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: