Spark入门指南 III - Spark集群化与Hibench测试集

文章也同时在简书更新

引言

“Apache Spark™ is a fast and general engine for large-scale data processing.”

Spark是一种高性能分布式计算框架。它基于RDD使用内存来加速迭代过程。相比于前辈Hadoop,Spark有着更好的性能表现,尤其针对Machine Learning此类典型的应用,提升更为显著。

作为入门指南的第三篇,本文将集中介绍如何使用IntelliJ IDEA进行开发。
前文:

集群化

Spark集群化部署的思路与Hadoop非常类似。关于Hadoop集群化的配置可以参考这篇文章: 《Hadoop真分布式集群最速搭建攻略》

配置worker节点

主要是对于Spark-2.2.0根目录下conf子目录中slaves.template的配置,重命名去除.template后缀,并添加worker节点的IP或hosts信息:

1
2
3
# For Cluster
10.10.43.131
10.10.43.132

Hibench

配置SparkBench

关于Hibench(含HadoopBench及SparkBench),其实之前已经有一篇关于HadoopBench的文章: 《Hadoop常用测试集HiBench配置指南》。值得庆幸的是,SparkBench在配置上与前者并没有特别的变化,只要建立在HadoopBench配置的基础上,SparkBench的配置非常简单,无非是配置各类根目录之类。
关于SparkBench配置的官方介绍: Run SparkBench

conf的高级配置

Hibench根目录下conf子目录下,有一系列配置文件可以按需求修改。常用的有:

  • framework.lst
  • benchmark.lst
  • hibench.conf
  • hadoop.conf.template(激活需去除.template后缀)
  • spark.conf.template(激活需去除.template后缀)

注意:其中的framework.lst可选择hadoopspark模式,以此来决定benchmark.lst中列出的应用是运行HadoopBench还是SparkBench。
此外Spark运行时对于内存消耗较多,如遇到内存不足的警报,可配置spark.conf相关选项,以控制内存消耗,如:

1
2
3
# executor and driver memory in standalone & YARN mode
spark.executor.memory 2g
spark.driver.memory 2g

更多高级配置可查阅官方Wiki

修改Hibench源码

Hibench根目录下的hadoopbench及sparkbench中包含各种测试程序的源代码,可根据需求修改。例如,修改了sparkbench下micro的wordcount源码,则可以重新编译Hibench的micro模块,来使用新生成的wordcount测试程序。编译命令如下:

1
mvn -Psparkbench -Dmodules -Pmicro -Dspark=2.1 -Dscala=2.11 clean package

请注意对照命令中Spark与Scala的版本号。
另详细的编译命令介绍可查阅官方链接: Build HiBench

运行一个测试程序

此处仍以Spark的wordcount为例:

1
2
bin/workloads/micro/wordcount/prepare/prepare.sh
bin/workloads/micro/wordcount/spark/run.sh

详细运行命令介绍可见: Run SparkBench.

至此,最基本的“Spark集群化与Hibench的SparkBench”介绍完毕。

总结

作为Spark入门指南的第三篇,本文介绍了如何配置集群化的Spark,以及使用SparkBench进行测试。
下一篇笔者将抛砖引玉地介绍Spark源码的阅读,修改,编译,debug,打包,测试等过程。

周鶏🐣(Kimiko) wechat
拿起手机扫一扫,欢迎关注我的个人微信公众号:「洛斯里克的大书库」。
坚持原创技术分享,您的支持将鼓励我继续创作!