1.Spark學習(Python版本):Spark安裝

weixin_33749242發表於2018-07-24

Step1: 更新apt

sudo apt-get update

Step2: 安裝SSH、配置SSH無密碼登陸

sudo apt-get install openssh-server
ssh localhost

這樣登陸是需要每次輸入密碼的,我們需要配置成SSH無密碼登陸比較方便。
exit # 退出剛才的 ssh localhost
cd ~/.ssh/ # 若沒有該目錄
ssh-keygen -t rsa # 會有提示,都按回車就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授權
此時再用 ssh localhost 命令,無需輸入密碼就可以直接登陸了

Step3: 安裝Java環境

sudo apt-get install default-jre default-jdk
安裝結束以後,需要配置JAVA_HOME環境變數:
vim ~/.bashrc
在檔案最前面新增如下單獨一行(注意,等號“=”前後不能有空格),然後儲存退出(Esc退出編輯模式, i進入編輯模式):
export JAVA_HOME=/usr/lib/jvm/default-java
source ~/.bashrc # 使變數設定生效

執行上述命令後,可以檢驗一下是否設定正確:
echo $JAVA_HOME # 檢驗變數值
java -version
$JAVA_HOME/bin/java -version # 與直接執行java -version一樣

1780773-9d7b2c5900f77182.png

Step4:下載hadoop安裝包到主資料夾

http://mirror.bit.edu.cn/apache/hadoop/common/下載比較快

Step5.1:安裝hadoop(單機模式)

將 Hadoop 安裝至 /usr/local/ 中:
sudo tar -zxf ~/hadoop-2.7.6.tar.gz -C /usr/local # 解壓到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.6.0/ ./hadoop # 將資料夾名改為hadoop
sudo chown -R mashu ./hadoop # 修改檔案許可權
Hadoop 解壓後即可使用。輸入如下命令來檢查 Hadoop 是否可用,成功則會顯示 Hadoop 版本資訊:
cd /usr/local/hadoop
./bin/hadoop version

1780773-6b1dd2b2a5392ca2.png

Hadoop 預設模式為非分散式模式(本地模式),無需進行其他配置即可執行。

Step5.2:安裝hadoop(偽分散式)

Hadoop 的配置檔案位於 /usr/local/hadoop/etc/hadoop/ 中,偽分散式需要修改2個配置檔案 core-site.xml 和 hdfs-site.xml 。


1780773-b8e18484272512ee.png

修改配置檔案 core-site.xml ,將:

<configuration>
</configuration>

修改為:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

同樣的,修改配置檔案 hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

配置完成後,執行 NameNode 的格式化:
./bin/hdfs namenode -format
成功的話,會看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若為 “Exitting with status 1” 則是出錯。

接著開啟 NameNode 和 DataNode 守護程式。
./sbin/start-dfs.sh
啟動完成後,可以通過命令 jps 來判斷是否成功啟動,若成功啟動則會列出如下程式: “NameNode”、”DataNode” 和 “SecondaryNameNode”

1780773-204a4ca63b01c4df.png

若要關閉 Hadoop,則執行
./sbin/stop-dfs.sh

下次啟動 hadoop 時,無需進行 NameNode 的初始化,只需要執行 ./sbin/start-dfs.sh 就可以!

Step6:下載Spark安裝包

http://spark.apache.org/downloads.html下載安裝包。
由於我們已經自己安裝了Hadoop,所以在“Choose a package type”後面需要選擇“Pre-build with user-provided Hadoop [can use with most Hadoop distributions]”,然後,點選“Download Spark”後面的“spark-2.1.0-bin-without-hadoop.tgz”下載,這樣,下載到的Spark,可應用到任意Hadoop 版本。

Step7:安裝Spark(單機模式)

Spark部署模式主要有四種,這裡介紹Local模式(單機模式)的 Spark安裝。
sudo tar -zxf ~/spark-2.1.0-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.3.0-bin-without-hadoop/ ./spark
sudo chown -R mashu:mashu./spark #mashu是我的使用者名稱
安裝後,還需要修改Spark的配置檔案spark-env.sh:
cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
編輯spark-env.sh檔案,在第一行新增配置資訊:
vim ./conf/spark-env.sh
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
有了上面的配置資訊以後,Spark就可以把資料儲存到Hadoop分散式檔案系統HDFS中,也可以從HDFS中讀取資料。如果沒有配置上面資訊,Spark就只能讀寫本地資料,無法讀寫HDFS資料。

通過執行Spark自帶的示例,驗證Spark是否安裝成功。
cd /usr/local/spark
bin/run-example SparkPi
bin/run-example SparkPi 2>&1 | grep "Pi is" #通過 grep 命令進行過濾掉執行資訊

1780773-81a7f6cda8a18861.png

1780773-69769d895225d80e.png

Step8:修改環境變數

vim ~/.bashrc
在.bashrc檔案中新增如下內容:
export JAVA_HOME=/usr/lib/jvm/default-java
export HADOOP_HOME=/usr/local/hadoop
export SPARK_HOME=/usr/local/spark
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.6-src.zip:$PYTHONPATH
export PYSPARK_PYTHON=python3
export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PATH

PYTHONPATH環境變數主要是為了在Python3中引入pyspark庫。
PYSPARK_PYTHON變數主要是設定pyspark執行的python版本。
.bashrc中必須包含JAVA_HOME,HADOOP_HOME,SPARK_HOME,PYTHONPATH,PYSPARK_PYTHON,PATH這些環境變數。如果已經設定了這些變數則不需要重新新增設定。

接著還需要讓該環境變數生效,執行如下程式碼:
source ~/.bashrc

前面已經安裝了Hadoop和Spark,如果Spark不使用HDFS和YARN,那麼就不用啟動Hadoop也可以正常使用Spark。

如果按照上面的安裝步驟,已經設定了PYSPARK_PYTHON環境變數,那麼你直接使用如下命令啟動pyspark即可。


1780773-c7c2e0d21a7b6055.png

Step9:退出pyspark

exit()或者ctrl+D

Step10:Spark獨立應用程式程式設計

新建一個test.py檔案,並在test.py新增程式碼:
cd ~
vim test.py
在test.py中輸入以下程式碼:

from pyspark import SparkContext
sc = SparkContext( 'local', 'test')
logFile = "file:///usr/local/spark/README.md"
logData = sc.textFile(logFile, 2).cache()
numAs = logData.filter(lambda line: 'a' in line).count()
numBs = logData.filter(lambda line: 'b' in line).count()
print('Lines with a: %s, Lines with b: %s' % (numAs, numBs))

儲存程式碼後,通過如下命令執行(我自己的電腦已經刪除了python2, 只留下python 3.5.2):
python ~/test.py

1780773-cfe17b672f67abb2.png

自此,就完成了第一個 Spark 應用程式。

相關文章