1、讲解Hadoop三种操作方式
1)、通过Web Console: 50070、50090
2)、命令行
(1)操作命令 hdfs dfs *****
-mkdir 创建目录
举例:hdfs dfs -mkdir /aaa
hdfs dfs -mkdir -p /bbb/ccc
-p 表示如果父目录不存在 先创建父 目录
-ls 查看某个目录
-ls -R 查看某个目录,包含子目录 以及子目录下的文件
简写: -lsr
-put 上传数据 hdfs dfs -put data.txt /input
-copyFromLocal 上传数据 hdfs dfs -copyFromLocal data.txt /input
本质上都是cp 复制
-moveFromLocal 上传数据(相当于 ctrl+x 剪切)
-copyToLocal 下载数据
-get 下载数据
-rm 删除文件
-rmr 删除目录(包含子目录)
hdfs dfs -rmr /tools
-getmerge: 把某个目录下的文件先合并,再下载(目的是为了提高效率)
[root@niit110 ~]# vi student01.txt
[root@niit110 ~]# vi student02.txt
[root@niit110 ~]# hdfs dfs -mkdir /students
[root@niit110 ~]# hdfs dfs -put student0*.txt /students
[root@niit110 ~]# hdfs dfs -ls /students
[root@niit110 ~]# hdfs dfs -getmerge /students ~/allstudent.txt
-cp: hdfs dfs -cp /input/data.txt /input/data2.txt
-mv: hdfs dfs -cp /input/data.txt /students
-count: hdfs dfs -count /students
hdfs dfs -count /students
1 2 29 /students
目录个数, 文件个数, 文件总计大小 输入路径
-du 每个文件的大小
[root@niit110 ~]# hdfs dfs -du /students
19 /students/student01.txt
10 /students/student02.txt
-text、-cat 查看文件的内容
hdfs dfs -cat /students/student01.txt
balancer: 平衡操作
(2)管理命令 hdfs dfsadmin *****
-report: 输出HDFS的报告(相当于Web Console Summary)
-safemode: 安全模式
[root@niit110 ~]# hdfs dfsadmin -safemode
Usage: hdfs dfsadmin [-safemode enter | leave | get | wait]
[root@niit110 ~]# hdfs dfsadmin -safemode get
Safe mode is OFF
[root@niit110 ~]# hdfs dfsadmin -safemode enter
Safe mode is ON
[root@niit110 ~]# hdfs dfs -mkdir /aaaa
mkdir: Cannot create directory /aaaa. Name node is in safe mode.
[root@niit110 ~]# hdfs dfsadmin -safemode leave
Safe mode is OFF
2、HDFS的高级特性
(1)回收站 作用:防止误操作导致数据丢失
对比一下window中的回收站
HDFS的回收站:默认禁用
参数: core-site.xml
单位:分钟
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
a、没有回收站的情况
日志:
19/03/12 00:41:10 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /students/emp.csv
b、有回收站的情况
rmr: DEPRECATED: Please use 'rm -r' instead.
19/03/11 22:46:07 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1440 minutes, Emptier interval = 0 minutes.
Moved: 'hdfs://niit110:9000/tools' to trash at: hdfs://niit110:9000/user/root/.Trash/Current
c、HDFS回收站的本质:ctrl +x 移动到一个隐藏目录
查看回收站
hdfs dfs -lsr /user/root/.Trash/Current
从回收站中恢复
hdfs dfs -cp /user/root/.Trash/Current/tools/hadoop-2.7.3.tar.gz /tools
[-expunge] 清空回收站
(2)快照
即snapshot(是一种备份),其本质:cp命令
快照的命令分为如下两种:
(a)管理命令
[-allowSnapshot <snapshotDir>]
[-disallowSnapshot <snapshotDir>]
(b) 操作命令
[-createSnapshot <snapshotDir> [<snapshotName>]]
[-deleteSnapshot <snapshotDir> <snapshotName>]
[-renameSnapshot <snapshotDir> <oldName> <newName>]
(c) 默认禁用
(d) 针对目录开启快照
hdfs dfsadmin -allowSnapshot /students
(e) 创建一个备份
执行:hdfs dfs -createSnapshot /students backup_student_0411_01
会显示如下日志提示信息:
日志:Created snapshot /students/.snapshot/backup_student_0411_01
例子2:
hdfs dfs -put student03.txt /students
hdfs dfs -createSnapshot /students backup_student_0411_02
(f ) 对比快照
hdfs snapshotDiff /students backup_student_0411_01 backup_student_0411_02
M .
+ ./student03.txt
hdfs lsSnapshottableDir
我们可以通过网页查看
(g) 恢复快照
hdfs dfs -cp /input/.snapshot/backup_input_01/data.txt /input
(3)配额(quota)
(1)名称配额: 限制某个目录下,文件的个数
[-setQuota <quota> <dirname>...<dirname>]
[-clrQuota <dirname>...<dirname>]
hdfs dfs -mkdir /folder1
hdfs dfsadmin -setQuota 3 /folder1
实际是:N-1
(2)空间配额: 限制某个目录下,文件的大小
[-setSpaceQuota <quota> [-storageType <storagetype>] <dirname>...<dirname>]
[-clrSpaceQuota [-storageType <storagetype>] <dirname>...<dirname>]
hdfs dfs -mkdir /folder2
设置空间配额:1M
hdfs dfsadmin -setSpaceQuota 1M /folder2
错误:
The DiskSpace quota of /folder2 is exceeded: quota = 1048576 B = 1 MB but diskspace consumed = 134217728 B = 128 MB
注意:设置的值一定不能小于128M
(4)安全模式 safe mode
注意:HDFS在正常运行状态下,安全模式一定是off状态
安全模式是HDFS的一种自我保护功能,其作用是:检查数据块的副本数
HDFS在安全模式下,一定是只读的状态
3、HDFS的底层原理
(1)文件上传原理
(2)文件下载原理
(3)RPC HTTP
是一种运行在传输层上的协议,HDFS实现了RPC远程过程调用协议