Spark的Standalone模式安裝部署

Spark運行模式

Spark 有不少種模式,最簡單就是單機本地模式,還有單機僞分佈式模式,複雜的則運行在集羣中,目前能很好的運行在 Yarn和 Mesos 中,固然 Spark 還有自帶的 Standalone 模式,對於大多數狀況 Standalone 模式就足夠了,若是企業已經有 Yarn 或者 Mesos 環境,也是很方便部署的。node

  • local(本地模式):經常使用於本地開發測試,本地還分爲local單線程和local-cluster多線程;
  • standalone(集羣模式):典型的Mater/slave模式,不過也能看出Master是有單點故障的;Spark支持ZooKeeper來實現 HA
  • on yarn(集羣模式): 運行在 yarn 資源管理器框架之上,由 yarn 負責資源管理,Spark 負責任務調度和計算
  • on mesos(集羣模式): 運行在 mesos 資源管理器框架之上,由 mesos 負責資源管理,Spark 負責任務調度和計算
  • on cloud(集羣模式):好比 AWS 的 EC2,使用這個模式能很方便的訪問 Amazon的 S3;Spark 支持多種分佈式存儲系統:HDFS 和 S3

Spark Standalone集羣部署

準備工做

  • 這裏我下載的是Spark的編譯版本,不然須要事先自行編譯
  • Spark須要Hadoop的HDFS做爲持久化層,因此在安裝Spark以前須要安裝Hadoop,這裏Hadoop的安裝就不介紹了,給出一個教程Hadoop安裝教程_單機/僞分佈式配置
  • 實現建立hadoop用戶,Hadoop、Spark等程序都在該用戶下進行安裝
  • ssh無密碼登陸,Spark集羣中各節點的通訊須要經過ssh協議進行,這須要事先進行配置。經過在hadoop用戶的.ssh目錄下將其餘用戶的id_rsa.pub公鑰文件內容拷貝的本機的authorized_keys文件中,便可事先無登陸通訊的功能
  • Java環境的安裝,同時將JAVA_HOME、CLASSPATH等環境變量放到主目錄的.bashrc,執行source .bashrc使之生效

部署配置

這裏配置工做須要如下幾個步驟:shell

  1. 解壓Spark二進制壓縮包
  2. 配置conf/spark-env.sh文件
  3. 配置conf/slave文件

下面具體說明一下:瀏覽器

  • 配置Spark的運行環境,將spark-env.sh.template模板文件複製成spark-env.sh,而後填寫相應須要的配置內容:bash

    export SPARK_MASTER_IP=hadoop1
    export SPARK_MASTER_PORT=7077
    export SPARK_WORKER_CORES=1
    export SPARK_WORDER_INSTANCES=1
    export SPARK_WORKER_MEMORY=3g

    其餘選項內容請參照下面的選項說明:多線程

    # Options for the daemons used in the standalone deploy mode:
    # - SPARK_MASTER_IP, to bind the master to a different IP address or hostname
    # - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, to use non-default ports for the master
    # - SPARK_MASTER_OPTS, to set config properties only for the master (e.g. "-Dx=y")
    # - SPARK_WORKER_CORES, to set the number of cores to use on this machine
    # - SPARK_WORKER_MEMORY, to set how much total memory workers have to give executors (e.g. 1000m, 2g)
    # - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, to use non-default ports for the worker
    # - SPARK_WORKER_INSTANCES, to set the number of worker processes per node
    # - SPARK_WORKER_DIR, to set the working directory of worker processes
    # - SPARK_WORKER_OPTS, to set config properties only for the worker (e.g. "-Dx=y")
    # - SPARK_HISTORY_OPTS, to set config properties only for the history server (e.g. "-Dx=y")
  • conf/slave文件用戶分佈式節點的配置,這裏只須要在slave文件中寫入該節點的主機名便可框架

  • 將以上內容都配置好了,將這個spark目錄拷貝到各個節點scp -r spark hadoop@hadoop2:~ssh

  • 接下來就能夠啓動集羣了,在Spark目錄中執行sbin/start-all.sh,而後能夠經過netstat -nat命令查看端口7077的進程,還能夠經過瀏覽器訪問hadoop1:8080瞭解集羣的概況分佈式

Spark Client部署

Spark Client的做用是,事先搭建起Spark集羣,而後再物理機上部署客戶端,而後經過該客戶端提交任務給Spark集羣。
因爲上面介紹了Standalone分佈式集羣是如何搭建的,這裏只需將集羣上的spark文件夾拷貝過來。
最簡單的Spark客戶端訪問集羣的方式就是經過Spark shell的方式:bin/spark-shell --master spark://hadoop1:7077這樣就能夠訪問集羣了。
這樣在瀏覽器的Spark集羣界面上就能夠看到Running Applications一欄中有Spark shell的應用在執行。oop

Spark Standalone僞分佈式部署

僞分佈式是在一臺機器上進行部署來模擬分佈式的集羣,這裏部署的過程和Standalone集羣的部署是相似的,事前的工做都是同樣的,這裏只是在配置文件中作相應的修改就能夠了。測試

這裏仍是配置這兩個文件:

配置conf/spark-env.sh文件
配置conf/slave文件

  • 修改spark-env.sh文件,修改master的ip,這裏主機名和用戶ip分別在/etc/hostname/etc/hosts文件中進行配置
    export SPARK_MASTER_IP=jason
    export SPARK_MASTER_PORT=7077
    export SPARK_WORKER_CORES=1
    export SPARK_WORDER_INSTANCES=1
    export SPARK_WORKER_MEMORY=3g
  • slave文件中,填寫本身的主機名,好比個人主機名jason


 

文/JasonDing(簡書做者) 原文連接:http://www.jianshu.com/p/9d96fdc79fcb 著做權歸做者全部,轉載請聯繫做者得到受權,並標註「簡書做者」。

相關文章
相關標籤/搜索