HDFS存储策略
一、简介
在HDFS存储的数据中,由于各种数据的用途不一样,有的数据需要经常访问,有的数据比较老,访问频率低,也就是冷热数据。可以有不同的存储方式,所以不一样的数据可以设置不同的存储策略。
一共有四种存储的方式,RAM_DISK,DISK,SSD,ARCHIVE。
四种存储类型
1.DISK:表示普通磁盘(机械磁盘)
2.SSD:表示固态硬盘。
3.RAM_DISK:表示内存硬盘,类似虚拟内存盘,简单理解为内存。
4.ARCHIVE:这个并不是指某种存储介质,为了满足高密度的存储而定义的一种存储类型,一般对于归档的,访问不频繁的数据可以用ARCHIVE的形式存储。
以上四种存储类型的存取的速度大小为:
RAM_DISK->SSD->DISK->ARCHIVE。他们存储的成本也是由高到低。
根据不同方式之间的组合,有以下几种存储策略:
1.Hot 用于存储和计算。经常使用并且的数据将用这种存储策略。当数据块处于Hot状态时,他们的存储方式都为DISK.。
2.Cold 用于存储使用很少的数据。不在使用的数据或需要归档的数据将从Hot移动到cold存储。当数据处于cold状态时,所有副本将会存储到ARCHIVE。
3.Warm 部分hot,部分cold 。当存储策略是Warm时,一部分副本存储到DISK,其余副本存储到ARCHIVE.。
4.ALL_SSD 所有副本存储到SSD。
5.One_SSD 用于一个副本存储到SSD,其余副本存储到DISK。
6.Lazy_Persist 用于内存中写入当个副本的块。副本首先写入RAM_DISK,然后延迟保存到磁盘。
存储策略由以下字段组成:
1.Policy ID
2.Policy Name
3.块放置的存储类型列表
4.用于创建文件的备用存储类型列表。
5.用于放置副本的备用存储类型列表。
如果有足够的空间,将根据3。中的指定存储策类型列表存储数据块副本。当3.中部分存储类型空间不足时,4.和5.中指定的备用存储类型列表将会替换空间不够的存储类型来用于文件的创建和副本的复制。
二、存储策略解析
当一个文件或目录创建时,存储策略并没有指定。存储策略可以通过“storagepolicies -setStoragePolicy”来指定。文件或目录的有效存储策略由以下规则解析:
1.如果文件或目录指定了一个存储策略,那么就使用这个存储策略。
2.对于没有指定存储策略的文件或目录,如果他是根目录,则使用默认存储策略,如果不是根目录,则使用其父目录的有效存储策略。
有效存储策略可以通过“storagepolicies -getStoragePolicy”命令来查看。
策略表格
三、使用
1.列出所有存储策略
hdfs storagepolicies -listPolicies
2.查看某一路径是否设置存储策略
hdfs storagepolicies -getStoragePolicy -path /test
3.设置存储策略
hdfs storagepolicies -setStoragePolicy -path /test -policy Hot
4.取消的存储策略
hdfs storagepolicies -unsetStoragePolicy -path /test
取消存储策略之后,会使用默认的存储策略,如果有父目录,则使用父目录的存储策略。
5.当更改某个目录的存储策略后,其目录下的文件并不会按新的存储策略自动迁移数据。需要通过命令触发按新的存储策略进行迁移。
hdfs mover -p /test