HDFS分级存储Archival Storage(2.7.1) 2015-11-04 20:30

介绍

分级存储特性是基于不同的存储介质,提供不同服务QoS的存储服务.比如对于频繁访问的数据放在SSD盘上,归档数据放在SATA盘上。

Hadoop官方称此特性为Archival Storage。

Hadoop定义了四种存储类型,每种存储类型对应不同的存储介质。同时,引入存储策略这一概念。存储策略关联不同的存储类型。数据上传HDFS时通过指定存储策略决定数据存放在哪几种存储介质上。

共有四种存储类型:

  • ARCHIVE
  • DISK
  • SSD
  • RAM_DISK

默认有如下几种存储策略:

  • COLD
  • WARM
  • HOT
  • ONE_SSD
  • ALL_SSD
  • LAZY_PERSIST
COLD:2, storageTypes=[ARCHIVE], creationFallbacks=[], replicationFallbacks=[]
WARM:5, storageTypes=[DISK, ARCHIVE], creationFallbacks=[DISK, ARCHIVE], replicationFallbacks=[DISK, ARCHIVE]
HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]
ONE_SSD:10, storageTypes=[SSD, DISK], creationFallbacks=[SSD, DISK], replicationFallbacks=[SSD, DISK]
ALL_SSD:12, storageTypes=[SSD], creationFallbacks=[DISK], replicationFallbacks=[DISK]
LAZY_PERSIST:15, storageTypes=[RAM_DISK, DISK], creationFallbacks=[DISK], replicationFallbacks=[DISK]

配置

创建RAM_DISK存储的目录

创建一个基于内存文件系统的数据挂载目录。

data01、data02、data03三个数据节点上:

创建内存文件系统:

mkdir /mnt/ramdisk
mount -t tmpfs -o size=128m tmpfs /mnt/ramdisk

将此内存文件系统写入/etc/fstab以便OS启动时自动挂载:

tmpfs    /mnt/ramdisk    tmpfs    size=128m    0 0

创建ARCHIVE存储的目录

mkdir /opt/dfs/data_archive

hdfs-site.xml配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<property>
    <name>dfs.storage.policy.enabled</name>
    <value>true</value>
</property>
<property>
    <name>dfs.data.dir</name>
    <value>/opt/dfs/data,
        [ARCHIVE]/opt/dfs/data_archive
        [RAM_DISK]/mnt/ramdisk
    </value>
</property>

使用

1
2
3
4
5
6
# 查询存储策略
hdfs storagepolicies -listPolicies
# 设置目录的存储策略
hdfs storagepolicies -setStoragePolicy -path /tmp/test/abc -policy LAZY_PERSIST
# 查询目录的存储策略
hdfs storagepolicies -getStoragePolicy -path /tmp/test/abc

上传文件时,根据目录的存储策略决定数据存放在哪种存储介质上。当时目录没有设置存储策略时,使用上级目录的存储策略。上级目录没有存储策略时,再继续找更上一级目录的存储策略。若各级目录都未指定存储策略,则默认保存到DISK上。

工具

当更改某一个目录的存储策略后,其目录下的文件不会按新的存储策略自动迁移数据。这需要通过命令触发按新的存储策略进行迁移。

hdfs mover

参考文档

  1. Archival Storage, SSD & Memory
Tags: #HDFS    Post on Hadoop