hadoop_高级功能

1. 回收站

默认:禁用

删除数据,hadoop dfs -rmr /output

日志:

17/10/25 10:27:53 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes. Deleted /output

回收站的本质:把要删除的数据移动到一个隐藏目录

修改core-site.xml配置

<property>

  <name>fs.trash.interval</name>

  <value>1440</value>

</property>

value是分钟,默认是01440分钟即一天,删除文件时会将文件放到回收站一天,这一天内可以通过复制或移动将文件恢复。

开通回收站后再删除,日志如下:

hadoop dfs -rmr /output

17/10/25 10:44:35 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1440 minutes, Emptier interval = 0 minutes.

Moved: 'hdfs://192.168.157.111:9000/output' to trash at: hdfs://192.168.157.111:9000/user/root/.Trash/Current

 

不建议开通回收站功能

 

2. 快照snapshot

快照针对的是目录,本质是将文件复制一份到隐藏目录下。

第一步:使用管理员开启某个目录快照功能

[-allowSnapshot <snapshotDir>]

[-disallowSnapshot <snapshotDir>]

举例,给/students目录开启快照:hdfs dfsadmin -allowSnapshot /students

 

第二步:使用HDFS的操作命令创建快照

[-createSnapshot <snapshotDir> [<snapshotName>]]

[-deleteSnapshot <snapshotDir> <snapshotName>]

 

举例,创建两个快照:

hdfs dfs -createSnapshot /students backup_students_01

hdfs dfs -createSnapshot /students backup_students_02

对比快照:

hdfs snapshotDiff /students backup_students_01 backup_students_02

结果:

M       .

+       ./student03.txt

M列为+表示多了一个文件,-表示少了一个文件,第二列为文件名。

 

查看哪些目录可以被执行快照,即哪些目录开启过快照:

hdfs lsSnapshottableDir

如上面就会输出:/students

也可以在50070端口页面中查看有哪些目录开启了快照,都有哪些快照。

 

3. 配额quota

1) 名称配额:

限制某个目录下,文件的个数(N-1个),因为文件目录自身也是一个文件。

设置配额:[-setQuota <quota> <dirname>...<dirname>]

清除配额:[-clrQuota <dirname>...<dirname>]

 

如:设置/test1目录的名称配额是3

hdfs dfs -mkdir /test1

hdfs dfsadmin -setQuota 3 /test1

 

放第三个文件:hdfs dfs -put a.xml /test1

输出日志:

put: The NameSpace quota (directories and files) of directory /test1 is exceeded: quota=3 file count=4

 

2) 空间配额:

限制某个目录下,文件的大小-------> 注意的问题:值一定要大于数据块的大小(128M

设置配额:[-setSpaceQuota <quota> [-storageType <storagetype>] <dirname>...<dirname>]

清除配额:[-clrSpaceQuota [-storageType <storagetype>] <dirname>...<dirname>]

 

hdfs dfs -mkdir /test2

设置该目录的空间配额:1M

hdfs dfsadmin -setSpaceQuota 1M /test2    -----> 失败,因为数据块占用至少128M

日志:

Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.protocol.DSQuotaExceededException): The DiskSpace quota of /test2 is exceeded: quota = 1048576 B = 1 MB but diskspace consumed = 134217728 B = 128 MB

 

hdfs dfsadmin -clrSpaceQuota /test2

 

4. 安全模式

(1) HDFS在启动的阶段中,会经历安全模式

(2) 正常运行期间,HDFS一定不能是安全模式

(3) 命令:

hdfs dfsadmin -safemode [get|leave|enter|wait]

如:hdfs dfsadmin -safemode get  获取安全模式状态,输出:

Safe mode is OFF

hdfs dfsadmin -safemode enter 进入安全模式:

Safe mode is ON

 

(4) 安全模式的作用:

检查数据块的副本率。如果不满足要求,进行数据块的复制(删除)

    当集群启动的时候,会首先进入案例模式。当系统处于安全模式时会检查数据块的完整性。假设我们设置的副本数(即参数dfs.replication)是5,那么datanode上就应该有5个副本存在,假设只存在3个副本,那么比例就是3/5=0.6.在配置文件hdfs-default.xml中定义了一个最小的副本的副本率0.999,如图:

5. 权限管理

Hdfs对权限的控制较弱,可以通过设置环境变量为root,它就会认为是root用户在操作,并不真正验证是否为root

 

 

 


版权声明:本文为qq_41665356原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>