Standalone集羣搭建和Spark應用監控

注:圖片如果損壞,點擊文章鏈接:https://www.toutiao.com/i6815920501530034696/

 

承接上一篇文檔《Spark詞頻前十的統計練習

 

Spark on standalone

 

類似於yarn的一個集羣資源管理框架,spark自帶的

 

yarn

 

ResourceManager(進程)

 

管理和調度集羣資源,主要包括:申請、調度、監控

 

NodeManager(進程)

 

管理當前節點的資源,以及啓動container資源:CPU和內存(CPU決定快慢,內存決定生死)

 

注意:一臺機器只允許有一個NodeManager

 

 

 

standalone

 

Master:(進程)

 

管理集羣資源,主要包括:申請、調度、監控

 

Worker:(進程)

 

當前進程允許分配的資源進行管理,包括資源的管理以及executor的啓動資源:CPU和內存(CPU決定快慢,內存決定生死)

 

注意:一臺機器允許有多個Worker進程

 

 

 

Standalone集羣的配置

 

前提:spark的本地執行環境已經配置好了

 

  1. 修改${SPARK_HOME}/conf/spark-env.sh

 

SPARK_MASTER_HOST=域名和ip
SPARK_MASTER_PORT=7070
SPARK_MASTER_WEBUI_PORT=8080
SPARK_WORKER_CORES=2//指定當前機器上的每個worker進程允許分配的邏輯CPU核數
SPARK_WORKER_MEMORY=2g//指定當前機器上的每個worker允許分配的內存大小(可以認爲是邏輯內存)
SPARK_WORKER_PORT=7071
SPARK_WORKER_WEBUI_PORT=8081
SPARK_WORKER_INSTANCES=2//指定當前機器上的Worker的數量

 

Standalone集羣搭建和Spark應用監控

 

 

2. 配置Worker節點所在機器,在conf目錄中

 

cp slaves.template slaves

 

Standalone集羣搭建和Spark應用監控

 

 

修改slaves

 

Standalone集羣搭建和Spark應用監控

 

 

備註:一行一個機器的主機名(Worker進程所在的機器的hostname)

 

3. 額外:完全分佈式配置(此處可不配置瞭解即可)

 

只需要在slaves文件中添加slave從節點的hostname即可(前提是ssh、hostname和ip映射等hadoop的依賴環境均已完成),然後將修改好的spark的安裝包copy到其他的slave機器上即可完成分佈式的安裝

 

4. 啓動服務

 

4.1 啓動主節點

 

./sbin/start-master.sh

 

訪問WEBUI:http://master:8080/

 

Standalone集羣搭建和Spark應用監控

 

 

Standalone集羣搭建和Spark應用監控

 

 

4.2 啓動從節點(Worker)

 

./sbin/start-slave.sh spark://master:7070

 

Standalone集羣搭建和Spark應用監控

 

 

Standalone集羣搭建和Spark應用監控

 

 

4.3 關閉所有服務

 

./sbin/stop-all.sh

 

4.5 啓動所有服務

 

./sbin/start-all.sh

 

注意:啓動和關閉所有服務的前提是由ssh免祕鑰登錄

 

5. 簡單查看/測試

 

5.1 jps查看Master和Worker進程

 

Standalone集羣搭建和Spark應用監控

 

 

5.2 查看WEBUI界面:http://master:8080/

 

Standalone集羣搭建和Spark應用監控

 

 

5.3 ./bin/spark-shell --help--》查看幫助命令

 

Standalone集羣搭建和Spark應用監控

 

 

./bin/spark-shell --master spark://master:7070

 

val result1 = sc.textFile("file:///opt/modules/spark/README.md").flatMap(_.split(" ")).filter(_.nonEmpty).map((_,1)).reduceByKey(_+_).collect

 

如果看到collect有結果,表示我們的standalone搭建完成

 

Standalone集羣搭建和Spark應用監控

 

 

 

 

Spark StandAlone集羣的HA配置

 

1. Single-Node Recovery with Local File System --基於文件系統的單節點恢復

 

在spark-env.sh配置

 

SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/user/spark/tmp"

 

spark.deploy.recoveryDirectory --> 保存恢復狀態的一個目錄

 

Standalone集羣搭建和Spark應用監控

 

 

2. Standby Masters with ZooKeeper --基於Zookeeper的Master的HA機制

 

SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop01:2181,hadoop02:2181,hadoop03:2181 -Dspark.deploy.zookeeper.dir=/spark-ha"

 

Standalone集羣搭建和Spark應用監控

 

 

假設有三臺機器

 

 

 

hadoop01MasterSPARK_MASTER_HOST=hadoop01
hadoop02Master(standby) SPARK_MASTER_HOST=hadoop02
hadoop03SPARK_MASTER_HOST=hadoop02

 

 

 

啓動Master,在hadoop01上用 start-all.sh(hadoop01:8080)

 

再在hadoop02上面單獨啓動Master start-master.sh (自動成爲StandBy的狀態hadoop02:8080)

 

 

 

Spark應用的監控

 

Standalone集羣搭建和Spark應用監控

 

 

如果運行

 

Standalone集羣搭建和Spark應用監控

 

 

頁面就會變化

 

Standalone集羣搭建和Spark應用監控

 

 

如果關掉shell,頁面就不存在了

 

Standalone集羣搭建和Spark應用監控

 

 

Standalone集羣搭建和Spark應用監控

 

 

官網:http://spark.apache.org/docs/2.0.2/monitoring.html

 

給了監控方法

 

  1. 針對我們正在運行的Spark應用,可以通過WEB界面監控,默認端口號是4040,如果4040被佔用,就會依次進行端口遞增(也是有次數限制的),

 

spark.ui.port=4050 --4051 4052

 

Standalone集羣搭建和Spark應用監控

 

 

Standalone集羣搭建和Spark應用監控

 

 

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

 

Standalone集羣搭建和Spark應用監控

 

 

(2). 修改配置文件spark-default.conf

 

Standalone集羣搭建和Spark應用監控

 

 

spark.eventLog.enabled true
spark.eventLog.dir hdfs://master:8020/spark /history

 

 

 

(3). 配置Spark的job history server

 

spark-env.sh

 

SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://master:8020/spark/history-Dspark.history.ui.port=18080"

 

Standalone集羣搭建和Spark應用監控

 

 

(4). 啓動spark的job history server

 

http:/master:18080/api/v1/applications

 

Standalone集羣搭建和Spark應用監控

 

 

查看Jps

 

Standalone集羣搭建和Spark應用監控

 

 

Web的地址查看,注意18080

 

這裏出現了一個錯誤18080可以訪問但沒有內容

 

先檢查Hadoop是否創建了這個目錄

 

Standalone集羣搭建和Spark應用監控

 

 

檢查路徑是否有問題

 

Standalone集羣搭建和Spark應用監控

 

 

檢查配置文件發現問題所在

 

Standalone集羣搭建和Spark應用監控

 

 

Standalone集羣搭建和Spark應用監控

 

 

經測試後發現:

 

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爲

 

Standalone集羣搭建和Spark應用監控

 

 

重啓服務即可訪問

 

Standalone集羣搭建和Spark應用監控

 

 

在頁面裏可以查看很多信息,比如日誌配置路徑,未完成的應用等等

 

Standalone集羣搭建和Spark應用監控

 

 

Api查詢應用

 

RESTAPI:

 

http://master:18080/api/v1/applications/local-1533452143143/jobs/0

 

 

 

Standalone集羣搭建和Spark應用監控

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章