HDFS的命令行使用
1.ls
格式:hdfs dfs -ls URL
作用:类似linux的ls命令,显示文件列表
hdfs dfs -ls /
2.lsr
格式:hdfs dfs -ls-R URL
作用:在整个目录下递归执行ls,与linux中的ls-R类似
hdfs dfs -ls -R /
3.mkdir
格式:hdfs dfs [-p] -mkdir
作用:以中的URL作为参数,创建目录、使用-p参数可以递归创建目录
hdfs dfs -mkdir /dir1
#dir9999不存在
hdfs dfs -mkdir -p /dir9999/dir1
4.put
格式:hdfs dfs -put …
作用:将单个的源文件src或者多个源文件srcs从本地文件系统拷贝到目标文件系统中(对应的路径)。也可以从标准输入中读取输入,写入目标文件系统
hdfs dfs -put -rooot/a.txt /dir1
5.moveFromLocal
格式:hdfs dfs -moveFromLocal
作用:与put命令类似,但是源文件localsrc拷贝之后自身被删除
hdfs dfs -moveFromLocal a.txt /dir2
6.moveToLocal
7.get
格式:hdfs dfs -get [-ignorecrc] [-crc]
作用:将文件拷贝到本地文件系统。CRC校验失败的文件通过-ignorecrc选项拷贝。文件和CRC校验和可以用个-CRC选项拷贝
hdfs dfs -get /dir2/a.txt ./
8.mv
格式:hdfs dfs -mv URI
作用:将hdfs上的文件从原来路径移动到目标路径(移动之后文件删除),该命令不能跨文件系统。
hdfs dfs -my /dir2/a.txt /dir1
9.rm
格式:hdfs dfs -rm [-r] [-skipTrash] URL [URL…]
作用:此命令只删除文件和空目录。
如果指定-skipTrash ,跳过回收站
-r 删除目录
hdfs dfs -rm -r /dir2
10.cp
格式:hdfs dfs -cp URL [URL…]
作用:将文件拷贝到目标路径中,如果为目录,可以将多个文件拷贝到该目录中
-f
选项覆盖目标,如果它已经存在
-p
选项将保留文件属性(时间戳,所有权,许可,ACL,XAttr)
hdfs dfs -cp /dir1/a.txt /dir2
11.cat
格式:hdfs dfs -cat URL [URL…]
作用:
hdfs dfs -cat /dir1/a.txt
12.chmod
格式:hdfs dfs -chmod [-R] URL [URL … ]
作用:作用改变文件权限,如果使用
-R 对整个目录递归执行
777把所有权限打开
hdfs dfs -chmod -R 777 /dir1/a.txt
13.chown
格式:hdfs dfs -chown [-R] URL [URL … ]
作用:更改所属用户和用户组。
-R 对整个目录递归执行
linux 添加用户
useradd hadoop
passwd hadoop
hdfs dfs -chown hadoop:hadoop /dir1/a.txt
14.appendToFile
格式:hdfs dfs -appendToFile …
作用:追加一个或者多个文件到hdfs指定文件中,也可以从命令行读取输入。
hdfs dfs -appendToFile ./core-site.xml ./hdfs-site.xml /dir1/big.xml
hdfs的高级使用命令
hdfs文件限额配置,限制用户的文件个数,文件大小。类似百度网盘
hdfs dfs -count -q -h dir #查询配额信息 绝对路径
hdfs dfs -count -q -h /user/root/dir
hdfs数量限额
hdfs dfs -mkdir -p /user/root/dir #创建hdfs文件夹
hdfs dfsadmin -setQuota 2 dir #给该文件夹下面设置最多上传两个文件,发现只能上传一个文件。
hdfs dfsadmin -clrQuota /user/root/dir #清除文件数量限制
空间大小限额
block x3
hdfs dfsadmin -setSpaceQuota 4k /user/root/dir 限制空间大小4kb
hdfs dfs -put /root/a.txt /dir
生成任意大小文件的命令
dd if =/dev/zeroof=1.txt bs=1M count=2 #生成2M文件
dd if=/dev/zero of=1.txt bs=129M count=1
清除空间配额限制
hdfs dfsadmin -clrSpaceQuota /user/root/dir
hdfs安全模式
当有节点挂掉,会自动从其他结点复制
安全模式检查文件完整性,只接受数据请求,不接受删除和修改请求。
hdfs dfsadmin -safemode get
hdfs dfsadmin -safemode enter
hdfs dfsadmin -safemode leave
hdfs 基准测试
测试写入速度
/export/servers/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5.jar
hadoop jar /export/servers/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5.jar TestDFSIO -write -nrFiles 3 -fileSize 10MB
浏览器界面、benchmark会有测试报告
测试读取速度
hadoop jar /export/servers/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5.jar TestDFSIO -read -nrFiles 3 -fileSize 10MB
清除测试数据
hadoop jar /export/servers/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5.jar TestDFSIO -clean
fsimage:元数据镜像
edits:纪录最近一段时间的操作日记 内存中
元数据信息配置在hdfs-site.xml
pwd:/export/servers/hadoop-2.7.5/etc/hadoop/hdfs-site.xml
元数据镜像查看
cd /export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas/current
hdfs oiv -i fsimage -p XML-o myfsimage.xml
-i 读入数据
-p 指定解析文件类型
-o 存储文件
edits中的文件信息查看
cd /export/servers/hadoop-2.7.5/hadoopDatas/nn/edits
hdfs oev hdfs oiv -i edits -p XML-o myedits.xml
SecondarNameNode 会自动将edits写入fsimage
配置 SecondaryNameNode
配置SecondarNameNode 在conf-masters中指定
在masters指定的机器上,修改hdfs-site.xml
<property>
<name>dfs.http.address</name>
<value>host:50070</value>
</property>
多久将fsimage和edits 合并
修改 core-site.xml
, 这一步不做配置保持默认也可以
<!-- 多久记录一次 HDFS 镜像, 默认 1小时 -->
<property>
<name>fs.checkpoint.period</name>
<value>3600</value>
</property>
<!-- 一次记录多大, 默认 64M -->
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>