HDFS异构存储简介

企业数据中可分为实时数据、热数据、冷数据、极冷数据,不同的数据在使用频率上存在很大的区别比如实时数据可能是需要实时处理并实施反馈给客户端,而冷数据是不常用可能几周或者几个月才会用到一次。

考虑到上面实际情况,HDFS通过异构存储机制将不同需求或者冷热数据存储到不同的介质中,即兼顾了性能又兼顾了成本。

 

HDFS异构存储声明了4种存储类型:

RAM_DISK(内存)

SSD(固态硬盘)

DISK(机械硬盘),默认使用

ARCHIVE(高密度存储介质、存储归档历史数据)

 

异构存储的开启需要通过配置文件主动声明

配置文件:hdfs-site.xml,配置的参数:

<property>

    <name>dfs.namenode.name.dir</name>

    <value>[SSD]file:/${hadoop.tmp.dir}/dfs/data,[ARCHIVE]file:/${hadoop.tmp.dir}/dfs/data/archive,</value>

</property>

 

对于数据的存储介质,HDFS的BlockStoragePolicySuite类内部定义了6种策略

HOT:(默认策略)用于存储和计算。流行的数据,仍然用于处理,将留在此策略中。当块是热的时,所有副本都存储在 DISK 中。

COLD:仅适用于计算有限的存储。不再使用的数据或需要存档的数据从热存储移动到冷存储。当块为冷时,所有副本都存储在存档中。

WARM:部分热和部分冷。当块是暖的时,其某些副本存储在 DISK 中,其余副本存储在存档中。

ALL_SSD:用于将所有副本存储在 SSD 中。

ONE_SSD:用于将其中一个副本存储在 SSD 中。其余副本存储在 DISK 中。

LAYZ_PERSIST:用于写入内存中具有单个副本的块。副本首先写入RAM_DISK中,同时启动异步线程将内存数据持久化到 DISK 中(该异步线程是延时处理的)。

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

 

列出所有存储策略命令:

hdfs storagepolicies -listPolicies #命令

Block Storage Policies:

BlockStoragePolicy{PROVIDED:1, storageTypes=[PROVIDED, DISK], creationFallbacks=[PROVIDED, DISK], replicationFallbacks=[PROVIDED, DISK]}

BlockStoragePolicy{COLD:2, storageTypes=[ARCHIVE], creationFallbacks=[], replicationFallbacks=[]}

BlockStoragePolicy{WARM:5, storageTypes=[DISK, ARCHIVE], creationFallbacks=[DISK, ARCHIVE], replicationFallbacks=[DISK, ARCHIVE]}

BlockStoragePolicy{HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]}

BlockStoragePolicy{ONE_SSD:10, storageTypes=[SSD, DISK], creationFallbacks=[SSD, DISK], replicationFallbacks=[SSD, DISK]}

BlockStoragePolicy{ALL_SSD:12, storageTypes=[SSD], creationFallbacks=[DISK], replicationFallbacks=[DISK]}

BlockStoragePolicy{LAZY_PERSIST:15, storageTypes=[RAM_DISK, DISK], creationFallbacks=[DISK], replicationFallbacks=[DISK]}

设置存储策略:

hdfs storagepolicies -setStoragePolicy -path <path> -policy <policy> #命令

-path <path> 应用目录或文件的路径

-policy <policy> 存储策略的名称

 

取消存储策略:

hdfs storagepolicies -unsetStoragePolicy -path <path> #命令

在执行unset命令之后,将应用当前目录最近的上级目录的存储策略,如果没有则使用默认的存储策略。

 

获取存储策略:

hdfs storagepolicies -getStoragePolicy -path <path> #命令

 

查看不同存储策略文件的block位置:

hdfs fsck <path> -files -blocks -locations #命令

 

实例:

D:\apache-paas\hadoop-3.1.4\bin>hadoop fs -ls /

Found 1 items

drwxrwxrwx - root supergroup 0 2021-02-02 10:54 /test

 

D:\apache-paas\hadoop-3.1.4\bin>hdfs storagepolicies -getStoragePolicy -path /test

The storage policy of /test is unspecified

 

D:\apache-paas\hadoop-3.1.4\bin>hdfs storagepolicies -setStoragePolicy -path /test -policy COLD

Set storage policy COLD on /test

 

D:\apache-paas\hadoop-3.1.4\bin>hdfs storagepolicies -getStoragePolicy -path /test

The storage policy of /test:

BlockStoragePolicy{COLD:2, storageTypes=[ARCHIVE], creationFallbacks=[], replicationFallbacks=[]}

 

D:\apache-paas\hadoop-3.1.4\bin>hdfs storagepolicies -setStoragePolicy -path /test -policy HOT

Set storage policy HOT on /test

 

D:\apache-paas\hadoop-3.1.4\bin>hdfs storagepolicies -getStoragePolicy -path /test

The storage policy of /test:

BlockStoragePolicy{HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]}

 

D:\apache-paas\hadoop-3.1.4\bin>hdfs storagepolicies -unsetStoragePolicy -path /test

Unset storage policy from /test

 

D:\apache-paas\hadoop-3.1.4\bin>hdfs storagepolicies -getStoragePolicy -path /test

The storage policy of /test is unspecified

 

LAYZ_PERSIST设置使用

1、虚拟内存盘配置

mount -t tmpfs -o size=1g tmpfs /mnt/dn-tmpfs/

将tmpfs挂载到目录/mnt/dn-tmpfs/,并限制内存使用大小为1G。

tmpfs,临时文件系统,是一种基于内存的文件系统。tmpfs是最好的基于RAM的文件系统。

2、内存存储介质设置

配置文件:hdfs-site.xml

<property>

    <name>dfs.datanode.data.dir</name>

    <value>/grid/0,/grid/1,[RAM_DISK]/mnt/dn-tmpfs</value>

</property>

3、参数设置优化

dfs.storage.policy.enabled

是否开启异构存储,默认true开启。

dfs.datanode.max.locked.memory

用于在数据节点上的内存中缓存块副本的内存量(以字节为单位)。默认情况下,此参数设置为0,这将禁用内存中缓存。内存值过小会导致内存中的总的可存储的数据块变少,如果超过DataNode能承受的最大内存,部分内存块会被直接移除。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

军大_j

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值