Alluxio+Presto多版本测试

Alluxio+Presto多版本测试

一、测试环境

Prestosql 1台主节点,4台worker节点(版本0.211&327)
Prestodb 1台主节点,4台worker节点(版本0.211&0.229)
Alluxio 1台主节点,4台worker节点(版本2.1.0)
硬件信息 共5台机器,每台48核cpu、125G内存
测试工具 Jmeter
Presto关键配置

Jvm.comfig配置如下:

1
2
3
4
5
6
7
8
-server
-Xmx80G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

Config.properties配置如下:

1
2
3
4
query.max-memory=120GB
query.max-memory-per-node=20GB
query.max-total-memory-per-node=20GB
memory.heap-headroom-per-node=16GB

内存分布如下:

RESERVED_POOL GENERAL_POOL
单个worker 20G 44G

resource_groups.json配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"name": "pipeline",
"softMemoryLimit": "80%",
"hardConcurrencyLimit": 90,
"maxQueued": 1500,
"schedulingWeight": 1,
"jmxExport": true,
"subGroups": [
{
"name": "pipeline_${USER}",
"softMemoryLimit": "50%",
"hardConcurrencyLimit": 30,
"maxQueued": 500
}
]
}
Alluxio关键配置
1
2
3
4
5
6
7
alluxio.worker.memory.size=40GB
alluxio.worker.tieredstore.levels=1
alluxio.worker.tieredstore.level0.alias=MEM
alluxio.worker.tieredstore.level0.dirs.path=/dev/shm/alluxio
alluxio.worker.tieredstore.level0.dirs.quota=40GB
alluxio.worker.tieredstore.level0.watermark.high.ratio=0.9
alluxio.worker.tieredstore.level0.watermark.low.ratio=0.7

二、测试过程

Presto(0.211)压测

测试一:

选取一天线上执行的400条sql。

并发 用户 每用户sql 总sql
90 3 400 1200

执行情况:

image-20200120114102936

image-20200120114121991

image-20200120114207933

image-20200120114219180

测试二:

选取线上一天内cpu负载最高的时间区间,取出执行sql进行测试。(2019.12.27 08:00~09:00)

第一组:

并发 用户 sql
300 1 300

执行情况

image-20200120114254746

image-20200120114302859

image-20200120114312334

第二组:

并发 用户 sql
300 1 1000

image-20200120114349956

image-20200120114359496

image-20200120114406068

第三组

并发 用户 sql
300 1 2000

执行情况

image-20200120114502901

image-20200120114509332

image-20200120114521096

Alluxio+presto(0.211)测试(alluxio和presto混合部署)

随机选取线上执行的一条SQL,把相关表使用alluxio加速和不加速分别测试。

测试结果

第一组:1并发,重复试验50次

样本值 平均值 最小值 最大值 少于10s
Hdfs 50 2543 1037 15442 47
Alluxio 50 1247 1029 1762 50

第二组:10并发,重复试验50次

样本值 平均值 最小值 最大值 少于10s
Hdfs 500 5358 1001 31227 458
Alluxio 500 5428 1663 10883 499

第三组:20并发,重复试验50次

样本值 平均值 最小值 最大值 少于10s
Hdfs 1000 6604 1414 23482 896
Alluxio 1000 7002 491 11381 963

第四组:40并发,重复试验50次

样本值 平均值 最小值 最大值 少于10s
Hdfs 2000 10971 1147 55482 1173
Alluxio 2000 10027 1194 35920 1130

image-20200120114916236

image-20200120114925624

Alluxio+prestodb(0.229)测试(alluxio和presto混合部署)

测试结果

第一组:1并发,重复试验50次

样本值 平均值 最小值 最大值 少于10s
Hdfs+presto0.211 50 2543 1037 15442 47
Hdfs+presto0.229 50 1873 998 6408 50
Alluxio+presto0.211 50 1247 1029 1762 50
Alluxio+presto0.229 50 869 408 1240 50

第二组:10并发,重复试验50次

样本值 平均值 最小值 最大值 少于10s
Hdfs+presto0.211 500 5358 1001 31227 458
Hdfs+presto0.229 500 5158 1452 28068 454
Alluxio+presto0.211 500 5428 1663 10883 499
Alluxio+presto0.229 500 3346 728 5745 500

第三组:20并发,重复试验50次

样本值 平均值 最小值 最大值 少于10s
Hdfs+presto0.211 1000 6604 1414 23482 896
Hdfs+presto0.229 1000 6230 893 30044 924
Alluxio+presto0.211 1000 7002 491 11381 963
Alluxio+presto0.229 1000 5801 461 10650 996

第四组:40并发,重复试验50次

样本值 平均值 最小值 最大值 少于10s
Hdfs+presto0.211 2000 10971 1147 55482 1173
Hdfs+presto0.229 2000 10004 1436 35411 1305
Alluxio+presto0.211 2000 10027 1194 35920 1130
Alluxio+presto0.229 2000 9098 812 16986 1330

image-20200120114959135

image-20200120115011627

Alluxio+prestosql(327)测试(alluxio和presto混合部署)

测试结果

第一组:1并发,重复试验50次

样本值 平均值 最小值 最大值 少于10s
Hdfs+prestosql0.211 50 2543 1037 15442 47
Hdfs+prestodb0.229 50 1873 998 6408 50
Hdfs++prestosql327 50 2448 615 17361 48
Alluxio+prestosql0.211 50 1247 1029 1762 50
Alluxio+prestodb0.229 50 869 408 1240 50
Alluxio+prestosql327 50 510 360 1026 50

第二组:10并发,重复试验50次

样本值 平均值 最小值 最大值 少于10s
Hdfs+prestosql0.211 500 5358 1001 31227 458
Hdfs+prestodb0.229 500 5158 1452 28068 454
Hdfs+prestosql327 500 4987 614 20588 454
Alluxio+prestosql0.211 500 5428 1663 10883 499
Alluxio+prestodb0.229 500 3346 728 5745 500
Alluxio+prestosql327 500 2650 369 5737 500

第三组:20并发,重复试验50次

样本值 平均值 最小值 最大值 少于10s
Hdfs+prestosql0.211 1000 6604 1414 23482 896
Hdfs+prestodb0.229 1000 6230 893 30044 924
Hdfs+prestosql327 1000 5660 924 19574 926
Alluxio+prestosql0.211 1000 7002 491 11381 963
Alluxio+prestodb0.229 1000 5801 461 10650 996
Alluxio+prestosql327 1000 4998 421 10152 999

第四组:40并发,重复试验50次

样本值 平均值 最小值 最大值 少于10s
Hdfs+prestosql0.211 2000 10971 1147 55482 1173
Hdfs+prestodb0.229 2000 10004 1436 35411 1305
Hdfs+prestosql327 2000 10436 554 52987 1377
Alluxio+prestosql0.211 2000 10027 1194 35920 1130
Alluxio+prestodb0.229 2000 9098 812 16986 1330
Alluxio+prestosql327 2000 9231 1032 16277 1290

image-20200120115052564

image-20200120115103149

三、测试结论和思考

结论

  1. 目前presto集群资源足够支撑线上业务,最大性能限制在CPU,5台机器最大可支撑线上300sql并发查询。

  2. alluxio+presto模式在并发查询量少时性能提升很大,并且查询性能非常稳定。但并发在达到40并发时,性能提升和查询10s内占比提升并不明显。

  3. 升级presto版本对查询性能有明显提升,但并发达到一定程度时效果逐渐不明显。

思考

  1. 考虑到presto集群在查询出现排队时会严重影响查询性能,可以适当调整resource_groups.json配置,包括最大并发、排队队列大小、多租户调整,尽量使线上用户查询没有排队的情况。

  2. 目前alluxio+presto模式并没用到alluxiuo的数据本地性读写,需进行深入研究,利用起alluxio的本地性。

  3. presto新版本对查询性能有很大提升,通过对prestodb-0.229和prestosql-327两个最新版本的测试,且考虑到两种版本的社区活跃度和版本更新速度,建议采用prestosql-327进行presto集群的版本升级。

  4. 需探索alluxio更多的使用场景,比如说yarn、spark、tensorflow等。

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. Alluxio+Presto多版本测试
    1. 1.0.1. 一、测试环境
      1. 1.0.1.0.1. Presto关键配置
      2. 1.0.1.0.2. Alluxio关键配置
  2. 1.0.2. 二、测试过程
    1. 1.0.2.1. Presto(0.211)压测
    2. 1.0.2.2. Alluxio+presto(0.211)测试(alluxio和presto混合部署)
    3. 1.0.2.3. Alluxio+prestodb(0.229)测试(alluxio和presto混合部署)
    4. 1.0.2.4. Alluxio+prestosql(327)测试(alluxio和presto混合部署)
  3. 1.0.3. 三、测试结论和思考
,