1. 程式人生 > 其它 >spark叢集部署

spark叢集部署

Spark叢集部署

1、背景知識

Spark有3種叢集部署模式,分別是Standalone、Mesos和YARN,這3種模式都屬於master/slave模式。

  1. Standalone獨立模式,Spark 原生的簡單叢集管理器, 自帶完整的服務, 可單獨部署到一個叢集中,無需依賴任何其他資源管理系統, 使用 Standalone 可以很方便地搭建一個叢集,一般在公司內部沒有搭建其他資源管理框架的時候才會使用。

  2. Mesos模式,一個強大的分散式資源管理框架,它允許多種不同的框架部署在其上,包括 yarn,由於mesos這種方式目前應用的比較少,這裡沒有記錄mesos的部署方式。

  3. YARN模式: 統一的資源管理機制, 在上面可以執行多套計算框架, 如map reduce、storm 等, 根據 driver 在叢集中的位置不同,分為 yarn client 和 yarn cluster。

    由於在實際工廠環境下使用的絕大多數的叢集管理器是 Hadoop YARN,因此我們關注的重點是 Hadoop YARN 模式下的 Spark 叢集部署。

2、使用軟體及其版本

  • 環境

    • 虛擬機器:VirtualBox 6.0.24 r139119

    • Linux:CentOS 7

    • Windows:Windows10

  • 軟體

    • Spark

  • 工具

    • 遠端連線工具:XShell6

    • SFTP工具:FileZilla3.33.0

3、目標

  • Spark叢集部署

4、操作步驟

  1. 下載Spark

    在Spark官網`http://spark.apache.org/downloads.html

    ,下載spark。

    由於前面使用的hadoop是hadoop2.6的cdh5.7版本,官網並沒有直接提供,只能在官網下載二進位制的版本,進行重新編譯

  2. 安裝Spark

    Spark On YARN模式中無須單獨部署Spark叢集,其本質是將Spark程式提交到Hadoop叢集的YARN中執行,此時的Spark只作為提交程式的客戶端,由於前面已經部署好了Hadoop高可用叢集,所以只需要在master節點部署即可

    1. 上傳spark安裝包到master節點,解壓安裝,使用命令

      tar -zxvf spark-2.4.7-bin-hadoop2.6.tgz -C ~/app/

    2. 修改配置檔案

      進入spark安裝目錄下的conf目錄

      1. 修改spark-en.sh檔案,使用命令

        cp spark-env.sh.template spark-env.sh

        複製spark-env.sh檔案,進行編輯,使用命令

        sudo vi spark-env.sh

        在末尾新增配置資訊

        export JAVA_HOME=/home/hadoop/app/jdk1.8.0_131
        export HADOOP_CONF_DIR=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop

      2. 修改master主機中hadoop目錄中的/etc/hadoop下的yarn-site.xml,使用命令

        sudo vi yarn-site.xml

        新增配置內容內容

        <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
        </property>
        <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
        </property>
        • yarn.nodemanager.pmem-check-enabled:是否啟動一個執行緒檢查每個任務正使用的實體記憶體量,如果任務超出分配值,則直接將其殺掉,預設是true

        • yarn.nodemanager.vmem-check-enabled:是否啟動一個執行緒檢查每個任務正使用的虛擬記憶體量,如果任務超出分配值,則直接將其殺掉,預設是true

      3. 分發yarn-site.xml到slave01,slave02,使用命令

        scp yarn-site.xml hadoop@slave01:~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop
        scp yarn-site.xml hadoop@slave02:~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop
    3. 修改環境變數

      使用命令

      sudo vi /etc/profile

      新增配置資訊

      export SPARK_HOME=/home/hadoop/app/spark-2.4.7-bin-hadoop2.6
      export PATH=$SPARK_HOME/bin:$PATH

      使用source /etc/profile命令,使配置生效。

    4. 驗證

      使用yarn方式啟動spark,使用命令:

      spark-shell --master yarn --deploy-mode client,進入spark-shell互動介面

      可以看到使用的yarn方式,spark版本是2.4.7,scala的版本是2.11.12,顯示上述介面,表示Spark on Yarn 部署成功!

    5. Spark叢集測試

      1. 使用Spark官方提供的示例SparkPi,進行叢集測試,驗證spark任務是否可以成功提交到yarn中執行,使用命令:

      spark-submit --class org.apache.spark.examples.SparkPi \
      --master yarn \
      --deploy-mode cluster \
      --driver-memory 2g \
      --executor-memory 1g \
      --executor-cores 1 \
      /home/hadoop/app/spark-2.4.7-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.7.jar 10
      • --class:呼叫最後一行中jar包指定類。

      • --master yarn:指定spark任務提交到yarn執行。

      • deploy-mode cluster:指定spark on yarn的執行模式為client,便於檢視輸出結果。

      • driver-memory 2g:指定每個Driver的可用記憶體為2GB。

      • executor-memory 1g:指定每個Executor的可用記憶體為1GB。

      • executor-cores 1:指定每個Executor使用cup的核心數為一

      1. 執行完上述命令後,在瀏覽器輸入http://192.168.137.2:8088檢視yarn管理介面

        可以看到任務已經提交到yarn叢集之上。

        點選任務ID,進入介面

        點選logs連結,進入介面

        點選輸出日誌

        可以看到輸出結果

5、總結