概述
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內存.
所需所有的安裝文件見下圖:
安裝JDK並設置環境變量
JAVA必須為1.7以上版本,如已安裝請確認系統變量是否配置正確(在桌面右擊【計算機】--【屬性】--【高級系統設置】,然後在系統屬性裡選擇【高級】--【環境變量】)。
假設JAVA安裝目錄在 D:\Program Files\Java,需要新建系統變量JAVA_HOME,值為D:\Program Files\Java\jdk1.8.0_181 ,如下圖:
在PATH中加入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin,如下圖
解壓並設置hadoop環境變量
Spark需要Hadoop的HDFS作為持久化層,所以在安裝Spark之前需要安裝Hadoop。解壓hadoop-2.6.5.tar.gz到D盤根目錄,hadoop-2.6.5目錄重命名為hadoop
新建系統變量名HADOOP_HOME, 變量值為D:\hadoop,如下圖
在PATH中加入%HADOOP_HOME%;%HADOOP_HOME%\bin,如下圖
複製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,如下圖
在PATH中加入%SPARK_HOME%;%SPARK_HOME%\bin,如下圖
啟動standalone集群
手動啟動主從節點,打開cmd命令行,進入spark解壓路徑,D:\Spark\bin。
啟動主節點:
spark-class org.apache.spark.deploy.master.Master
打開新的cmd終端啟動從節點,從節點的IP為本機IP:
spark-class org.apache.spark.deploy.worker.Worker spark://xx.xx.240.58:7077
啟動完成可以登錄Spark管理界面查看集群狀態,localhost:8080 ,如下圖
從上圖我們可以看到我們的主從節點是都是本機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.range(1).withColumn("status", lit("All seems fine. Congratulations!")).show(false)
如果能顯示 All sems fine……語句,則Spark Standalone集群搭建成功。
查看集群運行狀態
由上圖可以看到目前有 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能否可以導入成功:
使用pycharm創建spark任務
打開localhost:8080 ,查看任務狀態:
後續將介紹如何使用spark sql進行簡單的數據挖掘與分析,若對你有幫助,點贊支持哦。
閱讀更多 測試開發技術棧 的文章