hadoop自学日记–3.hadoop hdfs操作
搭建环境
本人使用简单的windows 7笔记本,使用VirtualBox创建Centos虚拟机来安装Hadoop
VirtualBox:6.0.8 r130520 (Qt5.6.2)
CentOS:CentOS Linux release 7.6.1810 (Core)
jdk:1.8.0_202
hadoop:2.6.5
集群环境
- 一个master节点,在hdfs担任NameNode,在yarn担任ResourceManager。
- 三台数据节点data1,data2,data3,在hdfs担任DataNode,在yarn担任NodeManager。
名称 | ip | hdfs | yarn |
---|---|---|---|
master | 192.168.37.200 | NameNode | ResourceManager |
data1 | 192.168.37.201 | DataNode | NodeManager |
data2 | 192.168.37.202 | DataNode | NodeManager |
data3 | 192.168.37.203 | DataNode | NodeManager |
基本命令
操作hdfs有两种语法,一种是:hadoop fs
,此命令不单单可操作hdfs,还可用于其他文件系统;另一种是:hdfs dfs
,专门针对hdfs分布式文件系统。
这里我以使用范围更广的hadoop fs
为例
1.查看目录
使用-ls
命令查看:
[root@master ~]# hadoop fs -ls /
2.创建目录
使用’’’-mkdir’’'命令创建目录“
[root@master ~]# hadoop fs -mkdir /rawdata
查看目录下文件:
[root@master ~]# hadoop fs -ls /
Found 1 items
drwxr-xr-x - root supergroup 0 2019-07-25 10:43 /rawdata
创建多级目录:
[root@master ~]# hadoop fs -mkdir -p /a/b/c
查看所有子目录:
[root@master ~]# hadoop fs -ls -R /
drwxr-xr-x - root supergroup 0 2019-07-25 11:02 /a
drwxr-xr-x - root supergroup 0 2019-07-25 11:02 /a/b
drwxr-xr-x - root supergroup 0 2019-07-25 11:02 /a/b/c
drwxr-xr-x - root supergroup 0 2019-07-25 10:43 /rawdata
3.上传本地文件
有2种语法:-put
和-copyFromLocal
区别:使用-put
,如果文件已存在,系统不会显示文件已存在,而会直接覆盖;而使用-copyFromLocal
,如果文件已存在,系统会提示文件已存在,上传失败。而且-put
可以接受标准输入。
下面以-put
为例:
- 上传本地文件到hdfs指定目录:
[root@master ~]# hadoop fs -put /software/hadoop-2.6.5.tar.gz /a/b/c/
[root@master ~]# hadoop fs -ls /a/b/c/
Found 1 items
-rw-r--r-- 3 root supergroup 199635269 2019-07-25 11:35 /a/b/c/hadoop-2.6.5.tar.gz
- 一次上传多个文件:
[root@master ~]# hadoop fs -put /home/a /home/b /home/c /home/d /a/b/c
[root@master ~]# hadoop fs -ls /a/b/c
Found 5 items
-rw-r--r-- 3 root supergroup 0 2019-07-25 11:38 /a/b/c/a
-rw-r--r-- 3 root supergroup 0 2019-07-25 11:38 /a/b/c/b
-rw-r--r-- 3 root supergroup 0 2019-07-25 11:38 /a/b/c/c
-rw-r--r-- 3 root supergroup 0 2019-07-25 11:38 /a/b/c/d
-rw-r--r-- 3 root supergroup 199635269 2019-07-25 11:35 /a/b/c/hadoop-2.6.5.tar.gz
- 标准输入:
可将ls命令结果直接传入hdfs的文件中:
[root@master ~]# ls /software/hadoop-2.6.5/ |hadoop fs -put - /a/b/c/h.txt
使用-cat
查看文件内容:
[root@master ~]# hadoop fs -cat /a/b/c/h.txt
bin
etc
hadoop_data
hdfs
include
lib
libexec
LICENSE.txt
logs
NOTICE.txt
README.txt
sbin
share
3.下载hdfs文件
有2种语法:-get
和-copyToLocal
下面以-get
为例:
将hdfs上的文件下载到本地:
[root@master ~]# hadoop fs -get /a/b/c/a ./
[root@master ~]# ll
total 4
-rw-r--r--. 1 root root 0 Jul 25 14:39 a
-rw-------. 1 root root 1204 Jul 17 14:49 anaconda-ks.cfg
4.复制和删除hdfs文件
使用-cp
命令复制hdfs的文件,使用-rm
命令删除hdfs的文件。
-cp
命令可以复制一整个文件夹的内容:
[root@master ~]# hadoop fs -cp /a/b/c /rawdata
[root@master ~]# hadoop fs -ls -R /rawdata
drwxr-xr-x - root supergroup 0 2019-07-25 14:45 /rawdata/c
-rw-r--r-- 3 root supergroup 0 2019-07-25 14:44 /rawdata/c/a
-rw-r--r-- 3 root supergroup 0 2019-07-25 14:44 /rawdata/c/b
-rw-r--r-- 3 root supergroup 0 2019-07-25 14:44 /rawdata/c/c
-rw-r--r-- 3 root supergroup 0 2019-07-25 14:44 /rawdata/c/d
-rw-r--r-- 3 root supergroup 95 2019-07-25 14:44 /rawdata/c/h.txt
-rw-r--r-- 3 root supergroup 199635269 2019-07-25 14:45 /rawdata/c/hadoop-2.6.5.tar.gz
-rm
命令可以删除hdfs的文件,如需删除文件夹,得加上-R
:
[root@master ~]# hadoop fs -rm -R /rawdata/*
19/07/25 14:49:08 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /rawdata/c
[root@master ~]# hadoop fs -ls -R /rawdata
使用图形界面操作hdfs
需要使用web打开hdfs管理网址:
http://10.11.91.122:50070/
进入主页后选择browse the file system:
在browser directory输入目录路径就可看到路径下的文件:
点开文件名连接可看到文件详细状态,并提供下载: