承接上一篇文檔《》
Spark on standalone
類似於yarn的一個集群資源管理框架,spark自帶的
yarn
ResourceManager(進程)
管理和調度集群資源,主要包括:申請、調度、監控
NodeManager(進程)
管理當前節點的資源,以及啟動container資源:CPU和內存(CPU決定快慢,內存決定生死)
注意:一臺機器只允許有一個NodeManager
standalone
Master:(進程)
管理集群資源,主要包括:申請、調度、監控
Worker:(進程)
當前進程允許分配的資源進行管理,包括資源的管理以及executor的啟動資源:CPU和內存(CPU決定快慢,內存決定生死)
注意:一臺機器允許有多個Worker進程
Standalone集群的配置
前提:spark的本地執行環境已經配置好了
SPARK_MASTER_HOST=域名和ipSPARK_MASTER_PORT=7070SPARK_MASTER_WEBUI_PORT=8080SPARK_WORKER_CORES=2//指定當前機器上的每個worker進程允許分配的邏輯CPU核數SPARK_WORKER_MEMORY=2g//指定當前機器上的每個worker允許分配的內存大小(可以認為是邏輯內存)SPARK_WORKER_PORT=7071SPARK_WORKER_WEBUI_PORT=8081SPARK_WORKER_INSTANCES=2//指定當前機器上的Worker的數量
2. 配置Worker節點所在機器,在conf目錄中
cp slaves.template slaves
修改slaves
備註:一行一個機器的主機名(Worker進程所在的機器的hostname)
3. 額外:完全分布式配置(此處可不配置了解即可)
只需要在slaves文件中添加slave從節點的hostname即可(前提是ssh、hostname和ip映射等hadoop的依賴環境均已完成),然後將修改好的spark的安裝包copy到其他的slave機器上即可完成分布式的安裝
4. 啟動服務
4.1 啟動主節點
./sbin/start-master.sh
訪問WEBUI:http://master:8080/
4.2 啟動從節點(Worker)
./sbin/start-slave.sh spark://master:7070
4.3 關閉所有服務
./sbin/stop-all.sh
4.5 啟動所有服務
./sbin/start-all.sh
注意:啟動和關閉所有服務的前提是由ssh免秘鑰登錄
5. 簡單查看/測試
5.1 jps查看Master和Worker進程
5.2 查看WEBUI界面:http://master:8080/
5.3 ./bin/spark-shell --help--》查看幫助命令
./bin/spark-shell --master spark://master:7070
val result1 = sc.textFile(&34;).flatMap(_.split(&34;)).filter(_.nonEmpty).map((_,1)).reduceByKey(_+_).collect
如果看到collect有結果,表示我們的standalone搭建完成
Spark StandAlone集群的HA配置
1. Single-Node Recovery with Local File System --基於文件系統的單節點恢復
在spark-env.sh配置
SPARK_DAEMON_JAVA_OPTS=&34;
spark.deploy.recoveryDirectory --> 保存恢復狀態的一個目錄
2. Standby Masters with zookeeper --基於Zookeeper的Master的HA機制
SPARK_DAEMON_JAVA_OPTS=&34;
假設有三臺機器
hadoop01MasterSPARK_MASTER_HOST=hadoop01hadoop02Master(standby) SPARK_MASTER_HOST=hadoop02hadoop03SPARK_MASTER_HOST=hadoop02
啟動Master,在hadoop01上用 start-all.sh(hadoop01:8080)
再在hadoop02上面單獨啟動Master start-master.sh (自動成為StandBy的狀態hadoop02:8080)
Spark應用的監控
如果運行
頁面就會變化
如果關掉shell,頁面就不存在了
官網:http://spark.apache.org/docs/2.0.2/monitoring.html
給了監控方法
spark.ui.port=4050 --4051 4052
2. 如果應用已經執行完成了,那可以spark的job history server服務來看
MapReduce的job history server
(1). 開啟日誌聚集功能
(2). 日誌上傳到HDFS的文件夾路徑
(3). 啟動mr的job history服務(讀取HDFS的日誌文件,並進行展示)
Spark的job history server
(1). 在HDFS上創建spark應用日誌存儲路徑
./bin/hdfs dfs -mkdir -p /spark/history
(2). 修改配置文件spark-default.conf
spark.eventLog.enabled truespark.eventLog.dir hdfs://master:8020/spark /history
(3). 配置Spark的job history server
spark-env.sh
SPARK_HISTORY_OPTS=&34;
(4). 啟動spark的job history server
http:/master:18080/api/v1/applications
查看Jps
Web的地址查看,注意18080
這裡出現了一個錯誤18080可以訪問但沒有內容
先檢查Hadoop是否創建了這個目錄
檢查路徑是否有問題
檢查配置文件發現問題所在
經測試後發現:
spark.eventLog.dir:Application在運行過程中所有的信息均記錄在該屬性指定的路徑下;
spark.history.fs.logDirectory:Spark History Server頁面只展示該指定路徑下的信息;
比如:spark.eventLog.dir剛開始時指定的是hdfs://hadoop000:8020/directory,而後修改成hdfs://hadoop000:8020/directory2
那麼spark.history.fs.logDirectory如果指定的是hdfs://hadoop000:8020/directory,就只能顯示出該目錄下的所有Application運行的日誌信息;反之亦然。
所有這裡修改spark.eventLog.dir為
重啟服務即可訪問
在頁面裡可以查看很多信息,比如日誌配置路徑,未完成的應用等等
Api查詢應用
RESTAPI:
http://master:18080/api/v1/applications/local-1533452143143/jobs/0