Spark Standalone集群模式部署(Window)及其Python開發環境搭建

概述

Spark提供了兩種交互式shell, 一個是pyspark(基於Python), 一個是spark_shell(基於Scala). 這兩個環境相互獨立並無依賴關係, 所以如果僅僅是使用pyspark交互環境, 是可以不安裝scala的。

常見的幾種spark部署模式

  • local(本地模式):常用於本地開發測試,本地還分為local單線程和local-cluster多線程;
  • standalone(集群模式):Spark本身是一個master/slaves的模式,可以看出Master是有單點故障的。
  • on yarn(集群模式): 運行在 yarn 資源管理器框架之上,由 yarn 負責資源管理,Spark 負責任務調度和計算

其中standalone模式,需要通過手工或者用啟動腳本來啟動主從節點,進而實現單個機器作為工作域。

環境準備

從apache spark網站下載spark-2.3.2-bin-hadoop2.6.tgz預編譯包, 選擇預編譯包, 免去了從源碼直接編譯的麻煩. spark2.3.2 在Java8+, python2.7+/3.4+ 運行,park的各個版本需要跟相應的Scala版本對應,因此我們使用的Scala2.11版本。

同時本機電腦配置 win7 4核8線程 8G內存.

所需所有的安裝文件見下圖:

Spark Standalone集群模式部署(Window)及其Python開發環境搭建

安裝JDK並設置環境變量

JAVA必須為1.7以上版本,如已安裝請確認系統變量是否配置正確(在桌面右擊【計算機】--【屬性】--【高級系統設置】,然後在系統屬性裡選擇【高級】--【環境變量】)。

假設JAVA安裝目錄在 D:\Program Files\Java,需要新建系統變量JAVA_HOME,值為D:\Program Files\Java\jdk1.8.0_181 ,如下圖:

Spark Standalone集群模式部署(Window)及其Python開發環境搭建

在PATH中加入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin,如下圖

Spark Standalone集群模式部署(Window)及其Python開發環境搭建

解壓並設置hadoop環境變量

Spark需要Hadoop的HDFS作為持久化層,所以在安裝Spark之前需要安裝Hadoop。解壓hadoop-2.6.5.tar.gz到D盤根目錄,hadoop-2.6.5目錄重命名為hadoop

新建系統變量名HADOOP_HOME, 變量值為D:\hadoop,如下圖

Spark Standalone集群模式部署(Window)及其Python開發環境搭建

在PATH中加入%HADOOP_HOME%;%HADOOP_HOME%\bin,如下圖

Spark Standalone集群模式部署(Window)及其Python開發環境搭建

複製winutils.exe到D:\hadoop\bin 文件夾, winutils可以使windows使用linux命令。

解壓spark並設置spark環境變量

Spark 由 Scala語言開發,而Scala也是運行於JVM之上,因此也可以看作是跨平臺的,所以在下載spark-2.3.2-bin-hadoop2.6.tgz之後, 在Windows 平臺直接解壓即可。解壓spark-2.3.2-bin-hadoop2.6.tgz 到D盤根目錄,spark-2.3.2目錄重命名為Spark。

新建系統變量名為SPARK_HOME ,設置變量值為D:\Spark,如下圖

Spark Standalone集群模式部署(Window)及其Python開發環境搭建

在PATH中加入%SPARK_HOME%;%SPARK_HOME%\bin,如下圖

Spark Standalone集群模式部署(Window)及其Python開發環境搭建

啟動standalone集群

手動啟動主從節點,打開cmd命令行,進入spark解壓路徑,D:\Spark\bin。

啟動主節點:

spark-class org.apache.spark.deploy.master.Master
Spark Standalone集群模式部署(Window)及其Python開發環境搭建

打開新的cmd終端啟動從節點,從節點的IP為本機IP

spark-class org.apache.spark.deploy.worker.Worker spark://xx.xx.240.58:7077 
Spark Standalone集群模式部署(Window)及其Python開發環境搭建

啟動完成可以登錄Spark管理界面查看集群狀態,localhost:8080 ,如下圖

Spark Standalone集群模式部署(Window)及其Python開發環境搭建

從上圖我們可以看到我們的主從節點是都是本機240.58,但是目前沒有運行任何應用,所以Running Applications為0。

注意,啟動完成請勿關閉上述兩個終端。同時如果啟動spark shell時沒有指定master,也可以正常啟動spark shell和執行spark shell中的程序,但其實是啟動了spark的local模式,僅在本機啟動一個進程,並沒有與集群建立聯繫。

運行Scala應用

打開新的cmd終端,輸入

spark-shell --master spark://xx.xx.240.58:7077 --total-executor-cores 1 --executor-memory 1G 
  • total-executor-cores 1 表示 總共使用一個核心,
  • executor-memory 1G 表示每個executor的內存為1G

如能顯示如下界面,則可以運行scala命令。

Spark Standalone集群模式部署(Window)及其Python開發環境搭建

輸入

 spark.range(1).withColumn("status", lit("All seems fine. Congratulations!")).show(false)
Spark Standalone集群模式部署(Window)及其Python開發環境搭建

如果能顯示 All sems fine……語句,則Spark Standalone集群搭建成功。

查看集群運行狀態

Spark Standalone集群模式部署(Window)及其Python開發環境搭建

由上圖可以看到目前有 Spark shell的應用正在運行,點擊可查看詳細。

使用pycharm編寫pyspark腳本並提交到集群服務器運行

環境準備

安裝 anaconda 版本的 Python 2.7

https://store.continuum.io/cshop/anaconda/

安裝 py4j-0.10.7-py2.py3-none-any.whl

pip install py4j-0.10.7-py2.py3-none-any.whl

py4j是個能訪問java 對象的python程序,同樣也能使java訪問python對象。

導入pyspark模塊

複製 D:\Spark\python 下的pyspark文件夾到python的安裝目錄,比如我的安裝文件夾路徑為C:\Anaconda2\Lib\site-packages,驗證pyspark能否可以導入成功:

Spark Standalone集群模式部署(Window)及其Python開發環境搭建

使用pycharm創建spark任務

Spark Standalone集群模式部署(Window)及其Python開發環境搭建

打開localhost:8080 ,查看任務狀態:

Spark Standalone集群模式部署(Window)及其Python開發環境搭建

後續將介紹如何使用spark sql進行簡單的數據挖掘與分析,若對你有幫助,點贊支持哦。


分享到:


相關文章: