Hadoop3:HDFS-存储优化之异构存储(冷热数据分离)

一、简介

异构存储主要解决,不同的数据,存储在不同类型的硬盘中,达到最佳性能的效果。
在这里插入图片描述

它的使用,也是针对存储路径进行配置的。

二、存储类型和存储策略

1、存储类型

在这里插入图片描述

2、存储策略

在这里插入图片描述

3、常用命令

1、查看集群支持的策略

hdfs storagepolicies -listPolicies

在这里插入图片描述
可以看出,支持7种,但是,我们这里只做6种策略的配置。

2、查看指定路径的存储策略

hdfs storagepolicies -getStoragePolicy -path /hdfsdata

3、设置路径的存储策略

hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy WARM

4、取消存储策略

执行改命令之后该目录或者文件,以其上级的目录为准,如果是根目录,那么就是HOT

5、查看文件块的分布

hdfs fsck /hdfsdata -files -blocks -locations

6、查看集群节点

三、环境准备

1、方案规划

服务器规模:5台
集群配置:副本数为2,创建好带有存储类型的目录(提前创建)
集群规划:
节点 存储类型分配
在这里插入图片描述

2、修改配置

由上规划可知,这次的配置,每个节点都是不同的,所以,不能群发。
配置文件:hdfs-site.xml

102

<property>
	<name>dfs.replication</name>
	<value>2</value>
</property>
<property>
	<name>dfs.storage.policy.enabled</name>
	<value>true</value>
</property>
<property>
	<name>dfs.datanode.data.dir</name> 
	<value>[SSD]file:///opt/module/hadoop-3.1.3/hdfsdata/ssd,[RAM_DISK]file:///opt/module/hadoop-3.1.3/hdfsdata/ram_disk</value>
</property>

103

<property>
	<name>dfs.replication</name>
	<value>2</value>
</property>
<property>
	<name>dfs.storage.policy.enabled</name>
	<value>true</value>
</property>
<property>
	<name>dfs.datanode.data.dir</name>
	<value>[SSD]file:///opt/module/hadoop-3.1.3/hdfsdata/ssd,[DISK]file:///opt/module/hadoop-3.1.3/hdfsdata/disk</value>
</property>

104

<property>
	<name>dfs.replication</name>
	<value>2</value>
</property>
<property>
	<name>dfs.storage.policy.enabled</name>
	<value>true</value>
</property>
<property>
	<name>dfs.datanode.data.dir</name>
	<value>[RAM_DISK]file:///opt/module/hdfsdata/ram_disk,[DISK]file:///opt/module/hadoop-3.1.3/hdfsdata/disk</value>
</property>

105

<property>
	<name>dfs.replication</name>
	<value>2</value>
</property>
<property>
	<name>dfs.storage.policy.enabled</name>
	<value>true</value>
</property>
<property>
	<name>dfs.datanode.data.dir</name>
	<value>[ARCHIVE]file:///opt/module/hadoop-3.1.3/hdfsdata/archive</value>
</property>

106

<property>
	<name>dfs.replication</name>
	<value>2</value>
</property>
<property>
	<name>dfs.storage.policy.enabled</name>
	<value>true</value>
</property>
<property>
	<name>dfs.datanode.data.dir</name>
	<value>[ARCHIVE]file:///opt/module/hadoop-3.1.3/hdfsdata/archive</value>
</property>

我们可以看出,给对应路径前添加了标识
Hadoop集群是不会自己监测路径对应的磁盘属性的。
我们只能通过标识,然后,给对应的路径挂载对应类型的存储介质

3、集群重置

停止集群,删除data、logs目录,格式化NameNode,启动集群

myhadoop stop
jpsall

cd /opt/module/hadoop-3.1.3
rm -rf data/ logs/

hdfs namenode -format

创建目录

hadoop fs -mkdir /hdfsdata

上传数据

hadoop fs -put /opt/module/hadoop-3.1.3/NOTICE.txt /hdfsdata

在这里插入图片描述

四、HOT策略实验

策略逻辑:DISK:n

1、查看路径策略

hdfs storagepolicies -getStoragePolicy -path /hdfsdata

在这里插入图片描述
没有定义,就是采用默认策略,就是HOT策略。

2、查看上传的文件分布

hdfs fsck /hdfsdata -files -blocks -locations

在这里插入图片描述
两个副本,都存储在DISK类型的路径里。

五、WARM策略实验

策略逻辑:DISK:1,ARCHIVE:n-1
1、设置WARM策略

hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy WARM
hdfs storagepolicies -getStoragePolicy -path /hdfsdata

在这里插入图片描述2、查看文件分布

hdfs fsck /hdfsdata -files -blocks -locations

发现没有变化
在这里插入图片描述
3、移动文件

hdfs mover /hdfsdata

在这里插入图片描述
4、再次查看文件分布

hdfs fsck /hdfsdata -files -blocks -locations

已经按照WARM策略分布文件
所以,我们在跟新路径存储策略之后,需要执行一下移动命令!
在这里插入图片描述

六、COLD策略实验

策略逻辑:ARCHIVE:n
1、设置COLD策略

hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy COLD
hdfs storagepolicies -getStoragePolicy -path /hdfsdata

注意:当我们将目录设置为COLD并且我们未配置ARCHIVE存储目录的情况下,不可以向该目录直接上传文件,会报出异常。
在这里插入图片描述
2、移动文件

hdfs mover /hdfsdata

3、查看文件分布

hdfs fsck /hdfsdata -files -blocks -locations

在这里插入图片描述

七、ONE_SSD策略实验

策略逻辑:SSD:1,DISK:n-1
1、设置ONE_SSD策略

hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy One_SSD
hdfs storagepolicies -getStoragePolicy -path /hdfsdata

在这里插入图片描述
2、移动文件

hdfs mover /hdfsdata

3、查看文件分布

hdfs fsck /hdfsdata -files -blocks -locations

在这里插入图片描述

八、ALL_SSD策略实验

策略逻辑:SSD:n
1、设置ALL_SSD策略

hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy All_SSD
hdfs storagepolicies -getStoragePolicy -path /hdfsdata

在这里插入图片描述

2、移动文件

hdfs mover /hdfsdata

3、查看文件分布

hdfs fsck /hdfsdata -files -blocks -locations

在这里插入图片描述

九、LAZY_PERSIST策略实验

策略逻辑:RAM_DISK:1,DISK:n-1
1、设置LAZY_PERSIST策略

hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy lazy_persist
hdfs storagepolicies -getStoragePolicy -path /hdfsdata

在这里插入图片描述
2、移动文件

hdfs mover /hdfsdata

3、查看文件分布

hdfs fsck /hdfsdata -files -blocks -locations

在这里插入图片描述
发现,没有在内存里存储数据。

注意:
这是因为,我们还需要配置“dfs.datanode.max.locked.memory”,“dfs.block.size”参数。
dfs.block.size:设置块大小
dfs.datanode.max.locked.memory:设置内存存储数据的大小,默认0kb。
在这里插入图片描述
另外,内存存储数据的大小值设置,必须大于等于块大小。

同时,Linux系统也限制了内存存储数据的大小,默认64KB

ulimit -a

在这里插入图片描述
所以,无论是HDFS,还是Linux系统,都不建议把数据存放在内存中
因为,不安全,断电即丢失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值