官术网_书友最值得收藏!

2.2 Spark部署

Spark部署主要包括Local模式部署、Standalone模式部署、YARN模式部署、Mesos模式部署(參考官方文檔)。

其中,集群部署模式如下:

□獨立部署模式:Spark自帶的一種簡單集群管理器,使用該集群管理器可以輕松地建立一個集群;

□ Apache Mesos:一個通用的集群管理器,該集群管理器也可以運行MapReduce和服務應用(實際業務沒有采取該種架構,本書沒有對該模式進行專門講解,如需要了解,請參考官方文檔);

□ Hadoop YARN:Hadoop 2中的資源管理器,是當前主要使用的資源管理器。

除此之外,Spark的EC2啟動腳本使得在Amazon EC2上啟動一個獨立模式集群變得容易。

2.2.1 Local模式部署

Local(本地)模式下部署Spark應用程序比較簡單,可以用于檢測Spark是否編譯安裝成功,需要配置Java環境變量和設置主節點。

主節點設置步驟如下:

1)進入Spark主程序的conf目錄,執行:cd spark-1.5.0/conf。

2)以spark-env.sh.template文件為模板創建spark-env.sh文件。

3)修改spark-env.sh配置文件:

          vi spark-env.sh
          export SPARK_MASTER_IP=$YOUR_MASTER_IP
          export JAVA_HOME=$YOUR_JAVA_HOME

4)版本驗證,在安裝完畢Spark并配置環境變量之后,在任意目錄下運行spark-shell命令即可進入Spark命令行模式,此時出現的大段文字中會提示當前的Spark版本,例如:

          Welcome to Spark version 1.5.0
          Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_45)

2.2.2 Standalone模式部署

部署Standalone模式Spark集群步驟如下:

1)修改spark-env.sh配置文件(參考本地部署模式)。

          vim spark-env.sh
          export SPARK_MASTER_IP=$YOUR_MASTER_IP
          export JAVA_HOME=$YOUR_JAVA_HOME

2)在Spark目錄下創建一個名為conf/slaves的文件。該文件需要包含所有將要啟動Spark Workers的機器的hostname(主機名),每行一個。

          vim slaves
          # A Spark Worker will be started on each of the machines listed below.
          slave01
          slave02
          slave03
          slave04
          ……

3)發送配置文件spark-env.sh和Slaves到所有Worker節點,以slave02為例:

          scp -r $SPARK_HOME/conf/spark-env.sh slave02:/$SPARK_HOME/conf/
          scp -r $SPARK_HOME/slavesslave02:/$SPARK_HOME/conf/

4)配置Master無密鑰登錄Slaves節點。

① 在Master節點和所有Slaves節點上安裝openssh-server(以Ubuntu 12.04為例):

sudo apt-get install openssh-server

② 建立SSH KEY:

ssh-keygen -t rsa -P ""

③ 在Master節點上啟用SSH KEY(authorized_keys權限644):

            cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
            sudo /etc/init.d/ssh reload

④ 驗證SSH的配置:

ssh localhost

⑤ 將Master節點的authorized_keys發送到所有的Slaves節點,并登錄驗證。

部署完畢,可以通過手動啟動和腳本啟動集群的Master和Worker。下面詳細介紹一下Spark Standalone模式集群的啟動以及啟動參數的功能。

1. 手動啟動集群

通過執行下面的命令啟動Master節點:

./sbin/start-master.sh

啟動之后,命令行會打印出一個spark://HOST:PORT,你可以通過該信息將Worker與Master連接,或以“master”參數的形式傳遞給SparkContext對象。你也可以在Master的WebUI中找到這個URL,默認訪問地址是http://localhost:8080。

支持啟動一個或更多的Worker,然后通過下面的指令與Master連接:

./bin/spark-class org.apache.spark.deploy.worker.Worker park:// IP:PORT

一旦啟動了一個Worker節點,在Master的WebUI中(默認http://localhost:8080),你會看到新增Worker節點,以及CPU數目、內存大小(減去1GB留給系統)在列表中呈現。

2. 腳本啟動集群

檢查Spark目錄下的conf/slaves文件是否創建,是否包含了所有工作節點機器的hostname,一旦建立了這個文件,就可以通過下面的shell腳本在Master節點上啟動或終止你的集群。

□ sbin/start-master.sh:在腳本運行的機器上啟動一個Master實例。

□ sbin/start-slaves.sh:在conf/slaves文件中指定的機器上啟動一個Slaves實例。

□ sbin/start-all.sh:以上面所述的方式啟動一個Master和一定數量的Slaves。

□ sbin/stop-master.sh:停止當前通過bin/start-master.sh腳本啟動的Master實例。

□ sbin/stop-slaves.sh:停止在conf/salves文件中指定的機器上所有的Slaves實例。

□ sbin/stop-all.sh:停止當前啟動的Master實例和指定的Slaves實例。

執行cd /spark-1.5.0/sbin命令進入sbin文件夾,執行./start-all.sh可以啟動所有服務器上的Spark相關進程。

執行jps命令可以查看當前服務器正在運行的進程。如果是主節點,可以看到Master進程;如果是子節點,可以看到Worker進程。這樣就表示Spark在服務器上全部配置完畢。

可以通過設置spark-env.sh中的環境變量進一步配置集群,并復制到所有的Worker機器上以使設置生效,表2-2為可配置的spark-env.sh中的環境變量。

表2-2 可配置的spark-env.sh中的環境變量

2.2.3 YARN模式部署

下面來具體講解如何基于YARN配置Spark程序。

(1)準備工作

配置Spark之前,需要做一些準備工作。

首先,檢查hosts文件,即使用root賬戶登錄服務器之后,在任意目錄下執行vim /etc/hosts命令,查看需要部署Spark的“服務器IP機器名”是否已存在,沒有請添加。

其次,添加配置文件,同樣是在任意目錄下執行vim /etc/prof ile,打開環境變量配置文件,將SPARK_HOME配置到環境變量中,具體如下所示。

            export SPARK_HOME=/home/hadoop/spark-1.5.0
            export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
            export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
            export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

然后,在任意目錄下執行source /etc/prof ile命令讓環境變量生效。

(2)Spark本身的配置

接下來就是針對Spark本身的配置。

首先,進入Spark中的conf文件夾,即在Spark所在目錄執行cd/spark-1.5.0/conf命令。打開spark-env.sh文件,即vim spark-env.sh,添加:

            export JAVA_HOME=$YOUR_JAVA_HOME
            export SPARK_MASTER_IP=$YOUR_MASTER_IP

通過這一項配置,可以確定執行Spark程序時的主節點。

接下來,打開Slaves文件,將子節點的IP地址或名稱添加到該文件中,完成Spark的IP和機器名對應的配置。

            vim slaves
            # A Spark Worker will be started on each of the machines listed below.
            slave01
            slave02
            slave03
            slave04
            ……

最后,需要將spark-1.5.0文件夾、環境變量配置文件和hosts文件批量發送到配置的各個子節點的服務器上,再批量執行source /etc/prof ile命令即可。

按照先啟動Hadoop,再啟動Spark的順序進行啟動。

主站蜘蛛池模板: 台江县| 巩义市| 阳信县| 阿拉善左旗| 绥德县| 图木舒克市| 乐东| 渑池县| 乐至县| 大石桥市| 芦山县| 河间市| 永兴县| 德令哈市| 宁夏| 右玉县| 安仁县| 满洲里市| 华安县| 屯留县| 华亭县| 左云县| 黎城县| 田林县| 洞口县| 杂多县| 郴州市| 金乡县| 临猗县| 新宁县| 太和县| 高阳县| 防城港市| 许昌市| 泾阳县| 三穗县| 新营市| 海伦市| 奉贤区| 舞阳县| 家居|