Spark叢集設置(pyspark開啟)
繼上次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
參考資料: