《深度剖析HDFS》---核心设计

一、数据存储

内存存储:lazy_persist 直接将内存作为数据存放的载体,即节点的内存也充当一块“磁盘”。

异步存储步骤:

  1)对目标文件目录设置存储策略为LAZY_PERSIST;

  2)客户端向nameNode发送读写请求

   3)客户端请求到具体对DataNode后,dataNode把数据写入RAM,同时启动异步线程服务将内存数据持久化写到磁盘上。

二、内存存储流程分析

   1、设置内存存储策略:

    三种方式:命令、调用对应的程序方法、通过FileSystem的setStoragePolicy方法;

  2、LAZY_PERSIST内存存储(原理)

    数据存储的同时会有一批数据被异步地持久化,会涉及多个服务对象的合作。这些服务对象的指挥者就是FSDataSetImpl, 是一个管理dataNode所有磁盘读写的管家。

RamDiskAsyncLazyPersistService:异步持久化线程服务

LazyWriter:线程服务,不断从数据块列表中读取数据块,把数据块加入到异步持久化线程池中去执行

RamDiskReplicaLruTracker:副本块跟踪类,维护了所有持久化、未持久化的副本及总副本数据信息。

  3、LAZY_PERSIST内存存储的使用

     第一步,使用该存储策略需要有对应的存储介质,内存存储介质对应的类型上RAM_

DISK

   第二步,设置具体的文件策略类型。

在HDFS异构存储方式中,除了内存存储外还有Arichival Storage, 是一种高密度的存储,一般用于冷数据的存储。

三、异构存储

3.1、类型

      四种:RAM_DISK(true)      SSD(false).     DISK(false).    ARCHIVE.(false)     (存储速度由快到慢)

1.RAM_DISK(内存)
2.SSD(固态硬盘)
3.DISK(机械硬盘)
4.ARCHIVE(高密度存储介质)

true:代表转瞬即逝,并非持久化的

配置属性dfs.datanode.data.dir可对本地对应存储目录进行设置,带上存储类型标签,如:

[SSD] file://grid/dn/ssd0

 默认为DISK。

3.2、原理

  1」DataNode存储目录汇报

 2』存储心跳信息的更新处理

3」目标存储介质类型节点的请求

3.3、块存储类型选择策略

块存储指的是对hdfs文件的数据块副本储存,其中有6种策略:
HOT
COLD
WARM
ALL_SSD
ONE_SSD
LAZY_PERSIST

前三种根据冷热数据区分,后三种根据磁盘性质区分

 存储策略速度如下:

在这里插入图片描述

 四、HDFS存储策略的使用

列出现有存储策略:

hdfs storagepolicies -listPolicies

设置指定路径的存储策略

hdfs -setStroagePolicy -path <path> -policy <policy>

 获取指定路径的存储策略

hdfs -getStroagePolicy -path <path> 

 

手动迁移数据

数据迁移工具能扫描HDFS上的文件,如果不满足内部设置的存储策略,就重新迁移数据到目标存储类型节点上

hdfs mover -p <file/dirs> | -f <local file>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值