一.测试背景
工作中想把历史的APP日志结构化到Hive中进行查询,由于数据较大,需要进行压缩,根据Hive官方提供的几种压缩格式分别进行写入,读取,OLAP计算的性能测试,以求找到最好的压缩格式。
二.测试方法概述
- 数据来源:采用生产上数据抽样,大小为100G。原始日志格式为textfile文件(标准JSON)。
- 测试平台:公司Ambari测试平台,物理内存100G。
- 测试方法:将textfile文件通过脚本自动录入到Hive里,形成大表。(注:解析JSON数据的serde使用 hdp hive自带的hive-hcatalog-core.jar 里面的org.apache.hive.hcatalog.data.JsonSerDe类)
- 从大表创建基于各种不同存储方式的分区表。
- 核心组件HDP版本选择
四.结果数据统计
存储格式 | ORC | Sequencefile | Parquet | RCfile | Avro |
数据压缩后大小 | 1.8G | 67.0G | 11G | 63.8G | 66.7G |
存储耗费时间 | 535.7s | 625.8s | 537.3s | 543.48 | 544.3 |
SQL查询响应速度 | 19.63s | 184.07s | 24.22s | 88.5s | 281.65s |
五.结论
1.在压缩存储时间上,除Sequencefile外基本都相差无几。
2.数据压缩比例上ORC最优,相比textfile节省了50倍磁盘空间,parquet压缩性能也较好。
3.SQL查询速度而言,ORC与parquet性能较好,远超其余存储格式。
综合上述各种性能指标,建议工作中原始日志写入hive的存储格式都采用ORC或者parquet格式,这和目前主流的做法一致。