zoukankan      html  css  js  c++  java
  • hdfs冷热数据分层存储

    hdfs如何让某些数据查询快,某些数据查询慢?

    • hdfs冷热数据分层存储

    本质: 不同路径制定不同的存储策略。

    hdfs存储策略

    hdfs的存储策略 依赖于底层的存储介质。

    • hdfs支持的存储介质:
    1. ARCHIVE:高存储密度但耗电较少的存储介质,例如磁带,通常用来存储冷数据
    2. DISK:磁盘介质,这是HDFS最早支持的存储介质
    3. SSD:固态硬盘,是一种新型存储介质,目前被不少互联网公司使用
    4. RAM_DISK :数据被写入内存中,同时会往该存储介质中再(异步)写一份
    • 存储策略可配置,可以设置全局的,也可以设置到某个文件夹。
    1. Lazy_persist:一个副本保存在内存RAM_DISK中,其余副本保存在磁盘中
    2. ALL_SSD:所有副本都保存在SSD中
    3. One_SSD:一个副本保存在SSD中,其余副本保存在磁盘中
    4. Hot:所有副本保存在磁盘中,这也是默认的存储策略
    5. Warm:一个副本保存在磁盘上,其余副本保存在归档存储上
    6. Cold:所有副本都保存在归档存储上

    所谓的存储策略,其实就是将数据存储在不同的存储介质中。如果数据存储在SSD中,读写速度自然比存储在机械硬盘中的数据快。

    总体上HDFS异构存储的价值在于,根据数据热度采用不同策略从而提升集群整体资源使用效率。对于频繁访问的数据,将其全部或部分保存在更高访问性能的存储介质(内存或SSD)上,提升其读写性能;对于几乎不会访问的数据,保存在归档存储介质上,降低其存储成本。但是HDFS异构存储的配置需要用户对目录指定相应的策略,即用户需要预先知道每个目录下的文件的访问热度,在实际大数据平台的应用中,这是比较困难的一点。

    如何配置存储策略

    $ hdfs storagepolicies -help
    [-listPolicies]
    
    List all the existing block storage policies.
    
    [-setStoragePolicy -path <path> -policy <policy>]
    
    Set the storage policy to a file/directory.
    
    <path>    The path of the file/directory to set storage policy 
    <policy>  The name of the block storage policy                 
    
    [-getStoragePolicy -path <path>]
    
    Get the storage policy of a file/directory.
    
    <path>  The path of the file/directory for getting the storage policy 
    

    事先划分好冷热数据存储目录,设置好对应的Storage Policy,然后后续相应的程序在对应分类目录下写数据,自动继承父目录的存储策略。

    如何修改已有配置?

    数据迁移

    为了让存储策略生效了,hdfs中提供了一个新的数据迁移工具mover,mover与balancer工具相似都是周期触发的,运行时,它会扫描hdfs中各个文件的block以确认该block块的当前存储是否满足用户指定的storage policy,对于那些storage policy发生变化的block块,该工具会将对应的block块进行迁移。

    关于HBASE的冷热数据存储

    • HBASE数据存储于hdfs的相对路径,可以通过制定hbase相对路径的存储策略,来让hbase的数据存储于SSD

    hbase如何利用上述hdfs的异构存储特性?

    HBase-12848(Utilize Flash storage for WAL)是1.1.0新推出的特性,它可以将WAL单独置于SSD上,配置方式是将如下的配置做相应修改:

    hbase.wal.storage.policy
    

    该配置的默认值是NONE,也就是wal文件和数据都存储在DISK上,不做区分,可以修改为ONE_SSD或者ALL_SDD,不同在于:
    ONE_SSD:wal的一个副本置于SSD上,而其他副本仍然在默认存储;
    ALL_SSD:wal文件的所有副本都存储于SSD盘上;

    HDFS纠删码

    HDFS纠删码技术能够降低数据存储的冗余度,以RS(3,2)为例,其数据冗余度为67%,相比Hadoop默认的200%大为减少。但是纠删码技术存储数据和数据恢复都需要消耗cpu进行计算,实际上是一种以时间换空间的选择,因此比较适用的场景是对冷数据的存储。冷数据存储的数据往往一次写入之后长时间没有访问,这种情况下可以通过纠删码技术减少副本数。

    大数据存储优化:SSM

    SSM(Smart Storage Management)系统

    异构存储原理

    概况性的总结为3小点:

    1. DataNode通过心跳汇报自身数据存储目录的StorageType给NameNode,
    2. 随后NameNode进行汇总并更新集群内各个节点的存储类型情况
    3. 待复制文件根据自身设定的存储策略信息向NameNode请求拥有此类型存储介质的DataNode作为候选节点

    从以上3点来看,本质原理并不复杂.

    其他问题探讨

    1. 同一类数据内部 是否支持冷热数据存储?比如让1年内的数据查询比较快,2-5年的数据查询比较慢?
    • A: 有几个方案:
      • SSM: 不成熟,还未大量使用
      • 分表:需要编写分表中间件等。此外hbase的region实际上就是帮我们做了分表的工作,屏蔽了分表的细节。
        ......

    参考文献


    tips:本文属于自己学习和实践过程的记录,很多图和文字都粘贴自网上文章,没有注明引用请包涵!如有任何问题请留言或邮件通知,我会及时回复。

  • 相关阅读:
    放缩ImageView
    2017/5/3 afternoon
    2017/5/3 morning
    2017/5/2 afternoon
    2017/5/2 morning
    2017/4/28 afternoon
    2017/4/28 morning
    2017/4/27 afternoon
    2017/4/27 morning
    2017/4/26 afternoon
  • 原文地址:https://www.cnblogs.com/small-k/p/8847926.html
Copyright © 2011-2022 走看看