准备

启动HDFS

使用用户zhangsan启动HDFS(张三用户已配置免密登录);

使用用户root执行后续操作。

配置全局环境变量
1
2
3
[root@node0 ~]# vim /etc/profile
export HADOOP_HOME=/opt/bigdata/hadoop/default
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin/:$PATH
Linux本地创建三个文件
1
2
3
[root@node1 ~]# echo "hello hadoop" > file_hadoop
[root@node1 ~]# echo "hello hbase" > file_to_append
[root@node1 ~]# echo "hello spark" > file_to_move
创建目录

HDFS上创建目录/input,如果创建失败(把root用户加入supergroup

1
2
3
4
5
6
7
8
9
[root@node0 ~]# groupadd supergroup
You have new mail in /var/spool/mail/root

[root@node0 ~]# gpasswd -a root supergroup
Adding user root to group supergroup

# 同步系统的权限信息到HDFS
[root@node0 ~]# hdfs dfsadmin -refreshUserToGroupsMappings
Refresh user to groups mapping successful

创建文件夹 hdfs:///input/

1
[root@node1 ~]# hdfs dfs -mkdir /input

创建文件夹hdfs:///user/root/

1
[root@node1 ~]# hdfs dfs -mkdir /user/root

Linux与HDFS交互

上传文件

上传文件 file_hadoophdfs:///input/

1
[root@node1 ~]# hdfs dfs -put file_hadoop /input
创建空白文件

创建空白文件hdfs:///input/file_hbase

1
[root@node1 ~]# hdfs dfs -touchz /input/file_hbase
内容追加

将本地文件 file_to_append 的内容追加到 hdfs:///input/file_hbase

1
[root@node1 ~]# hdfs dfs -appendToFile file_to_append /input/file_hbase
内容查看

查看HDFS中 hdfs:///input/file_hbase 文件内容

1
2
[root@node1 ~]# hdfs dfs -cat /input/file_hbase
hello hbase
本地移动到HDFS

将本地文件 file_to_move 移动到 hdfs:///input/

1
[root@node1 ~]# hdfs dfs -moveFromLocal file_to_move /input/

HDFS文件管理

文件重命名

hdfs:///input/file_to_move 重命名为 hdfs:///input/file_spark

1
[root@node1 ~]# hdfs dfs -mv /input/file_to_move /input/file_spark

将文件夹 hdfs:///input/ 重命名为 hdfs:///data/

1
[root@node1 ~]# hdfs dfs -mv /input /data
目录复制

将目录hdfs:///data/ 复制到 hdfs:///user/root/

1
[root@node1 ~]# hdfs dfs -cp /data/ /user/root/
文件列表

查看hdfs:///user/root/data下的文件的详细信息(创建修改时间,所有者,权限)

1
2
3
4
5
[root@node1 ~]# hdfs dfs -ls /user/root/data
Found 3 items
-rw-r--r-- 3 root supergroup 13 2022-10-01 20:48 /user/root/data/file_hadoop
-rw-r--r-- 3 root supergroup 12 2022-10-01 20:48 /user/root/data/file_hbase
-rw-r--r-- 3 root supergroup 12 2022-10-01 20:48 /user/root/data/file_spark
合并下载

将hdfsfile_hadoop, file_hbase, file_spark下载到本地 file_merge.txt,以换行符分割。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@node1 ~]# hdfs dfs -getmerge /user/root/data/* ~/file_merge.txt
You have new mail in /var/spool/mail/root
[root@node1 ~]# cat file_merge.txt
hello hadoop
hello hbase
hello spark

[root@node1 ~]# hdfs dfs -getmerge -nl /user/root/data/* ~/file_merge.txt
You have new mail in /var/spool/mail/root
[root@node1 ~]# cat file_merge.txt
hello hadoop

hello hbase

hello spark

统计

统计hdfs:///user/root/data内文件数量和总大小

1
2
3
[root@node1 ~]# hdfs dfs -count /user/root/data/
1 3 37 /user/root/data
目录数(包括当前目录.) 文件数 文件总大小 统计的目录名
删除

删除hdfs:///data/下的所有文件

1
2
# TODO
[root@node1 ~]# hdfs dfs -rm /data