文章也同时在个人博客 http://kimihe.com/更新
引言
“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信息:
# 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.ls
t可选择hadoop
或spark
模式,以此来决定benchmark.lst
中列出的应用是运行HadoopBench还是SparkBench。
此外Spark运行时对于内存消耗较多,如遇到内存不足的警报,可配置spark.conf
相关选项,以控制内存消耗,如:
# 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测试程序。编译命令如下:
mvn -Psparkbench -Dmodules -Pmicro -Dspark=2.1 -Dscala=2.11 clean package
请注意对照命令中Spark与Scala的版本号。
另详细的编译命令介绍可查阅官方链接: Build HiBench。
运行一个测试程序
此处仍以Spark的wordcount为例:
bin/workloads/micro/wordcount/prepare/prepare.sh
bin/workloads/micro/wordcount/spark/run.sh
详细运行命令介绍可见: Run SparkBench.
至此,最基本的“Spark集群化与Hibench的SparkBench”介绍完毕。
总结
作为Spark入门指南的第三篇,本文介绍了如何配置集群化的Spark,以及使用SparkBench进行测试。
下一篇笔者将抛砖引玉地介绍Spark源码的阅读,修改,编译,debug,打包,测试等过程。