大數據筆記(二十七)——Spark Core簡介及安裝配置
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簡介及安裝配置