×

Spark入门指南 I - 快速配置

96
周鶏
2018.01.25 11:44* 字数 686

文章也同时在个人博客 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应用的开发。

KimiTalk
Web note ad 1