文章也同时在个人博客 http://kimihe.com/更新
引言
“Apache Spark™ is a fast and general engine for large-scale data processing.”
Spark是一种高性能分布式计算框架。它基于RDD使用内存来加速迭代过程。相比于前辈Hadoop,Spark有着更好的性能表现,尤其针对Machine Learning此类典型的应用,提升更为显著。
本文将集中介绍如何快速配置Spark。
软件依赖
- 运行Spark需要java环境。
- Spark应用多用Scala编写,建议使用SBT来管理。
安装java运行环境
安装JDK&JRE
sudo apt-get install openjdk-8-jre openjdk-8-jdk
建议装version 8不要装9。安装完成后,默认路径是/usr/lib/jvm/java-8-openjdk-amd64
,如果不一致请搜索到正确路径。
添加环境变量
cd
vim .bashrc
添加如下jave的PATH:
# JAVA PATH
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
更新环境变量
source .bashrc
测试java环境
java -version
看到相应版本信息输出即表明配置正确:
hadoop@hadoop-master:~$ java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-0ubuntu1.16.04.2-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)
安装SBT
Mac
使用Homebrew下载
$ brew install sbt@1
或者使用Macports (Third-party package)
$ port install sbt
其它平台
SBT官方链接:有.zip,.tgz以及.msi供选择。
下载Spark
Spark官方链接。笔者选择的是2.2.0版本。
配置Spark
解压下载的.zip后,若只是想单机版运行,无需后续配置,直接就已经可以运行任务了。若想进行真正的分布式运行,请阅读下述配置流程:
- 进入spark-2.2.0根目录的conf子目录。重点关注如下几个配置文件:log4j.properties.template(日记相关,使用默认即可), slaves.template(分布式worker节点配置)以及spark-defaults.conf.template(运行参数配置)。入门的配置大多只需要修改slaves.template即可。
- 将slaves.template重命名,去除.template后缀,在其中添加分布式节点的IP信息。若只在本地运行,请填写localhost。笔者进行的是真分布式,所以填写了两台worker节点的IP或hosts信息,如:
# For Cluster
10.10.43.131
10.10.43.132
备注:请自行对应IP与hosts。
- 配置完成后,进入spark-2.2.0根目录。运行
./sbin/start-all.sh
启动Spark。 - 提交一个example中的任务:
./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master local ./examples/jars/spark-examples_2.11-2.2.0.jar 10
出现一系列反馈信息,如报错请仔细检查前面的配置,以及各类path输入是否正确。
详细的提交格式如下(可查阅Document):
./bin/spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
至此,最简单的Spark配置流程告一段落。
总结
作为Spark入门指南的第一篇,本文介绍了最快速的配置方法。
下篇笔者将讲解如何使用IntelliJ IDEA进行spark应用的开发。