Spark入门指南 I - 快速配置

文章也同时在简书更新

引言

“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

1
sudo apt-get install openjdk-8-jre openjdk-8-jdk

建议装version 8不要装9。安装完成后,默认路径是/usr/lib/jvm/java-8-openjdk-amd64,如果不一致请搜索到正确路径。

添加环境变量

1
2
cd
vim .bashrc

添加如下jave的PATH:

1
2
# JAVA PATH
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

更新环境变量

1
source .bashrc

测试java环境

1
java -version

看到相应版本信息输出即表明配置正确:

1
2
3
4
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下载

1
$ brew install sbt@1

或者使用Macports (Third-party package)

1
$ 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信息,如:
1
2
3
# For Cluster
10.10.43.131
10.10.43.132

备注:请自行对应IP与hosts。

  • 配置完成后,进入spark-2.2.0根目录。运行./sbin/start-all.sh启动Spark。
  • 提交一个example中的任务:
1
2
./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master local ./examples/jars/spark-examples_2.11-2.2.0.jar 10

出现一系列反馈信息,如报错请仔细检查前面的配置,以及各类path输入是否正确。
详细的提交格式如下(可查阅Document):

1
2
3
4
5
6
7
8
./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应用的开发。

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