hadoop之快照管理,存档,回收站等功能解说

HDFS其他功能
1集群间数据拷贝
1scp实现两个远程主机之间的文件复制
       scp -r hello.txt[email protected]:/user/robot/hello.txt              // push
       scp -r[email protected]:/user/robot/hello.txt  hello.txt             // pull
       scp -r[email protected]:/user/robot/hello.txt [email protected]:/user/robot   //是通过本地主机中转实现两个远程主机的文件复制;如果在两个远程主机之间ssh没有配置的情况下可以使用该方式。
2采用discp命令实现两个hadoop集群之间的递归数据复制
bin/hadoop discp hdfs://haoop102:8020/user/robot/hello.txt hdfs://hadoop103:8020/user/robot/hello.txt

2 Hadoop存档
1)理论概述
每个文件均按块存储,每个块的元数据存储在namenode的内存中,因此hadoop存储小文件会非常低效。因为大量的小文件会耗尽namenode中的大部分内存。但注意,存储小文件所需要的磁盘容量和存储这些文件原始内容所需要的磁盘空间相比也不会增多。例如,一个1MB的文件以大小为128MB的块存储,使用的是1MB的磁盘空间,而不是128MB
Hadoop存档文件或HAR文件,是一个更高效的文件存档工具,它将文件存入HDFS块,在减少namenode内存使用的同时,允许对文件进行透明的访问。具体说来,Hadoop存档文件可以用作MapReduce的输入。
2)案例实操
1)需要启动yarn进程
       start-yarn.sh
2)归档文件
       归档成一个叫做xxx.har的文件夹,该文件夹下有相应的数据文件。Xx.har目录是一个整体,该目录看成是一个归档文件即可。
bin/hadoop archive -archiveName myhar.har -p /user/robot  /user/my
实例:hadoop archive –archiveName    myhar.har   -p  /user/robot/input     /user/abc
                                                   要归档的文件地址   归存址
3)查看归档
       hadoop fs -lsr /user/my/myhar.har
   hadoop fs –lsr har:///user/abc/myhar.har
4)解归档
       hadoop fs -cp /user/abc/myhar.har   /user/your
   所谓解归档只是将原来文件copy出来。
3快照管理
快照相当于对目录做一个备份。并不会立即复制所有文件,而是指向同一个文件。当写入发生时,才会产生新文件。
1)基本语法
       1hdfs dfsadmin -allowSnapshot 路径  (功能描述:开启指定目录的快照功能)
       2hdfs dfsadmin -disallowSnapshot 路径 (功能描述:禁用指定目录的快照功能,默认是禁用
       3hdfs dfs -createSnapshot 路径       (功能描述:对目录创建快照
       4hdfs dfs -createSnapshot 路径 名称  (功能描述:指定名称创建快照
       5hdfs dfs -renameSnapshot 路径 旧名称新名称 (功能描述:重命名快照
       6hdfs lsSnapshottableDir         (功能描述:列出当前用户所有可快照目录)
       7hdfs snapshotDiff 路径1路径2(功能描述:比较两个快照目录的不同之处
2)案例实操
       1)开启/禁用指定目录的快照功能
hdfs dfsadmin -allowSnapshot /user/robot/data        
hdfs dfsadmin -disallowSnapshot /user/robot/data    
       2)对目录创建快照
hdfs dfs -createSnapshot /user/robot/data         //对目录创建快照
通过web访问hdfs://hadoop102:8020/user/robot/data/.snapshot/s…..//快照和源文件使用相同数据块
hdfs dfs -lsr /user/robot/data/.snapshot/
       3)指定名称创建快照
hdfs dfs -createSnapshot /user/robot/data miao170508           
       4)重命名快照
hdfs dfs -renameSnapshot /user/robot/data/ miao170508 robot170508        
       5)列出当前用户所有可快照目录
hdfs lsSnapshottableDir  
       6)比较两个快照目录的不同之处
hdfs snapshotDiff /user/robot/data/ .  .snapshot/robot170508      

4回收站
1)默认回收站
默认值fs.trash.interval=00表示禁用回收站,可以设置删除文件的存活时间。
默认值fs.trash.checkpoint.interval=0,检查回收站的间隔时间。
要求fs.trash.checkpoint.interval<=fs.trash.interval
hadoop之快照管理,存档,回收站等功能解说
2)启用回收站
修改core-site.xml,配置垃圾回收时间为1分钟。

<property>
    <name>fs.trash.interval</name>
    <value>1</value>
</property>

3)查看回收站
回收站在集群中的;路径/user/robot/.Trash/….
4)修改访问垃圾回收站用户名称
       进入垃圾回收站用户名称,默认是dr.who,修改为robot用户
    修改完要重启集群才可以生效
       [core-site.xml]

<property>
  <name>hadoop.http.staticuser.user</name>
  <value>robot</value>
</property>

5)通过程序删除的文件不会经过回收站,需要调用moveToTrash()才进入回收站
Trash trash = New Trash(conf);
trash.moveToTrash(path); //path表示要删除文件的路径
6)清空回收站:并不是立马清空回收站,而是将回收站的文件打包。
hdfs dfs -expunge  
7》恢复回收站数据通过复制的方式
   hadoop fs –mv /user/robot/.Trash/Current/user/robot/input    /user/robot/input