CentOS6安裝各類大數據軟件 第十章:Spark集羣安裝和部署

相關文章連接

CentOS6安裝各類大數據軟件 第一章:各個軟件版本介紹html

CentOS6安裝各類大數據軟件 第二章:Linux各個軟件啓動命令java

CentOS6安裝各類大數據軟件 第三章:Linux基礎軟件的安裝node

CentOS6安裝各類大數據軟件 第四章:Hadoop分佈式集羣配置mysql

CentOS6安裝各類大數據軟件 第五章:Kafka集羣的配置sql

CentOS6安裝各類大數據軟件 第六章:HBase分佈式集羣的配置shell

CentOS6安裝各類大數據軟件 第七章:Flume安裝與配置數據庫

CentOS6安裝各類大數據軟件 第八章:Hive安裝和配置apache

CentOS6安裝各類大數據軟件 第九章:Hue大數據可視化工具安裝和配置服務器

CentOS6安裝各類大數據軟件 第十章:Spark集羣安裝和部署架構

1. Spark安裝包的下載

下載Spark安裝包地址:http://spark.apache.org/downloads.html

:本次學習過程當中咱們選用比較新的spark版本spark2.2.0

上述方式獲取Spark安裝包的方式是使用官方編譯好的安裝包來進行安裝的.官方通常只提供有限的幾個匹配hadoop版本的編譯包.因此,若是未來你須要特地匹配你本身的hadoop版本,這個時候就須要你本身去編譯spark源碼。通常狀況下不建議本身編譯源碼,使用官方提供的便可。

2. Spark集羣安裝和部署

2.1. 上傳安裝包並進行解壓

#解壓安裝包
tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz -C /export/servers/
#對解壓後的文件夾進行重命名
mv spark-2.2.0-bin-hadoop2.7/ spark-2.2.0

2.2. 修改spark-env.sh

在/export/servers/spark-2.2.0/conf配置文件目錄下進行配置文件的修改

# 步驟一:將spark-env.sh.template這個文件從新命名爲spark-env.sh
mv spark-env.sh.template spark-env.sh

# 步驟二:修改spark-env.sh這個配置文件,新增以下配置內容便可:
#設置JAVA_HOME目錄
export JAVA_HOME=/export/servers/jdk1.8.0_144
#設置SCALA_HOME目錄
export SCALA_HOME=/export/servers/scala-2.11.8
#設置SPARK主機的地址
export SPARK_MASTER_HOST=node01.ouyang.com
#設置SPARK主機的端口地址
export SPARK_MASTER_PORT=7077
#設置worker節點的內存大小
export SPARK_WORKER_MEMORY=1g
#設置HDFS文件系統的配置文件的位置
export HADOOP_CONF_DIR=/export/servers/hadoop-2.7.4/etc/hadoop

2.3. 修改slaves配置文件

# 步驟一:將slaves.template這個文件從新命名爲slaves:
mv slaves.template slaves

# 步驟二:修改slaves配置文件中的內容,在裏面添加worker節點的地址
# 配置從節點的地址
spark-node02.ouyang.com
spark-node03.ouyang.com

2.4. 配置Spark環境變量

打開/etc/profile,在該文件中添加以下內容:

#配置Spark環境變量
export SPARK_HOME=/opt/modules/spark-2.2.0
export PATH=$SPARK_HOME/bin:$PATH
export SPARK_HOME PATH

2.5. 將spark安裝目錄發送到其餘服務器

使用scp命令,將spark的安裝目錄拷貝只遠程其餘節點

#拷貝spark安裝目錄道node02機器上
scp -r spark-2.2.0/ spark-node02.ouyang.com:$PWD
#拷貝spark安裝目錄到node03機器上
scp -r spark-2.2.0/ spark-node03. ouyang.com:$PWD
#拷貝/etc/profile至node02機器上
scp /etc/profile spark-node02. ouyang.com:/etc/
#拷貝/etc/profile至node03機器上
scp /etc/profile spark-node03. ouyang.com:/etc/

:在每一臺機器上使用source /etc/profile 讓配置生效

2.6. Spark啓動和中止

啓動spark命令:在spark的跟目錄下,執行以下命令

./sbin/start-all.sh

中止spark命令:

./sbin/stop-all.sh

2.7. 驗證Spark集羣是否啓動成功

 2.7.1. 使用jps命令查看進程

在各個節點使用jps命令進行查看,若是在節點1有master進程,在節點2和節點3上有worker進程,說明Spark集羣啓動成功。

2.7.2. 訪問Spark集羣的WEB UI界面,查看各個節點狀態

訪問地址:http://node01.ouyang.com:8080/#/login

界面以下:

2.7.3. 使用spark-shell測試spark集羣是否啓動成功

在任意一個節點上的Spark安裝目錄執行以下命令: ./bin/spark-shell

啓動成功以後,界面以下:

2.8. Spark的注意事項

若是spark-env.sh配置文件中配置了SPARK_HADOOP_CONF這個配置選項,在使用spark-shell進行驗證spark集羣是否啓動成功的時候,須要提早開啓HDFS文件系統

3. Spark的高可用部署

3.1. Spark架構原理圖

3.2. 高可用部署方案說明

Spark Standalone集羣是Mater-Slaves架構的集羣模式,和大部分的Master-Slaves 結構集羣同樣,存在着 Master 單點故障的問題。如何解決這個單點故障的問題,Spark 提供了兩種方案:

第一種:基於文件系統的單點恢復;

第二種:基於zookeeper的Standby Master(Standby Masters with Zookeeper)

咱們通常使用第二種方案,Spark HA高可用集羣部署使用起來很簡單,首先須要搭建一個Zookeeper集羣,而後啓動Zookeeper集羣,最後在不一樣的節點上啓動Master便可。

3.3. 修改spark-env.sh配置文件

在spark-env.sh配置文件中,註釋掉單點主機Master地址,而後添加Spark HA高可用部署的地址

#設置SPARK主機的地址 註釋掉此項
#export SPARK_MASTER_HOST=spark-node01.ouyang.com
#添加Spark高可用HA部署
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=spark-node01.ouyang.com:2181,spark-node02.ouyang.com:2181,spark-node03.ouyang.com:2181 -Dspark.deploy.zookeeper.dir=/spark"

參數說明:

  • spark.deploy.recoveryMode:恢復模式(Master從新啓動的模式),主要有三種:1) zookeeper 2) FileSystem 3) NONE
  • spark.deploy.zookeeper.url:zookeeper的Server地址
  • spark.deploy.zookeeper.dir:保存Spark集羣元數據的文件,目錄.包括Worker,Driver和Application

3.4. 將配置文件發送至遠程節點

在節點的spark安裝目錄下的conf目錄執行以下命令

#將spark-env.sh拷貝至節點02機器上
scp spark-env.sh spark-node02.ouyang.com:$PWD
#將spark-env.sh拷貝至節點03機器上
scp spark-env.sh spark-node03.ouyang.com:$PWD

3.5. 驗證Spark HA高可用

在普通模式下啓動spark集羣,只須要在主機上面執行start-all.sh就能夠了.在高可用模式下啓動Spark集羣,首先須要在任意一臺節點上啓動start-all.sh命令.而後在另一臺節點上單獨啓動master.命令start-master.sh在節點一執行命令以下:

./sbin/start-all.sh

在節點二執行命令以下:

./sbin/start-master.sh

 

訪問節點一和節點二的WEB UI界面:http://node01.ouyang.com:8080

會發現節點一的master是alive狀態,節點二是standby狀態。

此時手動殺死節點一的master,過1~2分鐘,會發現節點二的master會變成aliver狀態,節點一會顯示不能鏈接。

4. Spark高可用一鍵啓動腳本

# 啓動腳本
ssh node01.ouyang.com "source /etc/profile;nohup sh ${SPARK_HOME}/sbin/start-all.sh  >/dev/null 2>&1 &"
sleep 3
ssh node02.ouyang.com "source /etc/profile;nohup sh ${SPARK_HOME}/sbin/start-master.sh  >/dev/null 2>&1 &"
# 中止腳本
ssh node01.ouyang.com "source /etc/profile;nohup sh ${SPARK_HOME}/sbin/stop-all.sh  >/dev/null 2>&1 &"
ssh node02.ouyang.com "source /etc/profile;nohup sh ${SPARK_HOME}/sbin/stop-master.sh  >/dev/null 2>&1 &"

5. Spark集羣的運行模式

5.1. spark幾種運行模式介紹

  • local(在開發環境中,進行快速測試的)
  • Standalone(在生成環境中,若是沒有使用yarn,就用這個)
  • Yarn(生產環境中常常使用)
  • Mesos(不多用)

5.2. Spark Standalone運行模式配置及測試

5.2.1. Spark Standalone運行模式的依賴應用

- 修改log4j.properties

- 安裝Hadoop

- 安裝Spark Standalone

5.2.2. 配置spark-env.sh文件中關於Standalone選項

5.2.3. Standalone模式啓動

sbin/start-all.sh

5.3. spark集羣運行

客戶端運行:

./bin/spark-submit --class org.apache.spark.examples.SparkPi --deploy-mode client --master spark://spark-node04.ouyang.com:7077 --executor-memory 1G --total-executor-cores 2 examples/jars/spark-examples_2.11-2.2.0.jar 10

集羣運行:

./bin/spark-submit --class org.apache.spark.examples.SparkPi --deploy-mode cluster --master spark://spark-node11.ouyang.com:7077 --executor-memory 1G --total-executor-cores 2 examples/jars/spark-examples_2.11-2.2.0.jar 10

在Yarn上運行:

./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --executor-memory 6G --num-executors 4 examples/jars/spark-examples_2.11-2.2.0.jar 10

6. Spark SQL與hive集成(spark-shell)

6.1. 須要配置的項目

6.1.1. 拷貝hive的配置文件hive-site.xml到spark的conf目錄,記得檢查hive-site.xml中metastore的url的配置:  

#再spark的conf目錄下的hive-site.xml文件中添加以下內容
<property>
   <name>hive.metastore.uris</name>
   <value>thrift://node01.ouyang.com:9083</value>
</property>
# 再將spark的conf目錄下的該文件發送到其餘的spark節點。
scp hive-site.xml node02.ouyang.com:$PWD

6.1.2. 拷貝hive中MySQL的jar包到spark的jars目錄下:  

cp /export/servers/hive/lib/mysql-connector-java-5.1.37.jar /export/servers/spark-2.2.0/jars/
# 並將該jar包發送到其餘的節點上:
scp mysql-connector-java-5.1.37.jar node02.ouyang.com:$PWD

6.1.3. 檢查spark-env.sh文件中hadoop的配置項:

在spark的conf目錄下的spark-evn.sh文件中是否有下述配置:

即要spark能訪問hdfs集羣。

6.2. 須要啓動的服務

#啓動mysql服務(hive依賴於hdfs和mysql,表的元數據存儲在mysql中,具體數據存儲在hdfs中)
service mysqld restart
#在hive的bin目錄下啓動hive的metastore服務(在spark的hive-site.xml添加的服務)
bin/hive --service metastore

6.3. 能夠在hive中建立一張測試表

create table if not exists test(userid string,username string) row format delimited fields terminated by ' ' stored as textfile ;
--加載數據
load data local inpath '/opt/datas/student.txt' into table test;

6.4. 使用spark-shell操做hive中的表

#啓動spar-shell服務(在spark的bin目錄下,執行以下命令)
./spark-shell
#執行spark sql語句,對hive中的表進行查詢
spark.sql("select * from student").show()

6.5. 將hive中的表經過spark sql導入的MySQL中

// 在spark-shell中,查詢到hive表的數據,並將數據寫入到一個DataFarme中
val df = spark.sql("select * from student")

// 將這個DateFarme的數據寫入的MySQL中
df.write.format("jdbc").option("url", "jdbc:mysql://node01.ouyang.com:3306/test").option("dbtable", "test1").option("user", "root").option("password", "root").save()

將數據寫入的MySQL的test數據庫,並從新建立一個test1表來存儲。

沒有報錯表示執行成功。

7. Spark SQL與Hive集成(spark sql)

7.1. spark-sql cli簡介

7.2. 啓動spark-sql

在spark的bin目錄下,執行以下命令:
./spark-sql

7.3. 操做spark-sql

此時,能夠跟操做MySQL數據庫同樣來操做hive中的表
#顯示全部的表
show tables;
#顯示全部的庫
show databases;
#查詢test
select * from test;

8. Spark SQL之ThriftServer和beeline使用

8.1. 概述

當對Spark SQL和Hive進行集成後,在spark的bin目錄下啓動spark sql服務,此時進行操做,雖然是直接使用sql語句,就能夠經過spark sql操做hive中的數據,但會有不少的日誌,此時能夠啓動一個服務,能夠對數據進行友好顯示。

參照官網:http://spark.apache.org/docs/2.2.0/sql-programming-guide.html#running-the-thrift-jdbcodbc-server

8.2. 啓動thriftserver

在spark的sbin目錄下執行以下命令:

./start-thriftserver.sh

啓動以後能夠經過訪問4040端口查看到啓動的spark job,以下圖所示:

8.3. 鏈接beeline

在spark的bin目錄下執行以下命令:

./beeline

鏈接上beeline後執行以下命令:

!connect jdbc:hive2://node01.ouyang.com:10000

輸入hive的用戶名和密碼便可鏈接

9. Saprk SQL與HBase集成

#上傳以下jar包到spark的jars目錄下(全部spark的節點的該目錄下都要上傳):

此時,便可以在spark-sql中查詢到hive中的數據存儲在hbase中的表了。

相關文章
相關標籤/搜索