背景介绍
线上有个CDH小集群,其会存最近三个月的数据。再通过impala进行热数据的查询,通过profile执行计划发现在HDFS SCAN部分几乎花光了整个查询的时间。通过增加磁盘数量并没有发现有较大性能的提升,于是乎就想到如果使用SSD是否能有性能的提升呢?本文将通过实验进行对比。
配置情况
HDD目录:
- [DISK]/data1
- [DISK]/data2
- [DISK]/data3
- [DISK]/data4
SSD目录:
- [SSD]/data_ssd
硬件配置
机械磁盘: SAS 7200/s 4T 固态磁盘: S4510(960G-SSD-2.5寸-SATA6Gb/s)
表信息
- 表一:hddtest.table1
- 表二:test.table1
两个表拥有相同的分区,但是hddtest.table1存储于HDD而test.table1存于SDD。
测试语句
SELECT ndv($tid) FROM hddtest.table1 WHERE $date >= '2019-01-01' AND $date <= '2019-03-14'
SELECT ndv($tid) FROM test.table1 WHERE $date >= '2019-01-01' AND $date <= '2019-03-14'
每次执行完一次查询,都会进行缓存清除
sync; echo 1 > /proc/sys/vm/drop_caches
测试结果
序号 | 表名 | 查询耗时 |
---|---|---|
1 | hddtest.table1 | 12.229s |
2 | hddtest.table1 | 12.584s |
3 | hddtest.table1 | 12.208s |
4 | test.table1 | 5.599s |
5 | test.table1 | 5.591s |
6 | test.table1 | 5.796s |
在磁盘1:4的情况下,其总的性能还是提升了一倍以上。
相关实验截图
磁盘这块由9.58s --> 2.66s
实验总结
从测试的结果上看,使用SSD对查询性能提升还是很明显的。对于短期的热数据,可以考虑上SSD来进行性能的优化效果。