文章也同時在個人博客 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應用的開發。