HDFS的其他功能

不同集群之间的数据复制

在我们实际工作当中,极有可能会遇到将测试集群的数据拷贝到生产环境集群,或者将生产环境集群的数据拷贝到测试集群,那么就需要我们在多个集群之间进行数据的远程拷贝,hadoop自带也有命令可以帮我们实现这个功能。

集群内部文件拷贝scp

cd /export/softwares/

scp -r jdk-8u141-linux-x64.tar.gz root@node-2:/export/

​​​​​​​跨集群之间的数据拷贝distcp

cd /export/servers/hadoop-2.6.0-cdh5.14.0/

bin/hadoop distcp hdfs://node-1:9000/jdk-8u141-linux-x64.tar.gz  hdfs://cluster2:9000/

​​​​​​​Archive档案的使用

HDFS并不擅长存储小文件,因为每个文件最少一个block,每个block的元数据都会在NameNode占用内存,如果存在大量的小文件,它们会吃掉NameNode节点的大量内存。

Hadoop Archives可以有效的处理以上问题,它可以把多个文件归档成为一个文件,归档成一个文件后还可以透明的访问每一个文件。

如何创建Archive

Usage: hadoop archive -archiveName name -p <parent> <src>* <dest>

其中-archiveName是指要创建的存档的名称。比如test.har,archive的名字的扩展名应该是*.har。 -p参数指定文件存档文件(src)的相对路径。

举个例子:-p /foo/bar a/b/c e/f/g

这里的/foo/bar是a/b/c与e/f/g的父路径,

所以完整路径为/foo/bar/a/b/c与/foo/bar/e/f/g

例如:如果你只想存档一个目录/input下的所有文件:

hadoop archive -archiveName test.har -p /input  /outputdir

这样就会在/outputdir目录下创建一个名为test.har的存档文件。

如何查看Archive

首先我们来看下创建好的har文件。使用如下的命令:

hadoop fs -ls /outputdir/test.har

 

这里可以看到har文件包括:两个索引文件,多个part文件(本例只有一个)以及一个标识成功与否的文件。part文件是多个原文件的集合,根据index文件去找到原文件。

例如上述的三个小文件1.txt 2.txt 3.txt内容分别为1,2,3。进行archive操作之后,三个小文件就归档到test.har里的part-0一个文件里。

 

 

archive作为文件系统层暴露给外界。所以所有的fs shell命令都能在archive上运行,但是要使用不同的URI。Hadoop Archives的URI是:

har://scheme-hostname:port/archivepath/fileinarchive  

scheme-hostname格式为hdfs-域名:端口,如果没有提供scheme-hostname,它会使用默认的文件系统。这种情况下URI是这种形式:

har:///archivepath/fileinarchive   

如果用har uri去访问的话,索引、标识等文件就会隐藏起来,只显示创建档案之前的原文件:

如何解压Archive

按顺序解压存档(串行):

Hadoop fs -cp har:///user/zoo/foo.har/dir1  hdfs:/user/zoo/newdir

要并行解压存档,请使用DistCp:

hadoop distcp har:///user/zoo/foo.har/dir1  hdfs:/user/zoo/newdir

Archive注意事项

  1. Hadoop archives是特殊的档案格式。一个Hadoop archive对应一个文件系统目录。Hadoop archive的扩展名是*.har;
  2. 创建archives本质是运行一个Map/Reduce任务,所以应该在Hadoop集群上运行创建档案的命令;
  3. 创建archive文件要消耗和原文件一样多的硬盘空间;
  4. archive文件不支持压缩,尽管archive文件看起来像已经被压缩过;
  5. archive文件一旦创建就无法改变,要修改的话,需要创建新的archive文件。事实上,一般不会再对存档后的文件进行修改,因为它们是定期存档的,比如每周或每日;
  6. 当创建archive时,源文件不会被更改或删除;

​​​​​​​Snapshot快照的使用

快照顾名思义,就是相当于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  路径路径2

8、删除快照snapshot

hdfs dfs -deleteSnapshot <path> <snapshotName> 

​​​​​​​快照操作实际案例

1、开启与禁用指定目录的快照

hdfs dfsadmin -allowSnapshot /user

Allowing snaphot on /user succeeded

hdfs dfsadmin -disallowSnapshot /user

Disallowing snaphot on /user succeeded

2、对指定目录创建快照

注意:创建快照之前,先要允许该目录创建快照

hdfs dfsadmin -allowSnapshot /user

Allowing snaphot on /user succeeded

hdfs dfs -createSnapshot /user   

Created snapshot /user/.snapshot/s20190317-210906.549

通过web浏览器访问快照

http://node-1:50070/explorer.html#/user/.snapshot/

3、指定名称创建快照

hdfs dfs -createSnapshot /user mysnap1

Created snapshot /user/.snapshot/mysnap1

4、重命名快照

hdfs dfs -renameSnapshot /user mysnap1 mysnap2

5、列出当前用户所有可以快照的目录

hdfs lsSnapshottableDir

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值