Spark學習進度-Spark環境搭建&Spark shell

清風紫雪發表於2021-01-04

Spark環境搭建

下載包

所需Spark包:我選擇的是2.2.0的對應Hadoop2.7版本的,下載地址:https://archive.apache.org/dist/spark/spark-2.2.0/

Spark 叢集高可用搭建

對於 Spark Standalone 叢集來說, 當 Worker 排程出現問題的時候, 會自動的彈性容錯, 將出錯的 Task 排程到其它 Worker 執行

但是對於 Master 來說, 是會出現單點失敗的, 為了避免可能出現的單點失敗問題, Spark 提供了兩種方式滿足高可用

  • 使用 Zookeeper 實現 Masters 的主備切換

  • 使用檔案系統做主備切換

Step 1 停止 Spark 叢集

cd /export/servers/spark
sbin/stop-all.sh

Step 2 修改配置檔案, 增加 Spark 執行時引數, 從而指定 Zookeeper 的位置

  1. 進入 spark-env.sh 所在目錄, 開啟 vi 編輯

    cd /export/servers/spark/conf
    vi spark-env.sh
  2. 編輯 spark-env.sh, 新增 Spark 啟動引數, 並去掉 SPARK_MASTER_HOST 地址

    db287fa523a39bd1a5e277c3ccd10a26
    # 指定 Java Home
    export JAVA_HOME=/export/servers/jdk1.8.0_141
    
    # 指定 Spark Master 地址
    # export SPARK_MASTER_HOST=node01
    export SPARK_MASTER_PORT=7077
    
    # 指定 Spark History 執行引數
    export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://node01:8020/spark_log"
    
    # 指定 Spark 執行時引數
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node01:2181,node02:2181,node03:2181 -Dspark.deploy.zookeeper.dir=/spark"

Step 3 分發配置檔案到整個叢集

cd /export/servers/spark/conf
scp spark-env.sh node02:$PWD
scp spark-env.sh node03:$PWD

Step 4 啟動

  1. 在 node01 上啟動整個叢集

    cd /export/servers/spark
    sbin/start-all.sh
    sbin/start-history-server.sh
  2. 在 node02 上單獨再啟動一個 Master

    cd /export/servers/spark
    sbin/start-master.sh

Step 5 檢視 node01 master 和 node02 master 的 WebUI

  1. 你會發現一個是 ALIVE(主), 另外一個是 STANDBY(備)

 

 

 

 Spark shell

簡單介紹

Spark shell 是 Spark 提供的一個基於 Scala 語言的互動式直譯器, 類似於 Scala 提供的互動式直譯器, Spark shell 也可以直接在 Shell 中編寫程式碼執行
這種方式也比較重要, 因為一般的資料分析任務可能需要探索著進行, 不是一蹴而就的, 使用 Spark shell 先進行探索, 當程式碼穩定以後, 使用獨立應用的方式來提交任務, 這樣是一個比較常見的流程

Spark shell 的方式編寫 WordCount

Spark shell 簡介
  • 啟動 Spark shell
    進入 Spark 安裝目錄後執行 spark-shell --master master 就可以提交Spark 任務

  • Spark shell 的原理是把每一行 Scala 程式碼編譯成類, 最終交由 Spark 執行
 
Master地址的設定

Master 的地址可以有如下幾種設定方式

Table 3. master
地址解釋

local[N]

使用 N 條 Worker 執行緒在本地執行

spark://host:port

在 Spark standalone 中執行, 指定 Spark 叢集的 Master 地址, 埠預設為 7077

mesos://host:port

在 Apache Mesos 中執行, 指定 Mesos 的地址

yarn

在 Yarn 中執行, Yarn 的地址由環境變數 HADOOP_CONF_DIR 來指定

Step 1 準備檔案

在 hadoop01 中建立檔案 /export/data/wordcount.txt,檔案內容如下

hadoop spark flume
spark hadoop
flume hadoop

Step 2 啟動 Spark shell

cd /export/servers/spark
bin/spark-shell --master local[2]

Step 3 執行如下程式碼

 

 執行流程

 

 

相關文章