安裝 Spark 到遠端伺服器

Apache Spark 是一個平行運算的運算平台,由於他在處理不同檔案格式都有強大的資源庫支援,所以如果 leverage 來進行一些資料處理的開發很合適,另外 Spark 可以使用 local 或是 yarn 模式,使用 local 模式開發的進入障礙不會很大,本篇說明如何安裝 Spark 到遠端伺服器上面,部署並執行 spark 的程式!

安裝 Java:

要執行 Spark 的程式要執行,需要 java 1.8 的版本,所以要先安裝 jdk 1.8,安裝完之後可以確認 java 的版本是否是自己想要安裝的版本:

yum install java-1.8.0-openjdk-devel.x86_64
java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

備註:需要特別注意版本必須要是 1.8 不能超過,目前 spark 還沒有支援 Java 1.8+

安裝 Python 與 PySpark:

這邊可以參考我們之前寫的 Python 版本切換教學,只是要利用 pip 另外安裝 pyspark 。

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
pip install pyspark
安裝 Spark:
cd /opt
wget http://apache.crihan.fr/dist/spark/spark-2.3.2/spark-2.3.2-bin-hadoop2.7.tgz
tar zxvf spark-2.3.2-bin-hadoop2.7.tgz

備註:關於最新的 Spark 的版本可以到連結下載。

增加環境變數設定:

要能夠執行 Spark 還需要以下的設定:

PATH=/opt/spark-2.3.2-bin-hadoop2.7/bin:/usr/local/jdk1.8.0_201/bin
PYSPARK_PYTHON=/usr/bin/python3
SPARK_HOME=/opt/spark-2.3.2-bin-hadoop2.7

設定 PYSPARK_PYTHON 可以放在 /opt/spark-2.3.2-bin-hadoop2.7/etc/config/spark-env.sh 裡面,設定 SPARK_HOME 則可以放在 .bashrc 裡面。後來還發生以下的錯誤,參考解決:

File "....py", line 5, in <module>
    sc = SparkContext()   File "/usr/local/lib/python3.4/site-packages/pyspark/context.py", line 118, in __init__
    conf, jsc, profiler_cls)   File "/usr/local/lib/python3.4/site-packages/pyspark/context.py", line 195, in _do_init
    self._encryption_enabled = self._jvm.PythonUtils.getEncryptionEnabled(self._jsc)   File "/usr/local/lib/python3.4/site-packages/py4j/java_gateway.py", line 1487, in __getattr__
    "{0}.{1} does not exist in the JVM".format(self._fqn, name)) py4j.protocol.Py4JError: org.apache.spark.api.python.PythonUtils.getEncryptionEnabled does not exist in the JVM

最後只使用 .bashrc 去做環境變數的調校,總共需要以下環境變數:

PATH=/opt/spark-2.3.2-bin-hadoop2.7/bin:/opt/spark-2.3.2-bin-hadoop2.7/python
PYSPARK_PYTHON=/usr/bin/python3
PYTHONPATH=/opt/spark-2.3.2-bin-hadoop2.7/python:/opt/spark-2.3.2-bin-hadoop2.7/python/lib/py4j-0.10.4-src.zip:
SPARK_HOME=/opt/spark-2.3.2-bin-hadoop2.7