1. 程式人生 > >大數據筆記(二十七)——Spark Core簡介及安裝配置

大數據筆記(二十七)——Spark Core簡介及安裝配置

sin cli sca follow com clu 同時 graphx 信息

1、Spark Core: 類似MapReduce
                核心:RDD
2、Spark SQL:  類似Hive,支持SQL
3、Spark Streaming:類似Storm

=================== Spark Core =======================

一、什麽是Spark?
1、什麽是Spark?生態體系結構

技術分享圖片


Apache Spark? is a fast and general engine for large-scale data processing.
生態圈:
1、Spark Core
2、Spark SQL
3、Spark Streaming
4、Spark MLLib:機器學習
5、Spark GraphX:圖計算

2、為什麽要學習Spark?
復習:MapReduce的Shuffle過程
Spark的最大特點:基於內存
Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生態系統,以彌補MapReduce的不足。



3、Spark的特點
(1)快:基於內存
同時也是缺點:沒有對內存進行管理,把所有的內存管理都交給應用程序,容易出現OOM(outof memory 內存溢出)
如何分析Java內存溢出?? 工具:Java Heap Dump
https://www.cnblogs.com/JackDesperado/p/4798499.html

(2)易用:Java、Scala
(3)通用:不同的組件
Hive推薦使用Spark作為執行引擎 ------> 配置Hive On Spark非常麻煩,不成熟

提供文檔:Hive On Spark

(4)兼容性:Hadoop的生態圈

二、Spark的體系結構和安裝配置
1、體系結構:Client-Server(主從模式) ----> 單點故障:HA(ZooKeeper)
http://spark.apache.org/docs/latest/cluster-overview.html

準備工作:安裝Linux、JDK、主機名、免密碼登錄

2、安裝和部署:standalone

tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz -C ~/training/

註意:hadoop和spark命令腳本有沖突,只能設置一個
核心配置文件:spark-env.sh

(*)偽分布模式: bigdata11機器
spark-env.sh

export JAVA_HOME=/root/training/jdk1.8.0_144
export SPARK_MASTER_HOST=bigdata11
export SPARK_MASTER_PORT=7077

slave文件:

bigdata11

啟動:sbin/start-all.sh
Web Console: http://ip:8080 (內置了一個tomcat)


(*)全分布模式: bigdata12 bigdata13 bigdata14
(1)在主節點上進行安裝
spark-env.sh

export JAVA_HOME=/root/training/jdk1.8.0_144
export SPARK_MASTER_HOST=bigdata12
export SPARK_MASTER_PORT=7077

slave文件:

bigdata13
bigdata14    

(2) 復制到從節點上

scp -r spark-2.1.0-bin-hadoop2.7/ root@bigdata13:/root/training
scp -r spark-2.1.0-bin-hadoop2.7/ root@bigdata14:/root/training

(3) 在主節點上啟動
啟動:sbin/start-all.sh
Web Console: http://ip:8080 (內置了一個tomcat)


3、Spark的HA實現

(1)基於文件系統的單點故障恢復:只有一個主節點、只能用於開發測試
(*)特點:把Spark的運行信息寫入到一個本地的恢復目錄
如果Master死掉了,恢復master的時候從恢復目錄上讀取之前的信息
需要人為重啟

(*)Spark的運行信息
Spark Application和Worker的註冊信息

(*)配置:
(a)創建目錄:mkdir /root/training/spark-2.1.0-bin-hadoop2.7/recovery
(b)參數:
spark.deploy.recoveryMode:取值:默認NONE--> 沒有開啟HA
FILESYSTEM ---> 基於文件系統的單點故障恢復
ZOOKEEPER ---> 基於ZooKeeper實現Standby的Master
spark.deploy.recoveryDirectory: 恢復目錄

(c)修改spark-env.sh
增加:export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/root/training/spark-2.1.0-bin-hadoop2.7/recovery"

(*)測試:啟動spark-shell
bin/spark-shell --master spark://bigdata12:7077

sbin/stop-master.sh
日誌
scala> 18/02/09 00:40:42 WARN StandaloneAppClient$ClientEndpoint: Connection to bigdata12:7077 failed; waiting for master to reconnect...
18/02/09 00:40:42 WARN StandaloneSchedulerBackend: Disconnected from Spark cluster! Waiting for reconnection...
18/02/09 00:40:42 WARN StandaloneAppClient$ClientEndpoint: Connection to bigdata12:7077 failed; waiting for master to reconnect...

重新啟動master

(2)基於ZooKeeper實現Standby的Master
(*)復習:相當於是一個“數據庫”
角色:leader、follower
功能:選舉、數據同步、分布式鎖(秒殺功能)

(*)原理:類似Yarn
(*)參數
spark.deploy.recoveryMode 設置為ZOOKEEPER開啟單點恢復功能,默認值:NONE
spark.deploy.zookeeper.url ZooKeeper集群的地址
spark.deploy.zookeeper.dir Spark信息在ZK中的保存目錄,默認:/spark

(*)修改spark-env.sh
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=bigdata12:2181,bigdata13:2181,bigdata14:2181 -Dspark.deploy.zookeeper.dir=/spark"

(*)測試
bigdata12: sbin/start-all.sh
bigdata13(14):手動啟動一個master
sbin/start-master.sh

worker信息註冊到了13上。

大數據筆記(二十七)——Spark Core簡介及安裝配置