HDFS 系列六:DataNode 工作机制

2024-02-26 12:18

本文主要是介绍HDFS 系列六:DataNode 工作机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 6. HDFS 其他功能
    • 6.1 集群间数据拷贝
    • 6.2 Hadoop 存档
    • 6.2.1 理论概述
      • 6.2.2 案例实操
    • 6.3 快照管理
      • 6.3.1 基本语法
      • 6.3.2 案例实操
    • 6.4 回收站
      • 6.4.1 默认回收站
      • 6.4.2 启用回收站
      • 6.4.3 查看回收站
      • 6.4.4 修改访问垃圾回收站用户名称
      • 6.4.5 进入回收站
      • 6.4.6 恢复回收站数据
      • 6.4.7清空回收站

6. HDFS 其他功能

6.1 集群间数据拷贝

  1. scp 实现两个远程主机之间的文件复制
scp -r hello.txt root@master:/user/wj/hello.txt		// 推 push
scp -r root@master:/user/wj/hello.txt  hello.txt		// 拉 pull
scp -r root@master:/user/wj/hello.txt root@master:/user/wj   //是通过本地主机中转实现两个远程主机的文件复制;如果在两个远程主机之间ssh没有配置的情况下可以使用该方式。
  1. 采用 discp 命令实现两个 Hadoop 集群之间的递归数据复制
bin/hadoop distcp hdfs://master1:9000/user/wj/hello.txt hdfs://master2:9000/user/wj/hello.txt

6.2 Hadoop 存档

6.2.1 理论概述

每个文件均按块存储,每个块的元数据存储在 Namenode 的内存中,因此 Hadoop 存储小文件会非常低效

因为大量的小文件会耗尽 Namenode 中的大部分内存

但注意,存储小文件所需要的磁盘容量和存储这些文件原始内容所需要的磁盘空间相比也不会增多

例如,一个 1MB 的文件以大小为 128MB 的块存储,使用的是 1MB 的磁盘空间,而不是128MB

Hadoop 存档文件或HAR文件,是一个更高效的文件存档工具,它将文件存入 HDFS 块,在减少 Namenode 内存使用的同时,允许对文件进行透明的访问

具体说来,Hadoop 存档文件可以用作 MapReduce 的输入

6.2.2 案例实操

  1. 需要启动 yarn 进程

    start-yarn.sh
    
  2. 归档文件

    归档成一个叫做 xxx.har 的文件夹,该文件夹下有相应的数据文件

    Xx.har目录是一个整体,该目录看成是一个归档文件即可

    bin/hadoop archive -archiveName myhar.har -p /user/wj   /user/my
    
  3. 查看归档

    hadoop fs -lsr /user/my/myhar.har
    hadoop fs -lsr har:///myhar.har
    
  4. 解归档文件

    hadoop fs -cp har:/// user/my/myhar.har /* /user/wj
    

6.3 快照管理

快照相当于对目录做一个备份,并不会立即复制所有文件,而是指向同一个文件

当写入发生时,才会产生新文件

6.3.1 基本语法

  1. hdfs dfsadmin -allowSnapshot 路径 (功能描述:开启指定目录的快照功能)

  2. dfs dfsadmin -disallowSnapshot 路径 (功能描述:禁用指定目录的快照功能,默认是禁用)

  3. hdfs dfs -createSnapshot 路径 (功能描述:对目录创建快照)

  4. hdfs dfs -createSnapshot 路径 名称 (功能描述:指定名称创建快照)

  5. hdfs dfs -renameSnapshot 路径 旧名称 新名称 (功能描述:重命名快照)

  6. hdfs lsSnapshottableDir (功能描述:列出当前用户所有可快照目录)

  7. hdfs snapshotDiff 路径1 路径2 (功能描述:比较两个快照目录的不同之处)

  8. hdfs dfs -deleteSnapshot (功能描述:删除快照)

6.3.2 案例实操

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

    hdfs dfsadmin -allowSnapshot /user/wj/data		
    hdfs dfsadmin -disallowSnapshot /user/wj/data
    
  2. 对目录创建快照

    hdfs dfs -createSnapshot /user/wj/data		// 对目录创建快照
    

    通过web访问hdfs://hadoop102:9000/user/wj/data/.snapshot/s……// 快照和源文件使用相同数据块

    hdfs dfs -lsr /user/wj/data/.snapshot/
    
  3. 指定名称创建快照

    hdfs dfs -createSnapshot /user/wj/data miao170508
    
  4. 重命名快照

    hdfs dfs -renameSnapshot /user/wj/data/ miao170508 wj111
    
  5. 列出当前用户所有可快照目录

    hdfs lsSnapshottableDir
    
  6. 比较两个快照目录的不同之处

    hdfs snapshotDiff /user/wj/data/  .  .snapshot/wj170508
    
  7. 恢复快照

    hdfs dfs -cp /user/wj/input/.snapshot/s20170708-134303.027 /user
    

6.4 回收站

6.4.1 默认回收站

默认值 fs.trash.interval=0,0 表示禁用回收站,可以设置删除文件的存活时间

默认值 fs.trash.checkpoint.interval=0,检查回收站的间隔时间

要求 fs.trash.checkpoint.interval <= fs.trash.interval

6.4.2 启用回收站

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

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

6.4.3 查看回收站

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

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

进入垃圾回收站用户名称,默认是 dr.who,修改为 wj 用户

[core-site.xml]

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

6.4.5 进入回收站

通过程序删除的文件不会经过回收站,需要调用 moveToTrash() 才进入回收站

Trash trash = New Trash(conf);
trash.moveToTrash(path);

6.4.6 恢复回收站数据

hadoop fs -mv /user/wj/.Trash/Current/user/wj/input    /user/wj/input

6.4.7清空回收站

hdfs dfs -expunge

这篇关于HDFS 系列六:DataNode 工作机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/748848

相关文章

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

JVM垃圾回收机制之GC解读

《JVM垃圾回收机制之GC解读》:本文主要介绍JVM垃圾回收机制之GC,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、死亡对象的判断算法1.1 引用计数算法1.2 可达性分析算法二、垃圾回收算法2.1 标记-清除算法2.2 复制算法2.3 标记-整理算法2.4

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

SpringRetry重试机制之@Retryable注解与重试策略详解

《SpringRetry重试机制之@Retryable注解与重试策略详解》本文将详细介绍SpringRetry的重试机制,特别是@Retryable注解的使用及各种重试策略的配置,帮助开发者构建更加健... 目录引言一、SpringRetry基础知识二、启用SpringRetry三、@Retryable注解

SpringKafka错误处理(重试机制与死信队列)

《SpringKafka错误处理(重试机制与死信队列)》SpringKafka提供了全面的错误处理机制,通过灵活的重试策略和死信队列处理,下面就来介绍一下,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、Spring Kafka错误处理基础二、配置重试机制三、死信队列实现四、特定异常的处理策略五

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

java中反射(Reflection)机制举例详解

《java中反射(Reflection)机制举例详解》Java中的反射机制是指Java程序在运行期间可以获取到一个对象的全部信息,:本文主要介绍java中反射(Reflection)机制的相关资料... 目录一、什么是反射?二、反射的用途三、获取Class对象四、Class类型的对象使用场景1五、Class

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Nginx之upstream被动式重试机制的实现

《Nginx之upstream被动式重试机制的实现》本文主要介绍了Nginx之upstream被动式重试机制的实现,可以通过proxy_next_upstream来自定义配置,具有一定的参考价值,感兴... 目录默认错误选择定义错误指令配置proxy_next_upstreamproxy_next_upst

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri