1. 程式人生 > 實用技巧 >安裝高可用spark叢集--多個Master,配置zookeeper

安裝高可用spark叢集--多個Master,配置zookeeper

前面我已經安裝了spark叢集,叢集的規劃是一個Master,三個Worker,L1上安裝Master,L3,L4,L5上安裝Worker,安裝過程與細節請看我得另外一篇部落格:https://blog.csdn.net/weixin_43866709/article/details/88388000

不過這樣安裝只有一個Master節點,如果這個Master節點宕機了,那麼這個叢集就不能正常運行了,於是就需要一個高可用的叢集。
那麼怎樣實現高可用呢?我們可以安裝兩個Master,當其中一個Master節點宕機了之後,另外一個Master節點會立即頂替之前的節點,這樣叢集就可以穩定的進行工作了。
這樣一來,我們就需要zookeeper協調服務了,zookeeper安裝請看部落格:

https://blog.csdn.net/weixin_43866709/article/details/88403379

現在的叢集規劃是:兩個Master,三個Worker:
L1 Master,zookeeper
L2 Master,zookeeper
L3 Worker,zookeeper
L4 Worker
L5 Worker

安裝配置完zookeeper叢集並啟動zookeeper叢集。
停止spark所有服務,修改配置檔案spark-env.sh

刪除之前配置的SPARK_MASTER_IP //因為現在不確定Master節點是哪臺機器了,所以要把這個刪掉。

新增如下配置:
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=L1,L2,L3(#這裡填寫的是zookeeper的三臺主機) -Dspark.deploy.zookeeper.dir=/spark"
然後記得將這個配置檔案拷貝到其他機器。

1.接著啟動spark叢集,然後在新加入的Master節點上,進入到sbin目錄,執行start-master.sh,這表示只啟動master節點。否則會出錯。
2.然後開啟web管理介面,看到有三臺Worker節點的資訊
3.然後回到真正工作的Master節點上(也就是L1),使用命令kill -9 Master程序號殺死這個Master程序,這時Web管理介面會失效,接著使用L2節點的IP進入到Web管理介面,會看到相同的Worker節點的資訊。這表示zookeeper已經選舉成功,現在L2是真正工作的Master節點,說明高可用的spark叢集安裝成功。

注意事項

1.因為添加了一臺Master,所以在L2上也要配置到其他Worker節點和L1的ssh免密登陸,否則這個新增加的Master無法工作
2.記得在/etc/hosts檔案中新增其他節點的IP地址和主機名的對映關係,否則啟動集群后,Worker節點雖然啟動成功,但是spark叢集Web管理頁面上看不到Worker資訊。
3.注意spark-env.sh新增加配置的格式,三臺zookeeper主機名之間要用逗號隔開,每個配置開頭都是-D,且所有配置要寫在雙引號之間。
4.在啟動第二臺Master節點時i,一定要用start-master.sh指令碼啟動。