在我们实际工作当中,极有可能会遇到将测试集群的数据拷贝到生产环境集群,或者将生产环境集群的数据拷贝到测试集群,那么就需要我们在多个集群之间进行数据的远程拷贝,hadoop自带也有命令可以帮我们实现这个功能
1、本地文件拷贝scp
cd /kkb/soft
scp -r jdk-8u141-linux-x64.tar.gz hadoop@node02:/kkb/soft
2、集群之间的数据拷贝distcp
cd /kkb/install/hadoop-2.6.0-cdh5.14.2/
bin/hadoop distcp hdfs://node01:8020/jdk-8u141-linux-x64.tar.gz hdfs://cluster2:8020/
快照顾名思义,就是相当于对我们的hdfs文件系统做一个备份,我们可以通过快照对我们指定的文件夹设置备份,但是添加快照之后,并不会立即复制所有文件,而是指向同一个文件。当写入发生时,才会产生新文件。快照的管理一般是运维人员来做。
开启快照权限:
1、开启指定目录的快照功能(创建快照之前要执行次步骤)
hdfs dfsadmin -allowSnapshot 路径
2、禁用指定目录的快照功能(默认就是禁用状态)
hdfs dfsadmin -disallowSnapshot 路径
创建快照:
3、给某个路径创建快照snapshot
hdfs dfs -createSnapshot 路径
4、指定快照名称进行创建快照snapshot
hdfs dfs -createSanpshot 路径 名称
5、给快照重新命名
hdfs dfs -renameSnapshot 路径 旧名称 新名称
6、列出当前用户所有可快照目录
hdfs lsSnapshottableDir
7、比较两个快照的目录不同之处
hdfs snapshotDiff 路径1 路径2
8、删除快照snapshot
hdfs dfs -deleteSnapshot
任何一个文件系统,基本上都会有垃圾桶机制,也就是删除的文件,不会直接彻底清掉,我们一把都是将文件放置到垃圾桶当中去,过一段时间之后,自动清空垃圾桶当中的文件,这样对于文件的安全删除比较有保证,避免我们一些误操作,导致误删除文件或者数据
fs.trash.interval 10080 fs.trash.checkpoint.interval 值 fs.trash.interval默认值为0,0表示禁用回收站,不是0就表示启动了回收站,这个代表回收站的文件的存活时间,过了这个时间文件就会被删掉。
fs.trash.checkpoint.interval=0默认值也为0,表示检查回收站的间隔时间。
要求fs .interval <=fs.trash.interval。
通过javaAPI删除的数据,不会进入回收站,需要调用moveToTrash()方法才会进入回收站
Trash trash = New Trash(conf);
trash.moveToTrash(path);
回收站在集群的/user/hadoop/.Trash/ 这个路径下
hdfs dfs -mv trashFileDir hdfsdir
//trashFileDir :回收站的文件路径
//hdfsdir :将文件移动到hdfs的哪个路径下
hdfs dfs -expunge