一:實現HAweb
1-基於zookeeper實現HA算法
配置spark-env.sh,master節點掛掉之後,會進行恢復操做。app
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=192.168.114.200:2181,192.168.114.201:2181,192.168.114.202:2181 -Dspark.deploy.zookeeper.dir=/spark"
提交任務腳本(若是spark1這個master掛掉後,會尋找新的master,從而保證任務不會由於spark1掛掉而失敗):curl
/opt/module/spark/bin/spark-submit \ --class com.zj.spark.applog.AppLogSpark \ --master spark://spark1:7077,spark2:7077 \ --deploy-mode client \ --num-executors 1 \ --driver-memory 600m \ --executor-memory 600m \ --executor-cores 1 \ --conf spark.cores.max=3 \ /opt/spark-study/mysparkstudy-1.0-SNAPSHOT-jar-with-dependencies.jar \
2- 基於文件系統實現HA(不推薦,須要手動啓動)工具
spark-env.sh
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/usr/local/spark_recovery"
二:spark監控(基本上前兩個就已經夠使用了)ui
方式一:spark web UI獲取正在運行的監控信息url
port爲4040spa
包括瞭如下信息日誌
方式二:spark history web UI,獲取歷史 的監控信息code
從18080端口中進入
能夠設置的屬性
方式三:RESTFUL API,須要安裝curl工具
方式四:Metrics
定時將監控數據拉取到指定的路徑下。
三:spark靜態資源分配和動態資源分配
靜態資源分配:在這種方式下,每一個做業都會被給予一個它能使用的最大資源量的限額,而且能夠在運行期間持有這些資源。
動態資源分配:當executor再也不被使用的時候,spark就應該釋放這些executor,而且在須要的時候再次獲取這些executor。由於沒有一個絕對的方法去預測一個將來可能會運行一個task的executor應該被移除掉,或者一個新的executor應該別加入,咱們須要一系列的探索式算法來決定什麼應該移除和申請executor。driver會輪詢式地申請executor。當在必定時間內(spark.dynamicAllocation.schedulerBacklogTimeout)有pending的task時,就會觸發真正的executor申請,而後每隔必定時間後(spark.dynamicAllocation.sustainedSchedulerBacklogTimeout),若是又有pending的task了,則再次觸發申請操做。