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文件存储举例
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文件写入过程
5、HDFS文件读取过程
6、HDFS的元数据辅助管理
6、HDFS的API操作