文档编写目的


在前面的文章中,Fayson介绍过什么是HDFS分层存储,参考《6.2.0-什么是HDFS分层存储》。这个功能很早CDH就支持了,本文基于CDH6.2实际演示如何在CDH中使用HDFS分层存储。


  • 测试环境:

1.RedHat7.4

2.CDH6.2


配置并使用HDFS分层存储


在CM上修改DataNode数据目录,将六块SSD盘设置为SSD,另外十六块盘,六块设置为ARCHIVE,十块设置为DISK


0678-6.2.0-如何在CDH中使用HDFS分层存储_数据

0678-6.2.0-如何在CDH中使用HDFS分层存储_数据_02


1.测试使用SSD存储,执行wordcount

未提交作业前磁盘空间的容量


0678-6.2.0-如何在CDH中使用HDFS分层存储_数据_03


设置提交wordcount任务的HDFS数据目录的策略为ALL_SSD


0678-6.2.0-如何在CDH中使用HDFS分层存储_hive_04


执行生成数据的脚本,生成1TB测试数据


0678-6.2.0-如何在CDH中使用HDFS分层存储_hdfs_05


生成数据后查看磁盘,只有SSD容量增长了


0678-6.2.0-如何在CDH中使用HDFS分层存储_hdfs_06


提交wordcount任务


0678-6.2.0-如何在CDH中使用HDFS分层存储_数据_07


wordcount任务完成后查看磁盘,由于wordcount在执行过程中产生的中间数据落磁盘的目录未指定存储策略,所以默认使用hot策略,因此造成DISK存储的目录数据量有增长


0678-6.2.0-如何在CDH中使用HDFS分层存储_hive_08


2.测试使用ARCHIVE存储,执行sort

未提交作业前磁盘空间的容量


0678-6.2.0-如何在CDH中使用HDFS分层存储_hive_09


设置提交sort任务的HDFS数据目录的策略为cold


0678-6.2.0-如何在CDH中使用HDFS分层存储_hive_10


执行生成数据的脚本,生成1TB测试数据


0678-6.2.0-如何在CDH中使用HDFS分层存储_数据_11


生成数据后查看磁盘,只有ARCHIVE类型的磁盘容量增长了


0678-6.2.0-如何在CDH中使用HDFS分层存储_数据_12


提交sort任务


0678-6.2.0-如何在CDH中使用HDFS分层存储_数据_13


sort任务完成后查看磁盘,由于sort在执行过程中产生的中间数据落磁盘的目录未指定存储策略,所以默认使用hot策略,因此造成除了ARCHIVE存储的目录增长了之外,DISK存储的目录数据量也有增长


0678-6.2.0-如何在CDH中使用HDFS分层存储_hive_14


3.测试使用DISK存储,执行terasort

未提交作业前磁盘空间的容量


0678-6.2.0-如何在CDH中使用HDFS分层存储_数据_15


设置提交terasort任务的HDFS数据目录的策略为hot


0678-6.2.0-如何在CDH中使用HDFS分层存储_hdfs_16


执行生成数据的脚本,生成1TB测试数据


0678-6.2.0-如何在CDH中使用HDFS分层存储_hdfs_17


生成数据后查看磁盘,只有DISK存储的目录数据增长了


0678-6.2.0-如何在CDH中使用HDFS分层存储_数据_18


提交terasort任务


0678-6.2.0-如何在CDH中使用HDFS分层存储_hdfs_19


terasort任务完成后查看磁盘,发现只有DISK存储的目录数据增长了


0678-6.2.0-如何在CDH中使用HDFS分层存储_数据_20


总结


1.可以在CM上对HDFS的数据目录进行配置,配置上每块盘的存储类型,然后在使用HDFS时,对相应的HDFS指定存储策略,这样就可以让指定的数据存储到对应存储类型的磁盘,实现HDFS的分层存储。


2.在使用HDFS分层存储时需要注意对数据的分配,对于使用频繁的数据,可以存放在SSD上,对于归档的数据可以存放到ARCHIVE类型的磁盘,对于一些常用的基本数据可以存放在DISK类型的磁盘,对数据进行合理的分配,可以让所有磁盘的性能得到最好的发挥,同时可以获得最高的性价比。


Fayson的github:

​https://github.com/fayson/cdhproject​


0678-6.2.0-如何在CDH中使用HDFS分层存储_hive_21