Spark叢集設置(pyspark開啟)

學習筆記. Hank Tsai
6 min readNov 29, 2020

--

繼上次Hadoop叢集架設後,我厲害同學又傳授我怎麼搞Spark,索性再紀錄一波,避免自己哪天微失憶。Spark叢集架設比Hadoop容易得多,需要調整參數的檔案也沒有太多,當然這只是架設,優化那是另一回事….

以下的Spark是以HDFS作為持久性檔案儲存地,可以簡單認為是基於Hadoop架設的,雖然只開啟Spark不開HDFS好像也沒問題就是了,。

架設流程

(以下流程使用上次hadoop安裝的機台繼續安裝)

1.安裝檔案
首先,為了順利使用Spark在python上的API,需要安裝以下兩個檔案,通常都會有版本相容性問題,或參數調整問題,別裝錯了!(這次一樣是先安裝在本機,然後使用方便的SCP功能複製到叢集。)

(1). spark-2.4.5-bin-hadoop2.7.tgz
(2). Anaconda3–2020.02-Linux-x86_64.sh

2. Anaconda-python

(2-1). 安裝

# 修改權限(防止安裝或複製時出錯)
$ chmod +x Anaconda3-2020.02-Linux-x86_64.sh
# 安裝檔案
$ ./Anaconda3-2020.02-Linux-x86_64.sh

(2–2). 設定環境參數

# 修改home的.bashrc檔
$ vim .bashrc
# 在bash檔開啟後,最底下新增以下兩行路徑參數
export ANACONDA_HOME=/home/{username}/anaconda3
export PATH=$ANACONDA_HOME/bin:$PATH
# 記得激活存檔
$ source .bashrc

3. Spark叢集

(3–1). 安裝

# 解壓縮安裝檔
$ cd ~/Downloads
$ tar zxvf spark-2.4.5-bin-hadoop2.7.tgz
$ mv spark-2.4.5-bin-hadoop2.7 ~/

(3–2). 設定環境參數
此處攸關啟動pyspark時的介面,可以自行設定偏好的編輯器,主要是選擇console 或 jupyter ,jupyter可以將notebook改成lab。
(另有相關測試,jupyter編輯器的ram似乎較低,console會高些。)

# 修改home的.bashrc檔
$ vim .bashrc
# 最底下,就是剛剛anaconda環境參數地下新增這六行
export SPARK_HOME=/home/{username}/spark-2.4.5-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:$PATH
export PYSPARK_PYTHON=python
# 如果喜歡在console中用ipython就開啟這條環境(預設開啟)
export PYSPARK_DRIVER_PYTHON=ipython
# 如果習慣用jupyter notebook或者lab可以用這個
# export PYSPARK_DRIVER_PYTHON=jupyter
# export PYSPARK_DRIVER_PYTHON_OPTS=notebook
# 激活
$ source .bashrc

(3–3) 設定spark-env.sh檔

# 進入spark conf中設定參數
$ cd ~/spark-2.4.5-bin-hadoop2.7/conf/
$ mv spark-env.sh.template spark-env.sh
$ vim spark-env.sh
# 在.sh檔案中新增以下變數
export JAVA_HOME=/home/{username}/jdk1.8.0_251
export PATH=$JAVA_HOME/bin:$PATH

export HADOOP_HOME=/home/{username}/hadoop-2.10.0
export PATH=$HADOOP_HOME/bin:$PATH

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export SCALA_HOME=/home/{username}/scala-2.12.11
export PATH=$SCALA_HOME/bin:$PATH

export ANACONDA_HOME=/home/{username}/anaconda3
export PATH=$ANACONDA_HOME/bin:$PATH

export SPARK_HOME=/home/{username}/spark-2.4.5-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:$PATH

(3–4). 設定slave檔

# 同曾資料夾conf中
$ mv slaves.template slaves
$ vim slaves
# 在slaves中設定以下主機名稱(可以去掉localhost)
{master}
{slaver1}
{slaver2}

4. 連線複製整個設定過的 spark 資料夾和bashrc檔

# slaver1&2都要,複製到home即可
# 資料夾scp記得加 "-r"
$ scp -r ~/spark-2.4.5-bin-hadoop2.7 slaver:~
$ scp .bashrc slaver:~

5. 開啟叢集/測試

$ cd ~/spark-2.4.5-bin-hadoop2.7/sbin
$ ./start-all.sh
# 開啟pysaprk 互動環境
$ pyspark --master spark://{hostname}:7077

備註:

因為pyspark在操作時是建立在jvm的轉化,很多時候會產生很多也許不直接有影響的warning的訊息,如果覺得太亂會影響debug,可以dis它,讓系統只顯示錯誤訊息。

# 在spark/conf中有個檔案,將其參數改變,
$ cp log4j.properties.template log4j.properties
# INFO改成ERROR即可
log4j.rootCategory=INFO, console

參考資料:

--

--

學習筆記. Hank Tsai
學習筆記. Hank Tsai

Written by 學習筆記. Hank Tsai

我是一位有志從事數據研究的學習者,在此會建立自己的學習地圖,以及對一些對社會信息的見聞,請指教。

No responses yet