您的位置:首页 > 运维架构

HDFS的异构存储测试

2018-03-08 09:20 776 查看

存储类型

根据存储的介质不同,存储类型按照存储的速度快慢排序依次为: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

更多精彩原创文章,详见红象云腾社区
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CRH Redoop HDFS 存储 异构