HDFS存储策略

Posted 程序猿码码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS存储策略相关的知识,希望对你有一定的参考价值。

Apache Hadoop 2.9.0

请查看原文:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html

(如果转发,请标明出处)

介绍

归档存储Archival Storage是将不断增长的存储容量与计算容量分离的解决方案密度更高、存储成本更低、计算能力更低的节点正在变得可用,可以用作集群中的冷存储。根据策略,可以将数据从热节点移动到冷节点。向冷存储添加更多节点可以独立于集群中的计算容量来增加存储。

Heterogeneous Storage和归档存储(Archival Storage)提供的框架将HDFS架构推广到包含SSDmemory在内的其他类型的存储介质。用户为了更好的性能可以选择将数据存储到SSD或者memory

存储类型和存储策略

存储类型:ARCHIVE, DISK, SSD and RAM_DISK

   Heterogeneous Storage (HDFS-2832)的第一个阶段,将datanode 存储模型从可能对应于多个物理存储介质的单个存储转变成存储集合,其中每个存储对应于一个物理存储介质。它还添加了存储类型,DISKSSD的概念,其中DISK是默认的存储类型。

为了支持归档存储,增加了一种新的存储类型ARCHIVE,它具有较高的存储密度(PB级别的存储容量),但是计算能力较小。

添加了另一种新的存储类型RAM _ DISK,用于支持在内存中写入单个副本文件

存储策略:Hot, Warm, Cold, All_SSD, One_SSD and Lazy_Persist

提出了一种新的存储策略概念,使文件可以根据存储策略存储在不同的存储类型中。

目前有以下集中存储策略:

① Hot - 用于存储和计算。受欢迎且仍用于处理的数据将保留在此策略中。当数据块处于hot状态时,所有复制副本都存储在DISK中。

② Cold -用于有限计算的存储。不再使用的数据或者需要归档的数据将从hot存储移动到cold存储。当数据处于cold状态时,所有副本将会存储到ARCHIVE

③ Warm -部分hot部分cold。当块是warm时,一部分副本存储到DISK,其余副本存储到ARCHIVE

④ All_SSD -存储所有副本到SSD

⑤ One_SSD - 用于存储一个副本到SSD,其他副本存储到DISK

⑥ Lazy_Persist - 用于内存中写入单个副本的块。副本首先写入RAM_DISK,然后延迟保存到磁盘。

更正式地说,存储策略由以下字段组成:

① Policy ID

② Policy name

③ 块放置的存储类型列表

④ 用于创建文件的备用存储类型列表

⑤ 用于放置副本的备用存储类型列表

如果有足够的空间,将根据#3中指定的存储类型列表存储数据块副本。当#3中部分存储类型空间不足时,#4 and #5中指定的备用的存储类型列表将会替换空间不够的存储类型来用于文件创建和副本复制。

以下是典型的存储策略表:

 

需要注意的是Lazy_Persist 策略仅适用于单一副本的块。对于具有多个副本的块,所有副本都将会写入 DISK,因为将其中一个副本写入RAM_DISK 并不能提高整体性能。

存储策略解析

当一个文件或者目录创建时,存储策略并没有指定。存储策略可以通过 storagepolicies -setStoragePolicy” 来进行指定。文件或目录的有效存储策略由以下规则解析

1) 如果文件或者目录指定了一个存储策略,则返回这个存储策略。

2) 对于没有指定存储策略的文件或目录,如果它是根目录,则返回默认存储策略,否则返回其父级目录的有效存储策略。

有效存储策略可以通过storagepolicies -getStoragePolicy命令来获得。

配置

(1) dfs.storage.policy.enabled - 允许/不允许使用存储策略特征,默认是true

(2) dfs.datanode.data.dir -在每个数据节点上,应以逗号分隔的存储位置标记其存储类型。这就允许根据存储策略将块放到不同的存储类型上,例如:

① 一个datanode 存储位置 /grid/dn/disk0DISK 上,应该配置为 [DISK]file:///grid/dn/disk0

② 一个datanode 存储位置/grid/dn/ssd0SSD上,应该配置为[SSD]file:///grid/dn/ssd0

③ 一个datanode 存储位置 /grid/dn/archive0 ARCHIVE 上,应该配置为 [ARCHIVE]file:///grid/dn/archive0

④ 一个datanode 存储位置  /grid/dn/ram0   RAM_DISK上,应该配置为 [RAM_DISK]file:///grid/dn/ram0

如果没有指定存储类型,默认的datanode存储位置的存储类型是DISK

Mover - 一种新的数据迁移工具

添加了一个新的数据迁移工具来归档数据,这个工具类似于Balancer。它周期性的扫描HDFS上的文件来查看块的放置是否符合存储策略。对于违反存储策略的块,它会将副本移动到不同的存储类型,以满足存储策略要求。请注意,总是尽可能尝试在同一节点内移动块副本如果同一节点内不可能时(例如,当节点不具有目标存储类型时),则它将通过网络将块副本复制到另一个节点。

1) 命令:

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

2) 参数:



-p <files/dirs>

指定要迁移的HDFS文件/目录以空格分隔的列表。

-f <local file>

指定包含要迁移的HDFS文件/目录列表的本地文件。

 

需要注意的是,当 -p  -f 都省略时,默认的目录是根目录( root directory)。

存储策略命令:

列出存储策略列表

列出所有存储策略列表。

1) 命令:

hdfs storagepolicies -listPolicies

2) 参数:无

 

设置存储策略

为一个文件或者目录设置存储策略

1) 命令:

hdfs storagepolicies -setStoragePolicy -path <path> -policy <policy>

2) 参数:

-path <path>

指向文件或者目录的路径

-policy <policy>

存储策略名字

 

Unset存储策略

对一个文件或者目录不设置存储策略。unset命令后,将应用最近祖先的存储策略,如果没有任何祖先的策略,则将应用默认存储策略。

1) 命令:

hdfs storagepolicies -unsetStoragePolicy -path <path>

2) 参数:

-path <path>

指向文件或者目录的路径

得到存储策略

得到一个文件或者目录的存储策略

1) 命令:

hdfs storagepolicies -getStoragePolicy -path <path>

2) 参数:

-path <path>

指向文件或者目录的路径

 

 

 

 

 

---------------全文完---------------------------


 

 

 


以上是关于HDFS存储策略的主要内容,如果未能解决你的问题,请参考以下文章

[hadoop3.x]HDFS存储类型和存储策略概述

[hadoop3.x]HDFS存储类型和存储策略概述

[hadoop3.x]HDFS存储类型和存储策略概述

Hadoop3 - HDFS 文件存储策略

Hadoop3 - HDFS 文件存储策略

Hadoop3 - HDFS 文件存储策略