HDFS的常用命令

1、HDFS基础命令

ls

hdfs dfs -ls /
hdfs dfs -ls /storage |head -10  #显示前10条
hdfs dfs -ls /storage |sort -k6,7 |head -10 #以第六列和第七列进行排序

ls -R

hdfs dfs -ls -R /
hdfs dfs -ls -R -h /

mkdir

hdfs dfs -mkdir -p /hao/ok

put

hdfs dfs -put -f -p /root/a.txt /dir1
# -f 覆盖目标文件(已存在则覆盖)
# -p 保留访问和修改时间,所有权和权限。

moveFromLocal (上传文件到指定目录下)

hdfs dfs -moveFromLocal /root/hao.txt /

get

hdfs dfs -get [-f] [-p] /dir2/dir22/a.txt ./

mv

hdfs dfs -mv /dir1/a.txt /dir2

rm

hdfs dfs -rm [-r] [-skipTrash] /dir1

cp

hdfs dfs -cp -f -p /dir1/a.txt /dir2
# -f 存在,则覆盖
# -p 保留文件属性copy(时间戳、所属权等)

cat

hdfs dfs -cat /index.html

tail

hdfs dfs -tail [-f] <file>

chmod

hdfs dfs -chmod -R 777 /ijndex.html

chown

# 修改权限-所属用户、所属用户组
hdfs dfs -chown -R hadoop:hadoop /index.html

appendToFile

hdfs dfs -appendToFile a.xml b.xml /big.xml
# a.xml 为本地文件
# b.xml 为本地文件
# /big.xml 为hdfs文件位置

getmerge

# 文件合并(不常用)
hdfs dfs -getmerge [-nl] [-skip-empty-file] /conf/*.xml ./hello.xml
# -nl 选项表示在每个文件末尾添加换行符

查看hdfs磁盘占用大小

hdfs dfs -du -s -h /

查看文件数量

hdfs dfs -count

2、HDFS高级命令

2.0、前置知识

生成任意大小文件的命令

# bs乘以count等于文件大小,比如:
dd if=/dev/zero of=1.txt bs=1M count=2   #生成2M的文件
dd if=/dev/zero of=1.txt bs=129M count=1   #生成129M的文件

2.1、文件限额配置

hdfs dfs -count -q -h /user/root/dir1  #查看配额信息

hdfs dfs -mkdir -p /user/root/dir  #创建hdfs文件夹

hdfs disadmin -setQuota 2 dir  #给该文件夹下面设置最多上传两个文件,发现只能上传一个文件

hdfs dfsadmin -clrQuota /user/root/dir #清楚文件数量限制

#空间大小限额
hdfs dfsadmin -setSpaceQuota 4k /user/root/dir  #限制空间大小为4kb (错误)
hdfs dfsadmin -setSpaceQuota 384M /user/root/dir  #限制空间大小为384M (正确)

#清楚空间配额限制
hdfs dfsadmin -clrSpaceQuota /user/root/dir

划重点:限制大小为4kb 是错误的。 因为一个文件即便是1kb,也会在hdfs里面占用1个block_size,即128M的空间,然后hdfs默认会占用3个副本,也就是384M。所以至少要设置384M

hdfs文件存储举例

hadoop 保存文件格式 hadoop保存命令_hdfs

2.2、安全模式

安全模式操作命令

hdfs dfsadmin -safemode get #查看安全模式状态
hdfs dfsadmin -safemode enter #进入安全模式
hdfs dfsadmin -safemode leave #离开安全模式

2.3、修改HDFS文件副本个数

hadoop fs -setrep [-R] [-w] <rep> <path> ...
# -w 客户端是否等待副本修改完毕,加-w。则表示wait等待
#举例
hadoop fs -setrep -w 2 /tmp/tmp.txt

3、HDFS基准测试

3.1、写入速度

向HDFS文件系统中写入数据,10个文件,每个文件10MB,文件存放到/benchmarks/TestDFSIO中

hadoop jar hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5.jar TestDFSIO -write -nrFiles 10 -fileSize 10MB

3.2、读取速度

在HDFS文件系统中读取10个文件,每个文件10M

hadoop jar hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5.jar TestDFSIO -read -nrFiles 10 -fileSize 10MB

3.3、清楚测试数据

hadoop jar hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5.jar TestDFSIO -clean

4、HDFS文件写入过程

hadoop 保存文件格式 hadoop保存命令_hadoop_02

5、HDFS文件读取过程

hadoop 保存文件格式 hadoop保存命令_hadoop_03

6、HDFS的元数据辅助管理

hadoop 保存文件格式 hadoop保存命令_hadoop 保存文件格式_04

6、HDFS的API操作