HADOOP之HDFS 的数据存储----异构存储(2)

异构存储

3.1存储类型:

Storage Type:

    RAM_DISK:内存存储类型

    SSD:

    DISK:硬盘存储类型

    ARCHIVE:高密度存储类型

                                      

                                                                       图 HDFS 存储介质类型

3.2 异构存储原理

     1.DataNode通过心跳汇报自身数据存储目录的StorageType给NameNode

     2.NameNode进行汇总并更新集群内各个节点的存储类型情况

     3.待复制文件根据自身设定的存储策略信息向NameNode请求DataNode

1) DataNode 存储目录汇报

                                                

                                                         图 DataNode存储目录汇报流程图

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

                                         

                                                         图 存储心跳信息更新处理流程图

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

                                   

                                                                  图 获取存储节点的请求

 

 

3.3 块存储类型选择策略

    BlockStoragePolicy#chooseStorageTypes()

    fallback情况,当存储类型不可用时,退一级选择使用的存储类型。

    从BlockStoragePolicySuite策略集合中获取策略。

3.4 块策略集合

BlockStoragePolicySuite#createDefaultSuite()

     LAZY_PERSIST  (RAM_DISK, DISK)

     ALL_SSD  (SSD)

     ONE_SSD  (SSD, DISK)

     HOT  (DISK)

     WARN  (DISK, ARCHIVE)

     COLD  (ARCHIVE)

   从上往下,速度由快到慢,同一个策略的选择存储类型是:从左往右,只有第一块是第一个位置上的存储策略,其他的是第二个位置上的存储策略。

   默认的是HOT存储策略。

 

3.5 块存储策略的调用

                                                                      图 异构存储策略总的调用过程

 

3.6 异构存储策略不足之地

当文件目录存储策略做出变更时不会自动的数据迁移,有两种情况:

  1. 原先未设置 toragePolicy ,后来进行了设置。
  2. 原先设置了A策略,后来又设置了B策略。

社区目前已经有相关的 JIRA 在解决这个问题, HDFS-10285 ( Storage

Policy Satisfier in Namenode )

 

3.7 HDFS 存储策略的使用

hdfs storagepolicies -help

             -listPolicies

             -getStoragePolicy -path path

             -setStoragePolicy -path path -policy poliy

hdfs mover -help

              [usage] hdfs mover [-p <files/dirs> | -f <local file>]

 

案例:

1.上层目录没有设置存储策略,新创建的目录/文件默认是unspecified

2.在已经存在的目录(该目录没有设置过存储策略)上设置存储策略,该目录及其子目录和文件都会继承该存储策略。

3.如果上层目录有设置存储策略,新创建的目录在没有设置存储策略的情况下也会继承该存储策略。(文件上传到设置了存储策略目录下的问题,如错误1)

4.修改已经设置了存储策略的目录,该目录下的文件会自动修改为和目录相同的存储策略;但是该目录的子目录及子目录下的文件不会修改。

5.已经设置存储策略的文件,在移动到已经设置存储策略的目录下时,文件的存储策略会修改为和目录相同的存储策略。

6.文件的存储策略可以设置为和上层目录不同的存储策略。

 

错误:

  1. 上传文件到hdfs目录(已设置存储策略)下,报错

     put: File /a/a1/a11/a112/a112f1._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1).  There are 1 datanode(s) running and no node(s) are excluded in this operation.

     处理方案:先将本地文件上传到没有设置存储策略的目录下,然后移动到有存储策略的目录下。

也可以移步https://blog.csdn.net/androidlushangderen/article/details/51105876

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值