HDFS的异构存储测试

存储类型

根据存储的介质不同,存储类型按照存储的速度快慢排序依次为:RAM_DISK,SSD,DISK, ARCHIVE.
- memory存储,数据放在内存中,读写速度快,数据可暂时存储
- SSD:又称固态硬盘,读写速度仅次于memory,数据可以永久存放
- DISK:普通机械硬盘。在hdfs中如果没有特意指定,数据默认都存在DISK中。
- ARCHIV:具有较高的存储密度,读写速度差,用于归档存储。

存储策略

在hdfs中存储策略分为以下几种:
- HOT:用于存储热数据,默认情况,hdfs的数据都采用的是HOT策略,所有的副本都存储在DISK中。
- COLD:用于存储冷数据,所有的数据副本存储在ARCHIV中。
- Warm:有些数据存在DISK中,有些做归档处理 。
- All_SSD:所有的数据副本都存储在SSD中。
- One_SSD:将数据的一个副本存储在SSD中,其余的副本存储在磁盘中。
- Lazy_Persist:用于在内存中写入单个副本的块。该副本首先在RAM_DISK中写入,后续持久化到DISK中。

通常一个存储策略有以下几个部分组成:Policy ID,Policy name,Block存储类型列表,文件创建时的备用存储类型列表,用于副本的备用存储类型列表。如下表所示:
这里写图片描述

配置异构存储

1.在hdfs-site.xml 文件中配置dfs.storage.policy.enabled属性,值为true(默认)

2.dfs.datanode.data.dir值的配置:在每个datanode上,应该将逗号分隔的存储位置标记为它们的存储类型。这允许存储策略根据策略将块放在不同的存储类型上。例如:
DataNode数据存储位置为:/data/hadoop/ssd 应该配置为[SSD]/data/hadoop/disk
3.当对数据的存储策略做出改变是,需要使用mover命令对相关文件目录进行扫描,进行数据块的迁移。
hdfs mover [-p <files/dirs> | -f <local file name>]
-p: 指定要迁移的HDFS文件列表。
-f:指定被迁移的HDFS文件对应的本地文件系统路径
注:当忽略-p和-f选项时,默认路径是根目录。
4.相关的命令:
列出目前现有的存储策略
hdfs storagepolicies -listPolicies
对目标文件/目录设置存储策略
hdfs storagepolicies -setStoragePolicy -path <path> -policy <policy>
获取指定路径的存储策略
hdfs -getStoragePolicy -path <path>

异构存储实战

1.环境准备
三台服务器:crh-1,crh-2,crh-3
磁盘挂载情况相同,都有一个ssd盘,三个机械硬盘,如下所示
crh-1
这里写图片描述
crh-2
这里写图片描述
crh-3
这里写图片描述
2.hadoop版本2.7.5,集群节点分布如下:
这里写图片描述
3.在用ambari安装hadoop时填写dfs.datanode.data.dir时,根据自己的实际情况填写,如下:
/data/hdd1/hadoop/hdfs/data,/data/hdd2/hadoop/hdfs/data,/data/hdd3/hadoop/hdfs/data,[SSD]/data/ssd/hadoop/hdfs/data

这里写图片描述
4.命令实战
切换到hdfs用户,查看当前有哪些存储策略可以用
hdfs storagepolicies –listPolicies

[hdfs@crh-3 ~]$ hdfs storagepolicies -listPolicies
Block Storage Policies:
    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]}

2.获取指定路径的存储策略
hdfs storagepolicies -getStoragePolicy -path /user

[hdfs@crh-3 ~]$ hdfs dfs -ls / 
Found 8 items
drwxrwxrwx   - yarn   hadoop          0 2018-03-06 14:52 /app-logs
drwxr-xr-x   - yarn   hadoop          0 2018-03-06 14:37 /ats
drwxr-xr-x   - hdfs   hdfs            0 2018-03-06 15:39 /benchmarks
drwxr-xr-x   - hdfs   hdfs            0 2018-03-06 14:37 /crh
drwxr-xr-x   - mapred hdfs            0 2018-03-06 14:37 /mapred
drwxrwxrwx   - mapred hadoop          0 2018-03-06 14:37 /mr-history
drwxrwxrwx   - hdfs   hdfs            0 2018-03-06 14:38 /tmp
drwxr-xr-x   - hdfs   hdfs            0 2018-03-06 14:52 /user
[hdfs@crh-3 ~]$ hdfs storagepolicies -getStoragePolicy -path /user
The storage policy of /user is unspecified

创建一个新的目录和文件,指定其存储策略

[hdfs@crh-3 ~]$ hdfs dfs -mkdir -p /test/data/
[hdfs@crh-3 ~]$ hdfs dfs -put /opt/test.txt /test/data/
[hdfs@crh-3 ~]$ hdfs dfs -ls /test/data/
Found 1 items
-rw-r--r--   3 hdfs hdfs     179714984449 2018-03-07 09:34 /test/data/test.txt
[hdfs@crh-3 ~]$ hdfs storagepolicies -setStoragePolicy -path /test/data/test.txt -policy ALL_SSD
Set storage policy ALL_SSD on /test/data/test.txt

执行hdfs mover 命令,进行数据块的迁移

hdfs mover -p /test/data/test.txt
[hdfs@crh-3 ~]$ hdfs mover -p /test/data/test.txt 
18/03/07 09:49:54 INFO mover.Mover: namenodes = {hdfs://crh-1:8020=[/test/data/test.txt]}
18/03/07 09:49:55 INFO balancer.KeyManager: Block token params received from NN: update interval=10hrs, 0sec, token lifetime=10hrs, 0sec
18/03/07 09:49:55 INFO block.BlockTokenSecretManager: Setting block keys
18/03/07 09:49:55 INFO balancer.KeyManager: Update block keys every 2hrs, 30mins, 0sec
18/03/07 09:49:56 INFO block.BlockTokenSecretManager: Setting block keys
18/03/07 09:49:56 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.0.83:50010
18/03/07 09:49:56 INFO net.NetworkTopology: Adding a new node:
.............

使用df -h 命令查看datanode的服务器上的ssd盘已经有数据了
crh-3
这里写图片描述
crh-2
这里写图片描述

参考文档
http://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html

更多精彩原创文章,详见红象云腾社区

猜你喜欢

转载自blog.csdn.net/redoop123/article/details/79479647