Hadoop 从 0 到 1 学习 ——第七章 HDFS 2.X新特性

1. 集群间数据拷贝

  1. scp实现两个远程主机之间的文件复制

    推 push

    $ scp -r hello.txt root@hadoop103:/user/dwjf321/hello.txt
    

    拉 pull

    $ scp -r root@hadoop103:/user/atguigu/hello.txt hello.txt
    

    通过本地主机中转实现两个远程主机的文件复制;如果在两个远程主机之间ssh没有配置的情况下

    $ scp -r root@hadoop103:/user/dwjf321/hello.txt root@hadoop104:/user/dwjf321
    
  2. 采用 distcp命令实现两个Hadoop集群之间的递归数据复制

    [dwjf321@hadoop102 hadoop-2.7.2]$  bin/hadoop distcp hdfs://haoop102:9000/user/atguigu/hello.txt hdfs://hadoop103:9000/user/atguigu/hello.txt
    

2. 小文件存档

2.1 HDFS 存储小文件弊端

每个文件均按块存储,每个块的元数据存储在 NameNode 的内存中,因此 HDFS 存储小文件会非常低效。因为大量小文件会耗尽 NameNode 中的大部分内存并且增加寻址时间

但注意,存储小文件所需的磁盘容量和数据块的大小无关。例如,一个 1MB 的文件设置为 128MB 的块存储,实际使用的是 1MB 的磁盘空间,而不是 128MB。

2.2 解决存储小文件办法之一

HDFS 存档文件或 HAR 文件,是一个更搞笑的文件存档工具,它将文件存入 HDFS 块,在减少 NameNode 内存使用的同事,允许对文件进行透明的访问。具体来说,HDFS 存档文件对内还是一个一个独立文件,对 NameNode 而言却是一个整体,减少 NameNode 的内存

在这里插入图片描述

2.3 案例操作

  1. 启动 YARN 进程

    [dwjf321@hadoop102 hadoop-2.7.2]$ start-yarn.sh
    
  2. 归档文件

    /user/dwjf321/input目录里面的所有文件归档成一个叫 input.har的归档文件,并把归档后文件存储到 /user/dwjf321/output路径下。

    [dwjf321@hadoop102 hadoop-2.7.2]$ bin/hadoop archive -archiveName input.har –p  /user/dwjf321/input   /user/dwjf321/output
    
  3. 查看文档

    [dwjf321@hadoop102 hadoop-2.7.2]$ hadoop fs -lsr /user/dwjf321/output/input.har
    [dwjf321@hadoop102 hadoop-2.7.2]$ hadoop fs -lsr har:///user/dwjf321/output/input.har
    
  4. 解归档文件

    [dwjf321@hadoop102 hadoop-2.7.2]$ hadoop fs -cp har:/// user/dwjf321/output/input.har/*    /user/dwjf321
    

3. 回收站

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。

3.1 开启回收站功能参数说明

  1. fs.trash.interval:默认值0,表示禁用回收站,其他值表示设置文件的存活时间。
  2. fs.trash.checkpoint.interval:检查回收站的间隔时间。如果该值为0,则该值设置和 fs.trash.interval的参数值相等。
  3. 要求 fs.trash.checkpoint.interval< fs.trash.interval

3.2 回收站工作机制

在这里插入图片描述

回收站
  1. 启用回收站

    修改core-site.xml,配置垃圾回收时间为1分钟。

    <property>
        <name>fs.trash.interval</name>
        <value>1</value>
    </property>
    
  2. 查看回收站

    回收站在集群中的路径:/user/dwjf321/.Trash/….

  3. 修改访问垃圾回收站用户名称

    进入垃圾回收站用户名称,默认是 dr.who,修改core-site.xml为dwjf321用户

    <property>
      <name>hadoop.http.staticuser.user</name>
      <value>dwjf321</value>
    </property>
    
  4. 通过程序删除的文件不会经过回收站,需要调用 moveToTrash()才进入回收站

    Trash trash = New Trash(conf);
    trash.moveToTrash(path);
    
  5. 恢复回收站数据

    [dwjf321@hadoop102 hadoop-2.7.2]$ hadoop fs -mv /user/dwjf321/.Trash/Current/user/dwjf321/input    /user/dwjf321/input
    
  6. 清空回收站

    [dwjf321@hadoop102 hadoop-2.7.2]$ hadoop fs -expunge
    

4. 快照管理

4.1 快照管理

快照相当于对目录做了一个备份。并不会立即复制所有文件,而是记录文件变化

操作 功能描述
hdfs dfsadmin -allowSnapshot 路径 开启指定目录的快照功能
hdfs dfsadmin -disallowSnapshot 路径 禁用指定目录的快照功能,默认是禁用
hdfs dfs -reateSnapshot 路径 对目录创建快照
hdfs dfs -reateSnapshot 路径 名称 指定名称创建快照
hdfs dfs -renameSnapshot 路径 旧名称 新名称 重命名快照
hdfs dfs lsSnapshottableDir 列出当前用户所有可快照目录
hdfs dfs snapshotDiff 路径1 路径2 比较两个快照目录的不同之处
hdfs dfs -deleteSnapshot 路径 快照名 删除快照

4.2 案例操作

  1. 开启/禁用指定目录的快照功能

    [dwjf321@hadoop102 hadoop-2.7.2]$ hdfs dfsadmin -allowSnapshot /user/dwjf321/input
    
    [dwjf321@hadoop102 hadoop-2.7.2]$ hdfs dfsadmin -disallowSnapshot /user/dwjf321/input
    
  2. 对目录创建快照

    [dwjf321@hadoop102 hadoop-2.7.2]$ hdfs dfs -createSnapshot /user/dwjf321/input
    

    通过web访问 hdfs://hadoop102:50070/user/dwjf321/input/.snapshot/s……// 快照和源文件使用相同数据

    [dwjf321@hadoop102 hadoop-2.7.2]$ hdfs dfs -lsr /user/dwjf321/input/.snapshot/
    
  3. 指定名称创建快照

    [dwjf321@hadoop102 hadoop-2.7.2]$ hdfs dfs -createSnapshot /user/dwjf321/input  test_20201022
    
  4. 重命名快照

    [dwjf321@hadoop102 hadoop-2.7.2]$ hdfs dfs -renameSnapshot /user/dwjf321/input/  test_20201022 test_20201023
    
  5. 列出当前用户所有可快照目录

    [dwjf321@hadoop102 hadoop-2.7.2]$ hdfs lsSnapshottableDir
    
  6. 比较两个快照目录的不同之处

    [dwjf321@hadoop102 hadoop-2.7.2]$ hdfs snapshotDiff /user/dwjf321/input/  .  .snapshot/test_20201023	
    
  7. 恢复快照

    [dwjf321@hadoop102 hadoop-2.7.2]$ hdfs dfs -cp /user/dwjf321/input/.snapshot/test_20201023-1343233.027 /user
    

猜你喜欢

转载自blog.csdn.net/dwjf321/article/details/110197031