HDFS分层存储(一)

耀灵1年前技术文章625

1、介绍

Hadoop分布式文件系统支持在HDFS中的各种存储类型。现在,您可以为DataNode数据目录指定不同的存储类型,这样可以根据数据使用频率优化数据使用并降低成本。例如需要频繁使用的数据,可以存储在SSD中,而归档的数据可以存放在相对便宜的存储介质中。

集群中的每个DataNode都配置有一组数据目录,您可以为每个数据目录配置一个存储类型。存储策略指示在存储文件或目录时要使用的存储类型。常见使用不同存储类型的原因包括:

1.数据集具有时间局部性(temporal locality),比如时间序列数据。最新数据最初可以加载到SSD中以提高性能,然后随着时间的推移迁移到普通磁盘。

2.您需要将冷数据移动到更密集的归档存储,因为这些数据很少访问并且归档存储设备更便宜。这可以通过简单的老化策略来完成,比如将超过六个月的数据移动到归档存储。

1.1存储类型

存储类型标识底层存储介质。HDFS支持以下存储类型:

  • ARCHIVE - 归档存储用于非常密集的存储,主要用于很少访问的数据。这种存储类型比普通硬盘每TB的成本会更便宜。

  • DISK - 硬盘驱动器相对便宜,并提供顺序I/O性能。这是默认存储类型。

  • SSD - 固态驱动器(Solid state drives)对于存储热数据和I/O密集型应用程序非常有用。

  • RAM_DISK  - 这种特殊的内存存储类型用于加速低持久性的单副本写入。

添加DataNode数据目录时,可以通过在路径中添加存储类型前缀来指定它使用的存储类型,用括号括起来。如果未指定存储类型,则假定为DISK。

1.2存储策略

存储策略包含描述要使用的存储类型的信息。如果主要类型空间不足或者超出配额,此策略还会定义回退存储类型。如果目标存储类型不可用,HDFS会尝试将副本放在默认存储类型上。

每个存储策略都包含策略ID,策略名称,存储类型列表,用于文件创建的回退存储类型列表以及用于复制的回退存储类型列表。

HDFS有六个预配置的存储策略。

  • Hot - 所有副本都存储在DISK上。

  • Cold - 所有副本都存储在ARCHIVE上。

  • Warm - 一个副本存储在DISK上,其他副本存储在ARCHIVE上。

  • All_SSD - 所有副本都存储在SSD上。

  • One_SSD - 一个副本存储在SSD上,其他副本存储在DISK上。

  • Lazy_Persist - 将副本写入RAM_DISK,然后缓慢的持久化到DISK。

2、设置HDFS存储策略

1.确保hdfs-site.xml中的配置dfs.storage.policy.enabled没有被修改,默认值为true。

2.通过在目录路径开头的括号中添加存储类型,为每个不是标准磁盘的DataNode数据目录指定存储类型。例如:

[SSD]/data/dfs/dn1
[DISK]/data1/dfs/dn2
[ARCHIVE]/data2/dfs/dn3

3.在任何HDFS主机上打开终端会话。对要设置存储策略的每个路径运行以下hdfs命令:

$ hdfs storagepolicies -setStoragePolicy -path <path> -policy <policy>
path_to_file_or_directory -policy policy_name

4.  要根据当前存储策略将数据移动到适当的存储,需要使用mover命令。使用mover -h获取可用选项列表。要一次迁移所有数据(这可能需要很长时间),您可以将路径设置为/。

hdfs mover -p <path>

3、管理HDFS存储策略

1.  要获取DataNode上特定文件或目录的存储策略,请使用以下命令:

hdfs storagepolicies -getStoragePolicy -path <path>path_to_policy

2.  要列出一台DataNode上的所有策略,可以使用以下命令:

[root@hd3 keytab]# hdfs storagepolicies -listPolicies
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hadoop-3.2.4/share/hadoop/common/lib/slf4j-reload4j-1.7.35.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apache-tez-0.10.2-bin/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Reload4jLoggerFactory]
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]}


相关文章

oracle PUS.SPU.CPU.BP.RU.RUR概念简介

PUS.SPU.CPU.BP.RU.RUR概念介绍PSU(Patch Set Updates):Oracle 选取在每个季度用户下载数量最多,并且得到验证具有较低风险的补丁放入到每个季度的PSU中,修...

apiserver指标分析

apiserver指标分析

概述kube-apiserver 是集群所有请求的入口,指标的分析可以反应集群的健康状态。Apiserver 的指标可以分为以下几大类:请求速率和延迟控制器队列的性能etcd 的性能进程状态:文件系统...

Apache hive 对接达梦数据库

Apache hive 对接达梦数据库

1、背景由于国产化需求,客户需要使用dm数据库作为hive的元数据库。需要进行对应适配2、配置本次使用的环境hive 3.1.3 hadoop 3.2.4 ranger 2.3.0 Spark ...

at和corntab 计划任务

一、什么是计划任务每个人在生活当中或多或少都有一些工作,有的工作是按照一定周期循环的, 例如每天固定时间的闹铃、工作打卡等等; 有的工作则是临时发生的,例如刚好有亲友到访,需要你在一个特定的时间去车站...

scylladb简单命令介绍

一、cql 命令查看版本SHOW VERSION查看连接的数据库地址SHOW HOST批量执行.cql文件中的命令SOURCE '/home/thobbs/commands.cql'开启和关闭命令追踪...

HDFS Fsimage分析磁盘目录(文件级别)

HDFS Fsimage分析磁盘目录(文件级别)

首先获取fsimage信息hdfs dfsadmin -fetchImage  /opt/fsimage格式化fsimage 转换为可读文本hdfs oiv -i /opt/fsimage/fsima...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。