天天看點

搭建Spark叢集伺服器

tidb1.0開始支援spark,有個元件tiSpark,不過目前隻支援spark2.1版本。是以為了啟用tiSpark,還需搭建spark叢集。

在官網下載下傳位址http://spark.apache.org/downloads.html上,我找到了with hadoop的版本。如下圖:

搭建Spark叢集伺服器

下載下傳位址:https://d3kbcqa49mib13.cloudfront.net/spark-2.1.1-bin-hadoop2.7.tgz

目前手中有4台資源

決定選用其中三台搭建spark叢集,一台master,兩台slave

連結如下:

域名

IP

主從關系

tidb1    192.168.122.16    Master    

tidb2    192.168.122.18    Slave    

tidb3    192.168.122.19    Slave   

順便說一下,centos7的hostname設定和之前版本已經不一樣了。現在隻需輸入以下指令指定

hostnamectl set-hostname name

name就是你需要指定的hostname

将壓縮包下載下傳後,分别上傳至三台server的/usr/local目錄下,并解壓

cd  /usr/localtar zxvf spark-2.1.1-bin-hadoop2.7.tgz

準備

在搭建叢集環境之前,首先要做的事情是讓這三台機器可以互相免密登陸

編輯/etc/hosts

編輯三台server的/etc/hosts

編輯後内容如下:

#127.0.0.1   localhost tidb1 localhost4 localhost4.localdomain4#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6#216.176.179.218 mirrorlist.centos.org192.168.122.16 tidb1192.168.122.18 tidb2192.168.122.19 tidb3

注意:第一行一定要注釋,我在安裝過程中,spark啟動後,日志檔案報錯,就是因為它沒有去找我下面指定的ip和域名,而是老是去連接配接127.0.0.1

然後讓它們生效

source /etc/hosts

安裝ssh和rsync

可以通過下面指令檢視是否已經安裝:

rpm -qa|grep openssh

rpm -qa|grep rsync

如果沒有安裝ssh和rsync,可以通過下面指令進行安裝:

yum install ssh

yum install rsync

service sshd restart

配置Master無密碼登入所有Salve

tidb1節點的配置操作

以下是在tidb1節點的配置操作。

1)在tidb1節點上生成密碼對,在tidb1節點上執行以下指令:

ssh-keygen -t rsa -P ''

生成的密鑰對:id_rsa和id_rsa.pub,預設存儲在"/root/.ssh"目錄下。

2)接着在tidb1節點上做如下配置,把id_rsa.pub追加到授權的key裡面去

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3)修改ssh配置檔案"/etc/ssh/sshd_config"的下列内容,将以下内容的注釋去掉

# 啟用 RSA 認證RSAAuthentication yes

# 啟用公鑰私鑰配對認證方式PubkeyAuthentication yes

# 公鑰檔案路徑(和上面生成的檔案同)AuthorizedKeysFile .ssh/authorized_keys

4)重新開機ssh服務,才能使剛才設定有效。

service sshd restart

5)驗證無密碼登入本機是否成功

ssh tidb1

6)接下來的就是把公鑰複制到所有的Slave機器上。使用下面的指令進行複制公鑰:

scp /root/.ssh/id_rsa.pub root@tidb2:/root/scp /root/.ssh/id_rsa.pub root@tidb3:/root/

tidb2節點的配置操作

1)在"/root/"下建立".ssh"檔案夾,如果已經存在就不需要建立了

mkdir /root/.ssh

2)将tidb1的公鑰追加到tidb2的授權檔案"authorized_keys"中去

cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

4)重新開機ssh服務,才能使剛才設定有效

5)切換到tidb1使用ssh無密碼登入tidb2

ssh tidb2

6)把"/root/"目錄下的"id_rsa.pub"檔案删除掉

rm –r /root/id_rsa.pub

tidb3節點的配置操作

2)将tidb1的公鑰追加到tidb3的授權檔案"authorized_keys"中去

5)切換到tidb1使用ssh無密碼登入tidb3

ssh tidb3

配置所有Slave無密碼登入Master

1)建立tidb2自己的公鑰和私鑰,并把自己的公鑰追加到"authorized_keys"檔案中,執行下面指令

ssh-keygen -t rsa -P ''cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

2)将tidb2節點的公鑰"id_rsa.pub"複制到tidb1節點的"/root/"目錄下

scp /root/.ssh/id_rsa.pub root@tidb1:/root/

1)将tidb2的公鑰追加到tidb1的授權檔案"authorized_keys"中去

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

2)删除tidb2複制過來的"id_rsa.pub"檔案

配置完成後測試從tidb2到tidb1無密碼登入

1)建立tidb3自己的公鑰和私鑰,并把自己的公鑰追加到"authorized_keys"檔案中,執行下面指令:

2)将tidb3節點的公鑰"id_rsa.pub"複制到tidb1節點的"/root/"目錄下

tidb1節點的配置操作。

1)将tidb3的公鑰追加到tidb1的授權檔案"authorized_keys"中去

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

2)删除tidb3複制過來的"id_rsa.pub"檔案

配置完成後測試從tidb3到tidb1無密碼登入。

spark叢集搭建

進入到Spark安裝目錄

cd /usr/local/spark-2.1.1-bin-hadoop2.7

進入conf目錄并重命名并修改spark-env.sh.template檔案

cd conf/

mv spark-env.sh.template spark-env.sh

vim spark-env.sh

在該配置檔案中添加如下配置

export JAVA_HOME=/usr/local/jdk18121export SPARK_MASTER_IP=tidb1export SPARK_MASTER_PORT=7077

儲存退出

重命名并修改slaves.template檔案

mv slaves.template slaves

vi slaves

在該檔案中添加子節點所在的位置(Worker節點)

tidb2

tidb3

配置環境變量:

vim /etc/profile#set spark envexport SPARK_HOME=/usr/local/spark-2.1.1-bin-hadoop2.7export PATH=$PATH:$SPARK_HOME/binsource /etc/profile

将配置好的Spark拷貝到其他節點上

cd /usr/localscp -r spark-2.1.1-bin-hadoop2.7 root@tidb2:$PWDscp -r spark-2.1.1-bin-hadoop2.7 root@tidb3:$PWD

Spark叢集配置完畢,目前是1個Master,2個Worker,在tidb1上啟動Spark叢集

/usr/local/spark-2.1.1-bin-hadoop2.7/sbin/start-all.sh

啟動後,控制台顯示如下

圖2.png

在浏覽器中通路tidb1:8080端口,可見啟動後情況,如下圖

圖3.png

關閉叢集可用如下指令

/usr/local/spark-2.1.1-bin-hadoop2.7/sbin/stop-all.sh

總結

簡單介紹一下Spark叢集的工作模式

首先啟動一個Master(我這裡是tidb1),然後Master和各個Worker(我這裡是tidb2和tidb3)進行通信,其中真正幹活的是Worker下的Executor。

我們還需要有一個用戶端,這個用戶端叫做Driver。它首先和Master建立通信,然後Master負責資源配置設定,接着讓Worker啟動Executor,最後讓Executor和Driver進行通信。

繼續閱讀