文档编写目的
在前面的文章中,Fayson介绍过什么是HDFS分层存储,参考《6.2.0-什么是HDFS分层存储》。这个功能很早CDH就支持了,本文基于CDH6.2实际演示如何在CDH中使用HDFS分层存储。
- 测试环境:
1.RedHat7.4
2.CDH6.2
配置并使用HDFS分层存储
在CM上修改DataNode数据目录,将六块SSD盘设置为SSD,另外十六块盘,六块设置为ARCHIVE,十块设置为DISK
1.测试使用SSD存储,执行wordcount
未提交作业前磁盘空间的容量
设置提交wordcount任务的HDFS数据目录的策略为ALL_SSD
执行生成数据的脚本,生成1TB测试数据
生成数据后查看磁盘,只有SSD容量增长了
提交wordcount任务
wordcount任务完成后查看磁盘,由于wordcount在执行过程中产生的中间数据落磁盘的目录未指定存储策略,所以默认使用hot策略,因此造成DISK存储的目录数据量有增长
2.测试使用ARCHIVE存储,执行sort
未提交作业前磁盘空间的容量
设置提交sort任务的HDFS数据目录的策略为cold
执行生成数据的脚本,生成1TB测试数据
生成数据后查看磁盘,只有ARCHIVE类型的磁盘容量增长了
提交sort任务
sort任务完成后查看磁盘,由于sort在执行过程中产生的中间数据落磁盘的目录未指定存储策略,所以默认使用hot策略,因此造成除了ARCHIVE存储的目录增长了之外,DISK存储的目录数据量也有增长
3.测试使用DISK存储,执行terasort
未提交作业前磁盘空间的容量
设置提交terasort任务的HDFS数据目录的策略为hot
执行生成数据的脚本,生成1TB测试数据
生成数据后查看磁盘,只有DISK存储的目录数据增长了
提交terasort任务
terasort任务完成后查看磁盘,发现只有DISK存储的目录数据增长了
总结
1.可以在CM上对HDFS的数据目录进行配置,配置上每块盘的存储类型,然后在使用HDFS时,对相应的HDFS指定存储策略,这样就可以让指定的数据存储到对应存储类型的磁盘,实现HDFS的分层存储。
2.在使用HDFS分层存储时需要注意对数据的分配,对于使用频繁的数据,可以存放在SSD上,对于归档的数据可以存放到ARCHIVE类型的磁盘,对于一些常用的基本数据可以存放在DISK类型的磁盘,对数据进行合理的分配,可以让所有磁盘的性能得到最好的发挥,同时可以获得最高的性价比。
Fayson的github: https://github.com/fayson/cdhproject