本文作者:賀聖軍,叩丁狼高階講師。原創文章,轉載請註明出處。

現在在大資料的生態圈的離線的處理主要使用的是MapReduce和Hive技術,但是對於實時處理分析,越來越多的企業使用的Spark作為企業的記憶體處理計算框架,相對於MapReduce,Spark主要有以下一些特點:

  • Spark基於記憶體運算要比MapReduce塊100倍,基於HDFS也要快10倍以上
  • Spark簡單易用,有相對成熟的API,支援使用Scala,Python和Java的API
  • Spark提供了統一的解決方案,Spark可以用於批處理,互動式查詢,實時處理,機器學習和圖計算
  • 相容性好,Spark可以執行在standalone,YARM,Mesos等資源排程管理框架

接下來我們來搭建一個Spark的叢集模式,本教程講搭建Spark2.3的版本,其中依賴的相關配置如下

  • 作業系統:CentOS Linux release 7.5.1804 (Core)
  • jdk使用 1.8.0_171
  • hadoop版本使用 hadoop-2.9.1(使用HDFS檔案系統)
  • 註冊中心使用zookeeper-3.4.12

安裝好上述相關軟體,我們來時我們的Spark叢集規劃

主從節點 lab201 lab202 lab203
Master節點
Worker節點
[[email protected] soft]# pwd
/root/soft
[root[email protected] soft]# ls |grep sp
spark-2.3.1-bin-hadoop2.7.tgz
  • 解壓檔案到指定的安裝目錄
[[email protected] soft]# tar -zxvf spark-2.3.1-bin-hadoop2.7.tgz -C ~/apps/
[[email protected] apps]# pwd
/root/apps
[[email protected] apps]# ls
hadoop-2.9.1  hive-1.2.2  jdk1.8  maven-3.5.4  spark-2.3.1-bin-hadoop2.7  zookeeper-3.4.12
  • 使用scp命令分別拷貝到另外兩臺主機
[[email protected] apps]# scp -r spark-2.3.1-bin-hadoop2.7/ lab202:$PWD
[[email protected] apps]# scp -r spark-2.3.1-bin-hadoop2.7/ lab203:$PWD
  • 拷貝完成以後開始修改對應的配置檔案

spark-env.sh:主要配置JAVA_HOME,是spark程式的啟動配置檔案

[[email protected] conf]# mv spark-env.sh.template  spark-env.sh
[[email protected] conf]# vi spark-env.sh
#配置java的執行環境
JAVA_HOME=/root/apps/jdk1.8
#配置Master節點使用ZKserver進行註冊管理,避免單節點故障
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=lab201:2181-Dspark.deploy.zookeeper.dir=/spark"
#配置HADOOP環境的配置目錄,根據HADOOP的客戶端配置決定預設是讀取HDFS還是本地file:///
HADOOP_CONF_DIR=/root/apps/hadoop-2.9.1/etc/hadoop
  • slaves: 主要配置從節點Worker的地址
[[email protected] conf]# mv slaves.template slaves
[[email protected] conf]# vi slaves
lab201
lab202
lab203
  • 把修改的配置檔案拷貝到另外兩臺主機
[[email protected] conf]# scp slaves spark-env.sh  lab202:$PWD
[[email protected] conf]# scp slaves spark-env.sh  lab203:$PWD
  • 啟動master節點和worker節點

    在lab201執行 sbin/start-all.sh

[[email protected] spark-2.3.1-bin-hadoop2.7]# pwd
/root/apps/spark-2.3.1-bin-hadoop2.7
[[email protected] spark-2.3.1-bin-hadoop2.7]# sbin/start-all.sh
  • 在lab202 單獨啟動marster叢集
[[email protected] spark-2.3.1-bin-hadoop2.7]# sbin/start-master.sh
  • 通過jps檢查程序是否正常啟動

    lab201

[[email protected] spark-2.3.1-bin-hadoop2.7]# jps
2517 Jps
2455 Worker
1496 QuorumPeerMain
2348 Master
lab202
[[email protected] spark-2.3.1-bin-hadoop2.7]# jps
1552 QuorumPeerMain
2409 Jps
2253 Worker
2334 Master
lab203
[[email protected] bin]# jps
2195 Jps
2137 Worker
1550 QuorumPeerMain

如果都有上面的Master和Worker程序說明啟動成功

  • 當然,我們也可以通過訪問Spark的管理頁面看到其中的執行狀態

    其中一個狀態為ALIVE 另外一個狀態為STANDBY

好了,關於Spark的叢集環境搭建基本上已經完成. 我們就可以開始Spark框架的學習了。