使用eRDMA可以获得超低的延迟,更快地处理请求。本文介绍如何创建以eRDMA增强型实例作为节点的Spark集群,并部署Benchmark测试Spark集群处理负载的性能。
背景信息
Benchmark是一种基准性能测试工具,主要用于测试负载的执行时间、传输速度、吞吐量和资源占用率等。步骤一:准备环境
在测试集群性能前,需要先准备测试需要的集群环境,例如Hadoop和Spark机器、安装Hadoop、安装并配置eRDMA等。
- 准备Hadoop环境。如果已有大数据集群,请忽略该步骤。
- 软硬件环境要求
部署该集群需要准备Hadoop、Spark机器,请参考如下版本进行配置。
- Hadoop版本:Hadoop 3.2.1
- Spark版本:Spark 3.2.1
- ECS实例:
- 实例规格:请参见基本规格
- vCPU个数:16
- 集群节点个数:1个主节点、3个worker节点
- 安装步骤
安装Hadoop大数据集群的具体操作,请参见通过FastMR自动拉起大数据集群。
- 软硬件环境要求
- 登录集群主节点上的ECS实例。
具体操作,请参见 通过密码或密钥认证登录Linux实例。
- 配置eRDMA。
- 驱动安装
具体操作,请参见eRDMA使用方法介绍。
- 网络配置
- 运行以下命令,打开hosts文件。
vim /etc/hosts
- 按i键进入编辑模式,在配置文件中修改以下内容。
192.168.201.83 poc-t5m0 master1 192.168.201.84 poc-t5w0 192.168.201.86 poc-t5w1 192.168.201.85 poc-t5w2
说明 请根据实际情况,将IP地址替换为实际eRDMA网卡对应的IP地址。 - 按Esc键退出编辑模式,输入
:wq
并按下Enter键,保存并退出文件。
- 运行以下命令,打开hosts文件。
- (可选)yarn配置
说明 如果实例的默认网卡支持eRDMA,无需进行yarn配置。
- 依次运行以下命令,打开yarn-env.sh文件。
cd /opt/hadoop-3.2.1/etc/hadoop vim yarn-env.sh
- 按i键进入编辑模式,在配置文件中增加以下内容:
RDMA_IP=`ip addr show eth1 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1` export YARN_NODEMANAGER_OPTS="-Dyarn.nodemanager.hostname=$RDMA_IP"
说明 请根据实际情况,将eth1替换为实际eRDMA的网卡名称。 - 按Esc键退出编辑模式,输入
:wq
并按下Enter键,保存并退出文件。
- 依次运行以下命令,打开yarn-env.sh文件。
- (可选)Spark配置
说明 如果实例的默认网卡支持eRDMA,无需进行Spark配置。
- 依次运行以下命令,打开spark-env.sh文件。
cd /opt/spark-3.2.1-bin-hadoop3.2/conf vim spark-env.sh
- 按i键进入编辑模式,在配置文件中增加以下内容。
export SPARK_LOCAL_IP=`/sbin/ip addr show eth1 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1`
说明 请根据实际情况,将eth1替换为实际eRDMA的网卡名称。 - 按Esc键退出编辑模式,输入
:wq
并按下Enter键,保存并退出文件。
- 依次运行以下命令,打开spark-env.sh文件。
- 驱动安装
- 运行以下命令,启动hdfs及yarn。
$HADOOP_HOME/sbin/start-all.sh
步骤二:下载Benchmark安装包
本步骤为您介绍如何下载用于测试的Benchmark安装包。
- 登录集群主节点上的ECS实例。
具体操作,请参见 通过密码或密钥认证登录Linux实例。
- 运行以下命令,下载Benchmark安装包。
安装包文件介绍:wget https://mracc-release.oss-cn-beijing.aliyuncs.com/erdma-spark/spark-erdma-jverbs.tar.gz
- erdmalib:运行spark-erdma需要的native库,对应文件包括libdisni.so。
- plugin-sparkrdma:支持spark rdma的插件及依赖库,对应文件为spark-eRDMA-1.0-for-spark-3.2.1.jar和disni-2.1-jar-with-dependencies.jar。
步骤三:执行Benchmark测试
本步骤为您介绍如何使用Benchmark测试Spark集群处理负载的性能。
- 登录集群主节点上的ECS实例。
具体操作,请参见 通过密码或密钥认证登录Linux实例。
- 可选:运行以下命令,修改ip route。
如果实例的默认网卡支持eRDMA,可以跳过该步骤。
route del -net 192.168.201.0 netmask 255.255.255.0 metric 0 dev eth0 && \ route add -net 192.168.201.0 netmask 255.255.255.0 metric 1000 dev eth0
说明 请根据实际情况,将IP地址替换为实际eRDMA网卡对应的网关IP地址。 - 配置Spark。
- 按Esc键退出编辑模式,输入
:wq
并按下Enter键,保存并退出文件。
- 按Esc键退出编辑模式,输入
- 依次运行以下命令,生成数据。
cd /opt/spark-3.2.1-bin-hadoop3.2/conf spark-submit --properties-file /opt/spark-3.2.1-bin-hadoop3.2/conf/spark-normal.conf --class com.databricks.spark.sql.perf.tpcds.TPCDS_Bench_DataGen spark-sql-perf_2.12-0.5.1-SNAPSHOT.jar hdfs://master1:9000/tmp/tpcds_400 tpcds_400 400 parquet
说明400
代表生成的数据量大小,单位为GB,请您根据实际集群规模调整。 - 运行以下命令,执行Benchmark测试。
当出现如下类似结果时,表示测试完成,您可以从测试结果中查看Spark集群处理负载的执行时间。spark-submit --properties-file /opt/spark-3.2.1-bin-hadoop3.2/conf/spark-jverbs-erdma.conf --class com.databricks.spark.sql.perf.tpcds.TPCDS_Bench_RunAllQuery spark-sql-perf_2.12-0.5.1-SNAPSHOT.jar all hdfs://master1:9000/tmp/tpcds_400 tpcds_400 /tmp/tpcds_400_result
说明 您可以按照以上方法,去掉Spark conf中eRDMA插件相关配置或者登录其他不支持eRDMA的集群,对Spark eRDMA插件的性能做对比。