spark-2.4.5 安裝記錄


 參考 https://data-flair.training/blogs/install-apache-spark-multi-node-cluster/

下載 spark 地址為 

 

 http://spark.apache.org/downloads.html

准備三個節點

192.168.1.1 [hostname] master
192.168.1.2 [hostname] slave1
192.168.1.3 [hostname] slave2

將以上配置 append 到 三個節點機器上的  /etc/hosts  中。由於我這里三台機器的 domain 均不同,所以設置了 [hostname],例如 master 節點的為

192.168.1.1 xxx.localdomain master

查看主機名方法為,

$ hostname

如果最后啟動spark 報錯 unknown hostname,一般就是指主機名未設置,此時通過 

$ hostname -i

發現會報同樣的錯誤。

 

安裝步驟:

一、設置 ssh 免密登錄

如果沒有安裝 ssh,則需要安裝

sudo apt install openssh-server

三台機器上均執行

ssh-keygen -t rsa

一路回車,使用默認設置(密鑰文件路徑和文件名)

將 slave1 slave2 上面的  ~/.ssh/id_rsa.pub 文件 拷貝到 master 節點上,

scp ~/.ssh/id_rsa.pub xxx@master:~/.ssh/id_rsa.pub.slave1
scp ~/.ssh/id_rsa.pub xxx@master:~/.ssh/id_rsa.pub.slave2

注意,xxx 表示用戶名,這三台機器上最好使用相同的用戶名,如需要,可創建用戶

adduser xxx # 創建新用戶 xxx
passwd xxx  # 給 xxx 設置密碼

 

在 master 上執行

cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys xxx@slave1:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys xxx@slave2:~/.ssh/authorized_keys

在 master 上驗證無密碼登錄

ssh slave1
ssh slave2

在 slave1/slave2 上也可以無密碼登錄其他兩個節點。

注意:.ssh 文件夾的權限必須為 700, authorized_keys 文件權限必須為 600(其他權限值可能均不奏效),修改權限使用

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

 

二、安裝jdk ,scala,spark

省略,spark 的安裝僅僅是將上面下載的文件解壓即可。注意配置環境變量 

export JAVA_HOME=...
export SCALA_HOME=...
export SPARK_HOME=...
export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$PATH

在 master 節點上,進入 SPARK_HOME 下的 conf 目錄,

cd conf
cp spark-env.sh.template spark-env.sh
cp slaves.template slaves

編輯 slaves 文件

# localhost
slave1
slave2

編輯 spark-env.sh 文件

export JAVA_HOME=...
export SPARK_WORKER_CORES=8

在 slave1 和 slave2 上,執行同樣的操作。

注意:spark 目錄最好在三台節點上保持相同,即 環境變量 SPARK_HOME 相同

三、啟動集群

在 master 節點上執行

sbin/start-all.sh

關閉集群則執行

sbin/stop-all.sh

啟動后,可以在 master 或 slave1/slave2 上執行  jps  以查看 java 進程。查看 web 界面,地址為

http://MASTER-IP:8080/

 如果發現 worker 節點連接不是 master,報錯如下

Caused by: java.io.IOException: Connecting to :7077 timed out (120000 ms)
...
org.apache.spark.deploy.worker.Worker$$anonfun$org$apache$spark$deploy$worker$Worker$$tryRegisterAllMasters$1$$anon$1.run
...

那么需要在 三台機器上的 $SPARK_HOME/conf/spark-env.sh 添加

export SPARK_MASTER_HOST=<master ip>

然后重新執行 

sbin/start-all.sh

 最終web 管理界面為

 

點擊 worker id 下的某個worker,跳轉至 worker web 頁面,如果此時出現連接失敗,請檢查 防火牆是否開通,執行如下

sudo firewall-cmd --query-port=8081/tcp # 返回yes or no,表示是否開放
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent # 添加白名單
sudo firewall-cmd --reload # 重新裝置規則
sudo firewall-cmd --query-port=8081/tcp

如果檢查 8081 端口已經開放,仍然打不開 worker web 界面,則執行

sudo iptables -F

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM