AMD & Intel 机器 Spark 性能测试2

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lsshlsw/article/details/86628314

接上篇文章 AMD & Intel 机器 Spark 性能测试

硬件配置

共6台机器,每个对照组各三台。

intel 5118 内存为6通道,双路为12通道
amd 7401p 为8通道,如果用16*16G,则内存频率会下降到2133,带宽进一步降低,默认使用 Channel Interleave (单核最多同时使用2个内存通道),测试时改为 Die Interleave(每个核都可以使用8通道)

AMD

  • AMD 7401P
  • 8 * 32G
  • disk: 11 * HDD(8T) + 1 * SSD(1T)
  • nic: 2 * 10Gbps

Intel

  • Intel 5118 * 2
  • 16 * 16G
  • disk: 11 * HDD(8T) + 1 * SSD(1T)
  • nic: 2 * 10Gbps

测试

角色分配

  • Namenode
  • DataNode
  • ResourceManager
  • NodeManager
  1. container 使用 cgroup strict mode
  2. Namenode 和 ResourceManager 所在节点 nodeManager vcore 分配 42c,memory 168G
  3. 计算节点 nodeManager vcore 分配 45c,memory 180G
  4. spark Executor 设置: <10g+2g, 3c> * 60
  5. HDFS 数据盘设置 Data01 ~ Data11
  6. Yarn tmp dir 设置 Data01 ~ Data11 ,Data12 设置3个目录

线上sql任务模拟

数据源连接生产集群HDFS,相同的任务同时执行,结果以parquet格式写入HDFS,连续运行3次取平均值。

sql1

表大小:左表大小6g,右表大小1T

业务场景:左关联

sql: left join

sql2

表大小:450G

业务场景:取出一个分区的某些字段写入新表,该场景下计算节点本地带宽被打满

sql:filter

sql3

表大小:5G

业务场景:窗口函数,对某字段按时间维度排序取最早发生的一条数据

sql: over

sql4

表大小:左表4G,右表105G

业务场景:左表根据某字段group后,用该字段和右表join

sql:group,inner join

sql5

表大小:左表100k,右表10g

业务场景:日志审计

sql: group , order * 2 , left join

使用 sysbench 对内存读写进行测试

例如:100g,每个block 为8k,随机写

sysbench --test=memory --memory-block-size=8k --memory-total-size=100G --memory-oper=write --memory-access-mode=rnd run

结果

sql1 sql2 sql3 sql4 sql5 tpcds avg
intel 169s 308s 178s 34s 83s 44.1s
amd 175s 346s 180s 38s 85s 49.5s
对比 97% 89% 99% 89% 98% 89%
内存速度 8k顺序写 8k顺序度读 8k随机写 8k随机读
amd 9.7 GB/s 15.3 GB/s 1.4 GB/s 1.4 GB/S
intel 11.3 GB/s 24 GB/s 2.3 GB/s 2.3 GB/S
Max 功率(W) 10A机柜(W) 服务器单柜最大承载量(台) 16A机柜(W) 服务器单柜最大承载量
INTEL 389 2200 5.7 3520 9
AMD 282 2200 7.8 3520 12.5
实际业务性能 整机峰值功耗 8k顺序读/写 8k随机读/写
amd 90% 73% 64%/86% 61%/61%
intel 100% 100% 100%/100% 100%/100%

猜你喜欢

转载自blog.csdn.net/lsshlsw/article/details/86628314