1. 下載Spark
1.1 官網下載Spark
http://spark.apache.org/downloads.html
打開上述鏈接,進入到下圖,點擊紅框下載Spark-2.2.0-bin-hadoop2.7.tgz,如下圖所示:
2. 安裝Spark
Spark安裝,分為:
- 准備,包括上傳到主節點,解壓縮並遷移到/opt/app/目錄;
- Spark配置集群,配置/etc/profile、conf/slaves以及confg/spark-env.sh,共3個文件,配置完成需要向集群其他機器節點分發spark程序,
- 直接啟動驗證,通過jps和宿主機瀏覽器驗證
- 啟動spark-shell客戶端,通過宿主機瀏覽器驗證
2.1 上傳並解壓Spark安裝包
1. 把spark-2.2.0-bin-hadoop2.7.tgz通過Xftp工具上傳到主節點的/opt/uploads目錄下
2. 在主節點上解壓縮
# cd /opt/uploads/
# tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz
有時解壓出來的文件夾,使用命令 ll 查看用戶和用戶組有可能不是hadoop時,即上圖綠框顯示,則需要使用如下命令更換為hadoop用戶和用戶組:
# sudo chown hadoop:hadoop spark-2.2.0-bin-hadoop2.7
3. 把spark-2.2.0-bin-hadoop2.7移到/opt/app/目錄下
# mv spark-2.2.0-bin-hadoop2.7 /opt/app/
# cd /opt/app && ll
2.2 配置文件與分發程序
2.2.1 配置/etc/profile
1. 以hadoop用戶打開配置文件/etc/profile
# sudo vi /etc/profile
2. 定義SPARK_HOME並把spark路徑加入到PATH參數中
export SPARK_HOME=/opt/app/spark-2.2.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
2.2.2 配置conf/slaves
1. 打開配置文件conf/slaves,默認情況下沒有slaves,需要使用cp命令復制slaves.template
# cd /opt/app/spark-2.2.0-bin-hadoop2.7/conf 如果不在/opt/app/spark-2.2.0-bin-hadoop2.7目錄下,則使用該命令
# cp slaves.template slaves
# sudo vi slaves
2. 加入slaves配置節點
hadoop1
hadoop2
hadoop3
2.2.3 配置conf/spark-env.sh
1. 以hadoop用戶,使用如下命令,打開配置文件spark-env.sh
# cd /opt/app/spark-2.2.0-bin-hadoop2.7 如果不在/opt/app/spark-2.2.0-bin-hadoop2.7目錄下,則使用該命令
# cp spark-env.sh.template spark-env.sh
# vi spark-env.sh
2. 加入如下環境配置內容,設置hadoop1為Master節點:
export JAVA_HOME=/usr/lib/java/jdk1.8.0_151
export SPARK_MASTER_IP=hadoop1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=900M
【注意】:SPARK_WORKER_MEMORY為計算時使用的內存,設置的值越低,計算越慢,反之亦然。
2.2.4 向各節點分發Spark程序
1. 進入hadoop1機器/opt/app/目錄,使用如下命令把spark文件夾復制到hadoop2和hadoop3機器
# cd /opt/app
# scp -r spark-2.2.0-bin-hadoop2.7 hadoop@hadoop2:/opt/app/
# scp -r spark-2.2.0-bin-hadoop2.7 hadoop@hadoop3:/opt/app/
2. 在從節點查看是否復制成功
2.3 啟動Spark
1. 啟動Spark
# cd /opt/app/spark-2.2.0-bin-hadoop2.7/sbin
# ./start-all.sh
2. 驗證啟動
此時在hadoop1上面運行的進程有:Worker和Master
此時在hadoop2和hadoop3上面運行的進程有Worker
通過netstat -nlt 命令查看hadoop1節點網絡情況
在瀏覽器中輸入http://hadoop1:8080,即可以進入Spark集群狀態頁面(windows防火牆打開,會導致直接訪問有問題,看下述步驟)
【注意】:在宿主機瀏覽器上,直接訪問(192.168.187.201)hadoop1:8080,會報錯(有很大可能是windows防火牆屏蔽了端口,可以通過關閉windows防火牆解決不能直接訪問的問題)。下面是通過宿主機端口轉移來達到間接訪問的目的:要想通過宿主機瀏覽器,訪問(192.168.187.201)hadoop1:8080,需要把宿主機端口與訪問的虛擬機端口進行關聯配置,通過訪問宿主機端口來達到訪問虛擬機端口的目的,如圖所示:
首先,點擊VMware的菜單欄編輯里面的虛擬網絡編輯器:
然后,進行下述操作:
接着跳轉到映射傳入端口窗口,如下:
最后完成,如下。
驗證,在宿主機瀏覽器上輸入localhost:8080,映射到hadoop1:8080,即可訪問Spark集群狀態
2.4 驗證客戶端連接
1. 進入hadoop1節點,進入spark的bin目錄,使用spark-shell連接集群
# cd /opt/app/spark-2.2.0-bin-hadoop2.7/bin
# spark-shell --master spark://hadoop1:7077 --executor-memory 600m
在命令中只指定了內存大小並沒有指定核數,所以該客戶端將占用該集群所有核並在每個節點分配600M內存
2. 查看Spark集群狀態,通過上一步驟【注意】的IP端口映射設置,在宿主機瀏覽器輸入localhost:8080,可以會直接映射到(192.168.187.201)hadoop1:8080上,如圖: